关于有环链表的若干问题总结
2016-08-17 14:16
141 查看
1、判断一个链表是否有环
2、求一个有环链表的长度
3、求一个有环链表的环的首结点
4、求一个链表的长度
public boolean hasCircle(ListNode pHead) { if(pHead == null) return false; ListNode fast = pHead, slow = pHead; while(fast != null) { if(fast.next != null) fast = fast.next.next; else fast = fast.next; slow = slow.next; if(fast == slow) return true; } if(fast == null) return false; }
2、求一个有环链表的长度
3、求一个有环链表的环的首结点
4、求一个链表的长度
public int lenOfCircle(ListNode pHead) { if(pHead == null) return 0; ListNode fast = pHead, slow = pHead; while(fast != null) { if(fast.next != null) fast = fast.next.next; else fast = fast.next; slow = slow.next; if(fast == slow) break; } if(fast == null) return 0; int len = 1; slow = slow.next; while(slow != fast) { slow = slow.next; len++; } return len; }/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } */ public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { if(pHead == null) return null; ListNode pNode, fast = pHead, slow = pHead; 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 = pHead; while(slow != fast) { fast = fast.next.next; slow = slow.next; } return slow; } }
相关文章推荐
- 关于C/C++中二维数组、指针的引用等若干问题的总结
- 彻底学会使用epoll(六)——关于ET的若干问题总结
- 关于.so库文件引入项目导致crash的若干问题总结
- failed to open stream解决办法-关于WIN主机下配置PHP的若干问题解决方案总结
- 关于Django的TIME_ZONE时区问题的若干总结
- 彻底学会使用epoll(六)——关于ET的若干问题总结
- 关于编码问题的若干总结
- 关于win7遇到的若干问题的处理总结
- 关于TFS2010 远程无法创建团队项目的若干问题总结
- 彻底学会使用epoll(六)——关于ET的若干问题总结
- 关于遇到过链表问题的一些总结
- 关于程序中Activity若干问题知识点总结
- LintCode 关于链表问题的总结
- 彻底学会使用epoll(六)——关于ET的若干问题总结
- 关于opencv在QT下的若干问题总结
- 关于TFS2010 远程无法创建团队项目的若干问题总结
- 关于Django的TIME_ZONE时区问题的若干总结
- [总结]关于VS2002下的项目迁移到VS2005下相关问题总结
- 关于实施房地产税收一体化管理若干问题的通知
- 《关于住房公积金管理若干具体问题的指导意见》