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

判断链表中是否有环

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;
        }
    }
}
全部评论

相关推荐

纯真的河老师在喝茶:第一个是这个时间点岗位少,第二个是这个简历重复度太高了,10个有9个简历差不多的
点赞 评论 收藏
分享
11-17 14:18
门头沟学院 C++
代码飞升_不回私信人...:这种感觉还好。只是你写一个PPT,可能他面的快一点而已。那种让你写什么方案,写什么代码的那种。就没必要去了。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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