博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linked List Cycle
阅读量:5368 次
发布时间:2019-06-15

本文共 1350 字,大约阅读时间需要 4 分钟。

Given a linked list, determine if it has a cycle in it.

Follow up:

Can you solve it without using extra space?

分析:用map记录是否出现过。

用时:60ms

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     bool hasCycle(ListNode *head) {12         if(!head || !head->next) return false;13         14         map
m;15 while(head){16 if(m.find(head) == m.end()) m[head] = true;17 else return true;18 head = head->next;19 }20 return false;21 }22 };

 

看到比较好的方法:设置两个指针,一个快(每次走两步),一个慢(每次走一步)。如果快慢指针相遇,那么表示有环,否则无环。

用时16ms。远优于使用map的方式。

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     bool hasCycle(ListNode *head) {12         if(!head || !head->next) return false;13         14         ListNode *fast = head, *slow = head;15         while(fast && fast->next){16             fast = fast->next->next;17             slow = slow->next;18             if(fast == slow) return true;19         }20         return false;21     }22 };

转载于:https://www.cnblogs.com/amazingzoe/p/4518278.html

你可能感兴趣的文章
egret3D与2D混合开发,画布尺寸不一致的问题
查看>>
浅谈性能测试
查看>>
较快的maven的settings.xml文件
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
Python环境搭建(安装、验证与卸载)
查看>>
如何辨别一个程序员的水平高低?是靠发量吗?
查看>>
linux的子进程调用exec( )系列函数
查看>>
zju 2744 回文字符 hdu 1544
查看>>
【luogu P2298 Mzc和男家丁的游戏】 题解
查看>>
前端笔记-bom
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
Code Snippet
查看>>
zoj 1232 Adventure of Super Mario
查看>>
组合数学 UVa 11538 Chess Queen
查看>>