本文主要是介绍【Java】一只小菜坤的编程题之旅【4】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 1丶合并两个有序链表
- 2丶栈的压入、弹出序列
- 3丶设计循环队列
- 4丶最小栈
1丶合并两个有序链表
小菜坤的答案:
class Solution {public ListNode mergeTwoLists(ListNode list1, ListNode list2) {ListNode newHead=new ListNode(0);ListNode tmp=newHead;while(list1!=null && list2!=null){if(list1.val<list2.val){tmp.next=list1;list1=list1.next;tmp=tmp.next;}else{tmp.next=list2;list2=list2.next;tmp=tmp.next;}}if(list1!=null){tmp.next=list1;}if(list2!=null){tmp.next=list2;}return newHead.next;}
}
2丶栈的压入、弹出序列
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pushV int整型一维数组 * @param popV int整型一维数组 * @return bool布尔型*/public boolean IsPopOrder (int[] pushA, int[] popA) {if(pushA.length==0||popA.length==0){return false;}Stack<Integer> stack=new Stack<>();int j=0;for(int i=0;i<pushA.length;i++){stack.push(pushA[i]);while (j<popA.length&&!stack.empty()&&stack.peek()==popA[j]){stack.pop();j++;}}return stack.empty();}
}
3丶设计循环队列
class MyCircularQueue {public int[] elem;public int front;//队头下标public int rear;//队尾下标public MyCircularQueue(int k) {this.elem=new int[k+1];}//入队public boolean enQueue(int value) {if(isFull()){return false;}this.elem[rear]=value;rear=(rear+1) % elem.length;return true;}//出队public boolean deQueue() {if (isEmpty()){return false;}front=(front+1)%elem.length;return true;}//获取队头元素public int Front() {if (isEmpty()){return -1;}return elem[front];}//获取队尾元素public int Rear() {if (isEmpty()){return -1;}int index=(rear==0)?elem.length-1:rear-1;return elem[index];}public boolean isEmpty() {return rear==front;}public boolean isFull() {return (rear+1) % elem.length==front;}
}/*** Your MyCircularQueue object will be instantiated and called as such:* MyCircularQueue obj = new MyCircularQueue(k);* boolean param_1 = obj.enQueue(value);* boolean param_2 = obj.deQueue();* int param_3 = obj.Front();* int param_4 = obj.Rear();* boolean param_5 = obj.isEmpty();* boolean param_6 = obj.isFull();*/
4丶最小栈
import java.util.Stack;class MinStack {private Stack<Integer> s; //普通栈private Stack<Integer> minStack;//维护当前栈的最小值public MinStack() {s =new Stack<>();minStack=new Stack<>();}/*入栈*/public void push(int val) {s.push(val);if(minStack.empty()){minStack.push(val);}else{int peekV=minStack.peek();if(val<=peekV){minStack.push(val);}}}/*出栈*/public void pop() {if(!s.empty()){int popV=s.pop();int peekVMins=minStack.peek();if(popV==peekVMins){minStack.pop();}}}/*获取栈顶元素,但是不删除*/public int top() {if(!s.empty()){return s.peek();}return -1;}//获取最小栈的栈顶元素public int getMin() {if(!minStack.empty()){return minStack.peek();}return -1;}
}/*** Your MinStack object will be instantiated and called as such:* MinStack obj = new MinStack();* obj.push(val);* obj.pop();* int param_3 = obj.top();* int param_4 = obj.getMin();*/
这篇关于【Java】一只小菜坤的编程题之旅【4】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!