leetcode刷题日记—— Linked List Cycle II
2015-12-31 12:21
288 查看
Given a linked list, return the node where the cycle begins. If there is no cycle, return null.
Note: Do not modify the linked list.
Follow up:
Can you solve it without using extra space?
问题分析:这个题目和之前的题目类似,都是判断是否是循环链表。并返回节点。但是这里要求不能够改变链表。所以之前的那种方式不再适用。这里采用双指针的方式,一个指针的移动速度是另外一个指针的二倍,如果存在循环,必然会出现相遇。但是注意相遇的节点不一定是最开始连上的那个节点。实现代码如下:
Note: Do not modify the linked list.
Follow up:
Can you solve it without using extra space?
问题分析:这个题目和之前的题目类似,都是判断是否是循环链表。并返回节点。但是这里要求不能够改变链表。所以之前的那种方式不再适用。这里采用双指针的方式,一个指针的移动速度是另外一个指针的二倍,如果存在循环,必然会出现相遇。但是注意相遇的节点不一定是最开始连上的那个节点。实现代码如下:
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode *detectCycle(ListNode *head) { if(head==NULL) return NULL; if(head->next==NULL) return NULL; ListNode *p=head,*q=head,*m=NULL; while(p&&q->next){ p=p->next; q=q->next->next; if(q==NULL) return NULL; if(p==q) { q= head; while(q!=p) { p= p->next; q= q->next; } m= p; break; } } return m; } };
相关文章推荐
- Qwt中的鼠标操作之缩放、平移
- 任性走通在线教育之路——如鹏创业一年总结
- Daily Scrum- 12/31
- POJ1159,Palindrome
- 【虫师--系列】LR有的JMeter也有之二“检查点”
- 【虫师--系列】LR有的JMeter也有之一“参数化”
- 轻松学习之Linux教程六 正則表達式具体解释
- 【虫师--系列】使用JMeter创建数据库(Mysql)测试
- 【翻译自mos文章】跟踪UNIX系统调用的方法
- JS 立即执行的函数表达式(function)写法
- 21.Android之SQLite数据库学习
- 安卓 tar.bz2
- Description Resource Path Location Type AppliToolingPart cannot be resolved to a type AppliToolingPa
- 如何把github上项目import 到AS 中
- word2vec 中的数学原理具体解释(一)文件夹和前言
- 编写高质量代码--改善python程序的建议(三)
- 【虫师--系列】使用JMeter创建FTP测试计划
- 2015年我看过的那些书
- 【虫师--系列】JMeter使用技巧
- 修改volley默认超时时间以及重连次数