熊二 | c++ | #牛牛队列成环#

牛牛队列成环

https://www.nowcoder.com/practice/38467f349b3a4db595f58d43fe64fcc7

题目考查的知识点

  • 本题抽象为链表是否存在环的问题。
  • 同时考察快慢指针。

题目解答方法的文字解析

    如果将尾结点的 next 指针指向其他任意一个结点,那么链表就存在了一个环。

  1. 当一个链表有环时,快慢指针都会陷入环中进行无限次移动,然后变成了追及问题。
  2. 想象一下在操场跑步的场景(有环),只要一直跑下去,快的总会追上慢的。
  3. 当两个指针都进入环后,每轮移动使得慢指针到快指针的距离增加一,同时快指针到慢指针的距离也减少一,只要一直移动下去,快指针总会追上慢指针。

本题解析所用的编程语言

  • c++

完整且正确的编程代码

class Solution {
  public:
    bool hasCycle(ListNode* head) {
	  	// 初始化快慢指针都为头节点
        ListNode* slow = head, * fast = head;
	  	// 只要快慢指针还可以继续前进
        while (fast != nullptr && fast->next != nullptr) {
            slow = slow->next;// 慢指针每次前进一个节点
            fast = fast->next->next;// 快指针每次前进两个节点
		  	//(while里面的条件保证了不会有空指针的访问)
            if (fast && slow->val == fast->val)//快慢指针相遇
                return true;
        }

        return false;
    }
};
/*
2023.08.03
*/

全部评论

相关推荐

小肥罗:此乃引蛇出洞之计,勾出你想去杭州的原因再告诉你不在杭州,让你打脸,自己离开。好一招抛砖引玉,虾仁猪心。你回复:计划去杭州,但我心中第一选择是宁波~巧了! 这计名叫“阿Q精神胜利法之厚脸皮不要脸我不尴尬谁爱尴尬谁尴尬去”之计!克制一切!
这个工作能去吗
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务