141. Linked List Cycle
来源:互联网 发布:c语言全集 编辑:程序博客网 时间:2024/05/21 08:58
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
思路:
判断一个链表是否有循环,天真(SB)的我以为循环链表是这样:
其实它也可能是这样的:
此处使用快慢指针的方法,设置两个指针p、q。每次p向前走一步,q向前走两步,p = p.next; q = q.next.next。就像两个人绕圈跑步,一个跑得快,一个跑得慢,总会在一个位置上相遇。
/** * 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) { ListNode p = head, q = head; boolean isCycle = false; while(q != null && q.next != null) { p = p.next; q = q.next.next; if(p == q) { isCycle = true; break; } } return isCycle; }}
扩展一下: 在两个指针p、q相遇后,p向前继续走,q留在原地,当pq再次相遇时,p走过的节点个数就是这个链表循环部分的节点个数。
阅读全文
0 0
- 141.Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141.Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- 141. Linked List Cycle
- C++信号量Semaphore和MFC中的CSemaphore类使用
- 练习58
- JS压缩图片(canvas),返回base64码
- Azure SQL性能调优实践
- hive on spark安装(hive2.3 spark2.1)
- 141. Linked List Cycle
- 1.4.2 入口文件
- C#程序调试
- Linux命令行下安装Maven与配置
- 练习59
- Android项目架构--知识体系简单梳理(二)
- 线程间协作——wait & notify & notifyAll
- PCRE2 正则库在Windows环境编译
- 26_api文档_package的概念_生成自己项目的api文档