加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

LintCode(103)带环链表 II

发布时间:2020-12-13 21:07:12 所属栏目:PHP教程 来源:网络整理
导读:题目 给定1个链表,如果链表中存在环,则返回到链表中环的起始节点的,如果没有环,返回null。 您在真实的面试中是不是遇到过这个题? Yes 样例 给出 ⑵1-10-4-5,tail connects to node index 1 ,返回 10 分析 上1题的进阶。 首先,利用快慢指针判断有没有

题目

给定1个链表,如果链表中存在环,则返回到链表中环的起始节点的值,如果没有环,返回null。

样例

给出 ⑵1->10->4->5,tail connects to node index 1,返回10

分析

上1题的进阶。
首先,利用快慢指针判断有没有环,若遇到slow == fast时,跳出循环;
然后,调剂fast=head,slow不变,此时slow与fast同步移动,直至再次相遇,即是链表中环的起始节点。

Python代码

""" Definition of ListNode class ListNode(object): def __init__(self,val,next=None): self.val = val self.next = next """ class Solution: """ @param head: The first node of the linked list. @return: The node where the cycle begins. if there is no cycle,return null """ def detectCycle(self,head): # write your code here if head == None or head.next == None: return None slow = head fast = head while fast != None and fast.next != None: slow = slow.next fast = fast.next.next if slow == fast: break if fast != None and fast == slow: fast = head while fast != slow: slow = slow.next fast = fast.next return fast return None
GitHub -- Python代码

C++代码

/** 103 带环链表 II 给定1个链表,如果链表中存在环,则返回到链表中环的起始节点的值,如果没有环,返回null。 您在真实的面试中是不是遇到过这个题? Yes 样例 给出 ⑵1->10->4->5,tail connects to node index 1,返回10 */ /** * Definition of ListNode * class ListNode { * public: * int val; * ListNode *next; * ListNode(int val) { * this->val = val; * this->next = NULL; * } * } */ class Solution { public: /** * @param head: The first node of linked list. * @return: The node where the cycle begins. * if there is no cycle,return null */ ListNode *detectCycle(ListNode *head) { // write your code here if(head == NULL || head->next ==NULL) { return NULL; }//if ListNode *slow = head,*fast = head; while(fast && fast->next) { slow = slow->next; fast = fast->next->next; if(slow == fast) { break; }//if }//while if(fast && fast == slow) { fast = head; while(fast != slow) { fast = fast->next; slow = slow->next; }//while return fast; }//if return NULL; } };
GitHub -- C++代码

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读