• 算法练习之环形链表


    1.环形链表

    给定一个链表,判断链表中是否有环。

    为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

    示例 1:
    输入:head = [3,2,0,-4], pos = 1
    输出:true
    解释:链表中有一个环,其尾部连接到第二个节点。

    示例 2:
    输入:head = [1,2], pos = 0
    输出:true
    解释:链表中有一个环,其尾部连接到第一个节点。

    示例 3:
    输入:head = [1], pos = -1
    输出:false
    解释:链表中没有环。

     

    使用快慢指针,若指针相遇则判断有环

    java

    /**
     * Definition for singly-linked list.
     * class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) {
     *         val = x;
     *         next = null;
     *     }
     * }
     */
    public class Solution {
        public boolean hasCycle(ListNode head) {
            if(head==null||head.next==null) return false;
            ListNode fast = head.next,slow = head;
            while(fast!=slow){
                if(fast==null||fast.next==null) return false;
                fast = fast.next.next;
                slow = slow.next;
            }
            return true;
        }
    }

     2.最小栈

    设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。

    push(x) -- 将元素 x 推入栈中。
    pop() -- 删除栈顶的元素。
    top() -- 获取栈顶元素。
    getMin() -- 检索栈中的最小元素。

    每次入栈2个元素,一个是入栈的元素本身,一个是当前栈元素的最小值

    java

    class MinStack {
    
        private int min = Integer.MAX_VALUE;
        private Stack<Integer> stack;
        public MinStack() {
            stack = new Stack<>();
        }
    
        public void push(int x) {
            if(min>=x){
                stack.push(min);
                min = x;
            }
            stack.push(x);
        }
    
        public void pop() {
            if(stack.pop()==min){
                min = stack.pop();
            }
        }
    
        public int top() {
            return stack.peek();
        }
    
        public int getMin() {
            return min;
        }
    }
  • 相关阅读:
    shared pointer
    realsense数据分析
    cmake log
    Qt自定义类添加qvector报错
    Java csv
    opencv C++ mask_rcnn
    realsense data
    Test
    ubuntu18 bluebooth
    LSTM_Model
  • 原文地址:https://www.cnblogs.com/baby123/p/10971737.html
Copyright © 2020-2023  润新知