Leetcode 141 Linked List Cycle
2016-05-04 10:42
417 查看
题目:
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
思路:
1)将遍历过的结点都指向头结点,遍历一个结点之前判断该结点的next的next的结点是否是头结点,如果是头结点的话,则存在环
2)设置两个指针,步数不同 如果存在环 则两个指针有指向同一结点的时候
思路1)代码
思路2代码
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
思路:
1)将遍历过的结点都指向头结点,遍历一个结点之前判断该结点的next的next的结点是否是头结点,如果是头结点的话,则存在环
2)设置两个指针,步数不同 如果存在环 则两个指针有指向同一结点的时候
思路1)代码
public boolean hasCycle(ListNode head) { if(head == null){ return false; } ListNode phead = head; ListNode p = head.next; if(p == null){ return false; } while(p.next!=null){ if(phead.next.next == head){ return true; } phead = p.next; p.next = head; p = phead; } return false; }
思路2代码
public boolean hasCycle(ListNode head) { if(head == null){ return false; } ListNode phead = head; ListNode p = head; while(p.next!=null && p.next.next!=null){ phead = phead.next; p = p.next.next; if(phead == p){ return true; } } return false; }
相关文章推荐
- [C/C++]反转链表
- C#实现基于链表的内存记事本实例
- C#模拟链表数据结构的实例解析
- C语言实现带头结点的链表的创建、查找、插入、删除操作
- C++利用静态成员或类模板构建链表的方法讲解
- C++实现简单的学生管理系统
- Linux内核链表实现过程
- C++链表倒序实现方法
- C#通过链表实现队列的方法
- C#实现的简单链表类实例
- 找出链表倒数第n个节点元素的二个方法
- Java数据结构之简单链表的定义与实现方法示例
- Java模拟有序链表数据结构的示例
- C语言单循环链表的表示与实现实例详解
- C++实现的链表类实例
- PHP小教程之实现链表
- PHP中模拟链表和链表的基本操作示例
- C语言双向链表的表示与实现实例详解
- js链表操作(实例讲解)
- C语言实现输出链表中倒数第k个节点