• 144环形链表


    题目描述:

    给定一个链表,判断链表中是否有环。

    为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。

     

    示例 1:

    输入:head = [3,2,0,-4], pos = 1
    输出:true
    解释:链表中有一个环,其尾部连接到第二个节点。


    示例 2:

    输入:head = [1,2], pos = 0
    输出:true
    解释:链表中有一个环,其尾部连接到第一个节点。


    示例 3:

    输入:head = [1], pos = -1
    输出:false
    解释:链表中没有环。

    我的理解:

    有环意味着链表中的一个节点有两个指针同时指向,但是我发现这样想会让问题变得复杂,因为没办法判断同一个节点有两个指针指向
    但是如果用快慢指针来解决这个问题的话,就会容易很多
    一直都只是听快慢指针
    但是看了解析发现他实现起来比较容易
    正确的思想:
    设置两个指针同时指向头结点
    快指针一次走两步,慢指针一次走一步
    如果存在环路,则两个指针一定会相遇
    代码:
    /**
     * Definition for singly-linked list.
     * struct ListNode {
     *     int val;
     *     struct ListNode *next;
     * };
     */
    bool hasCycle(struct ListNode *head) {
        //有环意味着链表中的一个节点有两个指针同时指向
        //判断节点不如判断指针
        //给两个指针让他同时出发
        struct ListNode *fast=head;
        struct ListNode *slow=head;
        while(fast!=NULL&&fast->next!=NULL)
        {
            slow=slow->next;
            fast=fast->next->next;
            if(fast==slow)
            {
                return true;
            }      
        }
            return false;     
    }
    

      总结:

    巩固了链表的知识,感觉很有收获。起码以后遇到此类题目不会发怵。

     



  • 相关阅读:
    Java IO总结
    Tomcat处理一个HTTP请求的过程
    Tomcat的web项目部署方式
    Tomcat性能调优
    jquery基础知识汇总
    Javascript中的正则表达式
    HTTP首部
    HTTPS
    Javascript中关于cookie的那些事儿
    HTTP请求方法详解
  • 原文地址:https://www.cnblogs.com/redzzy/p/13277546.html
Copyright © 2020-2023  润新知