Middle-题目14:141. Linked List Cycle

原创 2016年05月31日 15:33:51

题目原文:
Given a linked list, determine if it has a cycle in it.
题目大意:
判断单链表里面有没有环。
题目分析:
1. 朴素解法:用一个HashSet存储所有节点,如果遇到重复的则有环。
2. Two Pointer解法:用两个指针p1和p2,p1每次前进一步,p2每次前进两步,如果有环则p2一定能追上p1.
源码:(language:java/cpp)
朴素解法:

public class Solution {
    public boolean hasCycle(ListNode head) {
        HashSet<ListNode> nodes=new HashSet<ListNode>();
        for(ListNode node=head;node!=null;node=node.next){
            if(!nodes.add(node))
                return true;
        }
        return false;        
    }
}

Two Pointer解法:

class Solution {
public:
    bool hasCycle(ListNode *head) {
        ListNode* p1=head;  
        ListNode* p2=head;  
        while(p1 && p2 && p2->next) {  
            p1 = p1->next;  
            p2 = p2->next->next;  
            if(p1 == p2)  
                return true;  
        }  
        return false;  
    }
};

成绩:
朴素解法:9ms,beats 3.91%,众数1ms,90.82%
Two Pointer解法:12ms,beats 13.53%,众数12ms,86.39%
Cmershen的碎碎念:
找一个链表的N等分点用的也是这种思路。

版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs

linked-list-cycle-ii(有环链表的第一个公共节点)

题目描述: Given a linked list, return the node where the cycle begins. If there is no cycle, returnnul...
  • zh_ang_lei
  • zh_ang_lei
  • 2016年09月25日 23:39
  • 220

141. Linked List Cycle | 判断单链表是否有环

Given a linked list, determine if it has a cycle in it. Follow up: Can you solve it without using e...
  • Yangtong157
  • Yangtong157
  • 2017年02月26日 19:26
  • 87

141. Linked List Cycle 判断单链表中是否有环

141. Linked List Cycle 问题:给定单链表,判断是否存在环。 要求:不使用额外空间。判断方法: 1、从链表头开始遍历整个链表,并且记录已经遍历过的结点地址,如果发现有正在遍...
  • u010223431
  • u010223431
  • 2016年05月03日 11:15
  • 376

(单链表是否有环相关的题目)LeetCode#141. Linked List Cycle

单链表与环相关的题目
  • u012559634
  • u012559634
  • 2017年06月04日 09:57
  • 318

链表环查找(Linked List Cycle II)

问题: Given a linked list, return the node where the cycle begins. If there is no cycle, return nu...
  • dsklfjal123
  • dsklfjal123
  • 2014年09月09日 11:52
  • 368

【启发】leetcode - 141. Linked List Cycle 【环判断 + 缩减 + 更改数据结构】

前言 通过本题想说明,当给定你一个数据结构(比如说,链表的头指针,树的根)作为输入时,你在求解问题的时候,应不应该更改其结构,以及如何更改其结构。 题目 Given a linked list...
  • TheSnowBoy_2
  • TheSnowBoy_2
  • 2017年08月08日 22:00
  • 206

【LeetCode-面试算法经典-Java实现】【092-Reverse Linked List II(反转单链表II)】

【092-Reverse Linked List II(反转单链表II)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】原题  Reverse a linked list fro...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月06日 07:40
  • 1663

面试算法:Linked List-链 表

Linked List-链 表 很多面试相关的书籍都有链表和字符串操作相关的题,这类问题更考验编程基本功和对基础知识的掌握情况。由于之前很多题目做过就忘,再做时总是磕磕绊绊,说明没有真正消化...
  • bobbycho
  • bobbycho
  • 2016年10月23日 20:02
  • 83

Linked List Cycle II--找出单向链表中环的起点

原题: Given a linked list, return the node where the cycle begins. If there is no cycle, return null. ...
  • u011960402
  • u011960402
  • 2013年11月17日 12:00
  • 2552

C++实现单链表(Singly-Linked List)追加、遍历、删除

#include using namespace std; struct Node { int data; struct Node* next; }; class List { Node* ...
  • wupeak
  • wupeak
  • 2015年01月27日 00:13
  • 650
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Middle-题目14:141. Linked List Cycle
举报原因:
原因补充:

(最多只允许输入30个字)