如何制作wap网站,网站优化网络,免费域名怎么注册,h5游戏辅助工具题目描述
题目链接#xff1a;141. 环形链表 - 力扣#xff08;LeetCode#xff09; 题目分析
我们先了解一个知识#xff1a;循环链表
尾结点不指向NULL#xff0c;指向头就是循环链表 那么带环链表就意味着尾结点的next可以指向链表的任意一个结点#xff0c;甚至可…题目描述
题目链接141. 环形链表 - 力扣LeetCode 题目分析
我们先了解一个知识循环链表
尾结点不指向NULL指向头就是循环链表 那么带环链表就意味着尾结点的next可以指向链表的任意一个结点甚至可以指向他自己 这里我们的算法思路唯一靠谱的还是快慢指针
slow一次走一步fast一次走两步当slow走到中间的时候fast一定入环了如果fast指向NULL则该链表无环 当slow再走一半也就入环了这个时候由于slow走的慢fast走的快所以fast和slow最终会相遇的 那我们的代码就应该是
如果fast或者fast-next为NULL则返回false
当fast或者fast-next不为NULL的时候slow走一步fast走两步当fastslow则返回true
代码示例
根据思路我们就可以写代码了:
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
bool hasCycle(struct ListNode *head) {struct ListNode *fasthead,*slowhead;while(fastfast-next){slowslow-next;fastfast-next-next;if(slowfast){return true;}}return false;
}
当然结果也通过了