【LeetCode-面试算法经典-Java实现】【142-Linked List Cycle II(单链表中有环II)】
2015-08-19 06:38
761 查看
【142-Linked List Cycle II(单链表中有环II)】
【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
原题
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?
题目大意
给定一个单链表,如果它有环,返回环入口的第一个节点,否则返回null解题思路
先判断链表是否有环,使用快(fast)慢指针(slow),解法见【141-Linked List Cycle(单链表中有环)】,如果没有环就返回null,如果有环,有fast=slow,就让让slow重新指向链表头,然后两个指针每次同时移动一个位置,直到两链表相遇,相遇点就是环的入口结点。代码实现
结点类class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; } }
算法实现类
public class Solution { public ListNode detectCycle(ListNode head) { ListNode fast = head; ListNode slow = head; while (fast != null && fast.next != null) { fast = fast.next.next; slow = slow.next; if (fast == slow) { break; } } if (fast == null || fast.next == null) { return null; } slow = head; while (fast != slow) { fast = fast.next; slow = slow.next; } return slow; } }
评测结果
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。特别说明
欢迎转载,转载请注明出处【/article/1324058.html】
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【141-Linked List Cycle(单链表中有环)】
- 【LeetCode-面试算法经典-Java实现】【139-Word Break(单词拆分)】
- 黑马程序员——黑苹果的日记(8)——oc基础之类和对象
- 黑马程序员——黑苹果的日记(11)—— oc加强
- [读书笔记—程序员]《高效程序员的45个习惯:敏捷开发修炼之道》- 苏帕拉马尼亚姆,亨特
- 黑马程序员——黑苹果的日记(6)——Foundation之NSString
- 黑马程序员——Java基础IO流概述、字符流、字节流、流操作规律、File类、Properties类、打印流、序列流
- 剑指offer面试题5-从尾到头打印链表/6-重建二叉树
- 每位新手程序员都应当了解的七条箴言
- 程序员该如何应对老板和客户的施压
- 10个经典的 Java main 方法面试题
- 9秒学院:每个程序员需掌握的20个代码命名小贴士
- 10+年程序员总结的20+条经验教训
- 一个程序员的成长独白
- 华为面试经验
- 每天五个java相关面试题(4)
- 剑指Offer面试题:4.从尾到头打印链表
- Java笔试面试题010
- PHP面试总结
- 程序员开发学习利器篇(下)之文档&资料&软件-获取他们的最好途径