[Leetcode 141] Linked List Cycle
2015-07-26 19:55
411 查看
题目
判断单链表里是否有环
分析
用两个指针P1和P2,P1每次走一步,P2每次走两步,如果链表中有环,两个指针一定会在环中相遇。C代码
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */ bool hasCycle(struct ListNode *head) { if(head==NULL){ return false; } struct ListNode* quick = head; struct ListNode* slow = head; do{ if(quick==NULL || quick->next==NULL) return false; quick = quick->next->next; slow = slow->next; }while(quick!=slow); return true; }
C++代码
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: bool hasCycle(ListNode *head) { if(head==NULL || head->next==NULL){ //空指针和只有一个结点,输出false return false; } ListNode* quick = head; ListNode* slow = head; while(quick!=NULL && quick->next!=NULL){ //注意循环结束条件,因为quick每次走两步 quick = quick->next->next; slow = slow->next; if(quick == slow){ return true; } } return false; } };
相关文章推荐
- 看马士兵类加载器对其知识总结
- Udp心跳包代码
- 计蒜课-奇怪的国家
- [leedcode 138] Copy List with Random Pointer
- C++ primer读书笔记 4_2
- Ubuntu15.04 QT5编译出现cannot find -lGL 和 collect2:error:ld returned 1 exit status 错误
- 设置在最小数目的阵列
- POJ 2612 Mine Sweeper 扫雷游戏
- 跟随大神的脚步学习之Handler:Handler详解
- 【c++】map 迭代器删除示例
- 高速分拣(1)的基本算法
- BZOJ 3314: [Usaco2013 Nov]Crowded Cows( 单调队列 )
- HDU 1495 非常可乐(隐式图的遍历)
- 机器学习也感性:90后软妹纸(张睿卿)的编程之路
- IOS文件下载
- vector 二
- leetcode 48: Rotate Image
- zoj 月赛
- Altuim designer 导入PCB,出现错误some nets were not able to be matched
- iOS编程——Swift实现一个不断渐变的圆环