zoukankan      html  css  js  c++  java
  • LeetCode 141. 环形链表 快慢指针

    地址 https://leetcode-cn.com/problems/linked-list-cycle/

    给定一个链表,判断链表中是否有环。
    
    如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 
    为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。
    如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。   进阶: 你能用 O(1)(即,常量)内存解决此问题吗?

    算法1
    快慢指针 如果没达到终点 而且还相遇了
    那么肯定存在链表环

    C++ 代码

    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     ListNode *next;
     *     ListNode(int x) : val(x), next(NULL) {}
     * };
     */
    class Solution {
    public:
        bool hasCycle(ListNode *head) {
            ListNode* p1= head; ListNode* p2 = head;
            while(p1!=NULL && p2 != NULL){
                p1 = p1->next; 
                if(p1== NULL) return false;
                p2=p2->next;
                if(p2==NULL) return false;
                p2=p2->next;
                if(p2==NULL) return false;
                if(p1 == p2) return true;
            }
    
    
            return false;
        }
    };
    作 者: itdef
    欢迎转帖 请保持文本完整并注明出处
    技术博客 http://www.cnblogs.com/itdef/
    B站算法视频题解
    https://space.bilibili.com/18508846
    qq 151435887
    gitee https://gitee.com/def/
    欢迎c c++ 算法爱好者 windows驱动爱好者 服务器程序员沟通交流
    如果觉得不错,欢迎点赞,你的鼓励就是我的动力
    阿里打赏 微信打赏
  • 相关阅读:
    github.com/dotnet/orleans
    C#开源
    Windows Server 2016正式版14393英文版ISO镜像下载:_X64FRE_ZH-CN.ISO
    Windows Server 2016
    功能更新到 Windows 10 企业版, 版本 1607
    Load Audio or Vedio files
    Socket.Available 属性
    CaptureManagerSDK
    Net.Sockets
    Solid Edge如何制作装配体的剖视图
  • 原文地址:https://www.cnblogs.com/itdef/p/13785229.html
Copyright © 2011-2022 走看看