zoukankan      html  css  js  c++  java
  • 算法练习之环形链表

    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;
        }
    }
  • 相关阅读:
    2020 CCPC Wannafly Winter Camp Day2 E阔力梯的树(树上启发式合并)
    牛客练习赛73D 离别(线段树)
    从零开始部署图书管理系统
    linux下安装nginx(编译安装)及反向代理及负载均衡
    linux下MariaDB安装
    linux下virtualenvwrapper安装
    linux下安装虚拟环境
    linux下安装django2.2
    linux下安装nginx(yum源安装)
    linux系统优化命令--day03
  • 原文地址:https://www.cnblogs.com/baby123/p/10971737.html
Copyright © 2011-2022 走看看