题解 | #判断链表中是否有环#

判断链表中是否有环

http://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9

算法思路:考虑使用快慢双指针。慢指针每次走一步,快指针每次走两步,如果链表有环,快、慢指针一定会相遇指向同一个节点(可理解为环型跑道速度快的一定可追上速度慢的),则返回true;如果链表无环,遍历完整个链表,返回false。

C语言实现:

bool hasCycle(struct ListNode* head ) {
struct ListNode *p,*q;
p=q=head;
while(q&&q->next){
	p=p->next;//慢指针p每次走一步 
	q=q->next;
	q=q->next;//快指针q走两步 
	if(q&&q->val==p->val) return true;//有环
}
return false;//无环

}

全部评论

相关推荐

mq2:我倒是觉得这种敞亮一点好。能接受就去不能就不去呗。 完了跟现在“正常”公司一样,hr说的天花乱坠,进去一看根本就是996核动力牛马,想走又没应届生身份了。岂不是更糟。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务