码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode-142. Linked List Cycle II

时间:2017-02-24 15:20:54      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:lis   判断   div   begin   返回   数据   tco   while   color   

 

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?

 

思路:不同于141. Linked List Cycle 这题的head节点可能没在环里,而且不光判断是否有环,还要返回环的起点,所以不能再用快慢指针了,改用修改节点数据值,修改为一个不常用的数,我修改为INT_MAX。如果遇到值为INT_MAX的节点,就说明有环,并且为环的起点(虽然这种方法在逻辑上不完美,但是这题Accepted了,如果有更好的方法,欢迎指教)

 

Accepted Code:

 1 /**
 2  * Definition for singly-linked list.
 3  * struct ListNode {
 4  *     int val;
 5  *     ListNode *next;
 6  *     ListNode(int x) : val(x), next(NULL) {}
 7  * };
 8  */
 9 class Solution {
10 public:
11     ListNode *detectCycle(ListNode *head) {
12         if(head==nullptr)
13         return nullptr;
14         
15         ListNode* flag=nullptr;
16         while(head)
17         {
18             head->val=INT_MAX;
19             head=head->next;
20             if(head==nullptr)
21             return nullptr;
22             if(head->val==INT_MAX)
23             {
24                 flag=head;
25                 break;
26             }
27         }
28         return flag;
29     }
30 };

 

leetcode-142. Linked List Cycle II

标签:lis   判断   div   begin   返回   数据   tco   while   color   

原文地址:http://www.cnblogs.com/hongyang/p/6438580.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!