zoukankan      html  css  js  c++  java
  • 力扣----10. 环形链表(JavaScript, Java实现)

    题目描述:

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

    为了表示给定链表中的环,我们使用整数 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
    解释:链表中没有环。

    JavaScript实现:

    hashmap

    时间复杂度:O(n), 空间复杂度:O(n)

    /**
     * Definition for singly-linked list.
     * function ListNode(val) {
     *     this.val = val;
     *     this.next = null;
     * }
     */
    
    /**
     * @param {ListNode} head
     * @return {boolean}
     */
    var hasCycle = function(head) {
        let map = new Map();
        while(head) {
            if(map.has(head)) return true;
            map.set(head, true)
            head = head.next
        }
        return false;
    };

    快慢指针

    如果是个环,快的总会追上慢的

    时间复杂度:O(n), 空间复杂度O(1)

    /**
     * Definition for singly-linked list.
     * function ListNode(val) {
     *     this.val = val;
     *     this.next = null;
     * }
     */
    
    /**
     * @param {ListNode} head
     * @return {boolean}
     */
    var hasCycle = function(head) {
        let slow = head;
        let fast = head;
        //判断fast.next是否存在是为了防止fast.next.next不报空指针
        while(slow && fast && fast.next) {
            slow = slow.next;
            fast = fast.next.next;
            if(slow === fast) return true
        }
        return false;
    };

    Java实现

    待补充



  • 相关阅读:
    读书笔记之理想设计的特征
    一些javascript 变量声明的 疑惑
    LINQ 使用方法
    Google MySQL tool releases
    读书笔记之设计的层次
    EF之数据库连接问题The specified named connection is either not found in the configuration, not intended to be used with the Ent
    转载 什么是闭包
    javascript面向对象起步
    Tips
    数据结构在游戏中的应用
  • 原文地址:https://www.cnblogs.com/manru75/p/13091294.html
Copyright © 2011-2022 走看看