OJ 141 --Linked List Cycle
来源:互联网 发布:女装淘宝店铺名字特别 编辑:程序博客网 时间:2024/06/07 21:06
Description:
Given a linked list, determine if it has a cycle in it.
Follow up:
Can you solve it without using extra space?
描述:
给定一个链表,写一个函数确定这个链表是否有环。空间复杂度为O(1)
思路:
链表有环,则最后一个节点的next指针会指向前面任意一个节点,如果空间复杂度不作要求的话,那么这个题会非常简单,但是题目要求空间复杂度为O(1),那我们就不能使用额外的数据结构来帮助我们解决这个问题。
我们可以想像两个人跑步,一个跑得慢,一个跑得快,
如果他们沿直线跑,那么在有限时间内,他们两个必然不会相遇。
如果他们绕圈跑,那么跑得快的那个人肯定会从后面追上跑得慢的那个人。
这样就提供了解题的思路:
我们需要两个指针,一个指针每次只走一个节点,另外一个指针每次走两个节点,那么必然在某个时候,这两个指针会指向同一个节点,那么这个链表就必然存在环。
所以我们就可以得到下面的代码:
bool hasCycle(ListNode *head) { if (head == nullptr) { return false; } ListNode* walker = head; ListNode* runner = head; while (runner->next != nullptr && runner->next->next != nullptr) { walker = walker->next; runner = runner->next->next; if (walker == runner) { return true; } } return false; }
阅读全文
0 0
- OJ 141 --Linked List Cycle
- [LeedCode OJ]#141 Linked List Cycle
- LeetCode OJ:Linked List Cycle
- [LeetCode OJ]Linked List Cycle
- LeetCode OJ Linked List Cycle
- 141Linked List Cycle
- #141 Linked List Cycle
- 141 Linked List Cycle
- [141]Linked List Cycle
- 141Linked List Cycle
- 141-Linked List Cycle
- 141 Linked List Cycle
- 141 linked list cycle
- 141-Linked List Cycle
- <LeetCode OJ> 141 / 142 Linked List Cycle(I / II)
- LeetCode OJ:Linked List Cycle II
- [LeetCode OJ] Linked List Cycle 解题报告
- LeetCode OJ Linked List Cycle II
- IO多路转接之epoll
- java实现简单的二叉树
- 根据数据库性别字段在前台自动显示性别
- Linux学习高级篇(五)
- hdu2178 猜数字(C语言
- OJ 141 --Linked List Cycle
- Linux下利用core dump文件调试
- UTD2202C示波器如何去测试纹波
- python爬虫定向爬取中国大学排名
- 搞懂.NET Framework 历史版本(2017年)
- ECharts介绍
- 管道通信的特点及有名管道和无名管道的区别
- git pull命令
- springboot-clean1