Leetcode:Linked List Cycle II
来源:互联网 发布:人体骨骼软件 编辑:程序博客网 时间:2024/05/07 11:37
Linked List Cycle II
Given a linked list, return the node where the cycle begins. If there is no cycle, return null
.
Follow up:
Can you solve it without using extra space?
解析:其实解题思路比较数学化,流程如下
1. 使用快慢指针,若指针相遇,则确定有环。
2. 若快指针与慢指针相遇,则让第二个慢指针从起点开始出发。
3. 两个慢指针同时前进,最后会在环的交汇点相遇。如果想不明白可以自己画图琢磨一下。
代码:
/** * Definition for singly-linked list. * class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */public class Solution { public ListNode detectCycle(ListNode head) { if(head==null||head.next==null)return null; ListNode dummy = new ListNode(0); dummy.next = head; ListNode fast = dummy; ListNode slow = dummy; ListNode marker = dummy; 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; else { while(true) { slow = slow.next; marker = marker.next; if(slow==marker)return marker; } } }}
0 0
- 【LeetCode】 Linked List Cycle II
- Leetcode: Linked List Cycle II
- <Leetcode>Linked List Cycle II
- [LeetCode] Linked List Cycle II
- Leetcode: Linked List Cycle II
- LeetCode:Linked List Cycle II
- Leetcode Linked List Cycle II
- [LeetCode]Linked List Cycle II
- leetcode Linked List Cycle II
- LeetCode | Linked List Cycle II
- Leetcode: Linked List Cycle II
- [LeetCode] - Linked List Cycle II
- Leetcode: Linked List Cycle II
- LeetCode - Linked List Cycle II
- leetcode Linked List Cycle II
- Linked List Cycle II -- LeetCode
- LeetCode Linked List Cycle II
- [LeetCode] Linked List Cycle II
- android socket通信控制电脑关机
- 正则表达式学习
- centos安装lamp
- 关于启动和检测assets包里面的apk包,需要更新或者删除旧版本的apk
- wpf后置代码中的Grid布局以及图片路径的设置
- Leetcode:Linked List Cycle II
- Java单例模式
- 初学笔记,自己写的一个帮助记录考勤小软件。
- linux环境下jdk和编译器版本不一致问题
- Android开发之成语连连看
- mac 安装Homebrew early EOF错误解决方法
- django1.7写一个MOOC管理系统(一:基本配置)(2015.6.20)
- 深入理解javascript系列之序章
- 关于android 如何安装 assets文件下的apk