题解 | #判断链表中是否有环#

判断链表中是否有环

http://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9

此文仅用于本人记录

在lc上做过,当时比较蠢只想到了哈希表或者数组存指针(哈希表类型<ListNode,Interger>),这样每遍历到一个节点就使用哈希表.get(node)和数组.containsKey(node)来判断是否存在过这个节点。
然后看了题解,哇,快慢指针法真牛逼:快指针本来走的就比慢指针快,还在慢指针前面,只有有环才能让他们相遇,这样空间复杂度是O(1),时间复杂度也仅是O(n)了!

/**
 * 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){
            ListNode slowPointer = head;
            ListNode quickPointer = slowPointer.next;
            while(quickPointer != null && quickPointer.next != null){
                quickPointer = quickPointer.next.next;
                slowPointer = slowPointer.next;
                if(quickPointer == slowPointer){
                    return true;
                }
            }
            return false;
        }
        else{
            return false;
        }
    }
}
全部评论

相关推荐

12-15 14:16
门头沟学院 Java
回家当保安:发offer的时候会背调学信网,最好不要这样。 “27届 ”和“28届以下 ”公司招聘的预期是不一样的。
实习简历求拷打
点赞 评论 收藏
分享
给🐭🐭个面试机会...:我擦seed✌🏻
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务