• 【Java】一只小菜坤的编程题之旅【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;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    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();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28

    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();
     */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    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();
     */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
  • 相关阅读:
    Kafka(三)、Kafka架构
    Exception-Error
    网卡限速工具之WonderShaper
    网络安全(黑客)自学
    Springboot-redis学习第一天
    Nginx监控模块
    Implement a customized pin code input control
    黑马程序员2023新版JavaWeb企业开发全流程学习笔记(涵盖Spring+MyBatis+SpringMVC+SpringBoot等)
    rust 字符串字面量 - 字符串前缀
    [附源码]计算机毕业设计市场摊位管理系统Springboot程序
  • 原文地址:https://blog.csdn.net/weixin_63257947/article/details/132349024