leetcode找循环链表的循环点
来源:互联网 发布:doodle jump java 编辑:程序博客网 时间:2024/05/21 10:12
这个题画图就可以分析出:
一个快指针,一个慢指针,如果有循环必定相遇。
假设起点到循环点长度为a,相遇点到循环点长度为b,循环剩下长度为c。
则很容易得到:
2*(a+b)==a+b+n*(b+c);
变形得:
a=(n-1)*(b+c)+c;
可以得出,再次另一个指针指向链表头,和相遇点指针同速前进,必定在循环点相遇。
具体代码如下:
class Solution {public: ListNode *detectCycle(ListNode *head) { if(head==NULL) return 0; ListNode *slow=head,*fast=head; while(fast!=NULL&&fast->next!=NULL){ slow=slow->next; fast=fast->next->next; if(slow==fast) break; } if(fast==NULL||fast->next==NULL) return NULL; slow=head; while(slow!=fast){ fast=fast->next; slow=slow->next; } return slow; }};
0 0
- leetcode找循环链表的循环点
- 寻找循环链表的循环起始点
- hdu 1005 找规律(循环点)
- ZOJ2674(指数循环节找不动点)
- LeetCode 循环链表判断
- LeetCode 循环链表II
- LeetCode循环旋转链表
- 判断链表是否循环,找出循环点
- hdu 2802 找循环节 的方法
- for循环的注意点
- HDU4611(找循环节)
- 找循环节
- KMP找循环节
- 【LeetCode】 Rotate List 循环链表
- Leetcode Linked List Cycle 循环链表
- 【Leetcode】61. Rotate List - 循环链表
- 循环链表的创建
- 循环链表的创建
- android Translucent Bar (沉浸式菜单栏)
- 所关注的牛人前辈
- XUtils3框架
- iOS tableview自适应高度
- WebStorm初始设置
- leetcode找循环链表的循环点
- WinRAR v5.40 官网无广告弹窗正式版
- abap 性能
- JZOJ4739 【雅礼联考GDOI2017模拟9.2】Ztxz16学图论 莫队加并查集
- sizeof(strb++); 的问题 为什么strb没有++
- C#笔记
- 详解大端模式和小端模式
- Android lint 配置
- 递归和非递归方式合并有序链表