当前位置: 首页 > article >正文

【力扣-141】 环形链表 + 【力扣-142】 环形链表 II

🖊作者 : Djx_hmbb
📘专栏 : 数据结构
😆今日分享 : 霍桑效应(霍索恩效应) : 是指那些意识到自己正在被别人观察的个人具有改变自己行为的倾向。
霍桑效应告诉我们:从旁人的角度,善意的谎言和夸奖真的可以造就一个人;从自我的角度,你认为自己是什么样的人,你就能成为什么样的人。
请添加图片描述

环形链表

  • 🖋题目链接:
  • ✔题目>环形链表 :
  • 🔎代码详情:
  • ✔题目>环形链表 II:
  • ✔解题思路:
  • 🔎代码详情:
  • 总结:
    • 家人们,点个![请添加图片描述](https://img-blog.csdnimg.cn/11dae7d2dd1b46b2b021edaccee67cf1.jpeg)再走呗~

🖋题目链接:

【力扣-141】 环形链表
【力扣-142】 环形链表 II

✔题目>环形链表 :

在这里插入图片描述

🔎代码详情:

bool hasCycle(struct ListNode *head) {
    struct ListNode *fast,*slow;
    fast = slow = head;
    
    //判断是否有环
    while(fast && fast->next){
        fast = fast->next->next;
        slow = slow->next;
        //追击问题
        if(fast == slow){
            return true;
        }
    }
    return false;
}

✔题目>环形链表 II:

在这里插入图片描述

✔解题思路:

请添加图片描述

如果链表存在环,则fast和slow会在环内相遇,定义相遇点到入口点的距离为X,定义环的长度为C,定义头到入口的距离为L,fast在slow进入环之后一圈内追上slow,则会得知:
slow所走的步数为:L + N
fast所走的步数为:L + N + K * C
并且fast所走的步数为slow的两倍,故:
2*(L + N) = L + N + K * C
即: L = K * C - N
所以从相遇点开始slow继续走,让一个指针从头开始走,相遇点即为入口节点

🔎代码详情:

struct ListNode *detectCycle(struct ListNode *head) {
    struct ListNode *fast,*slow;
    fast = slow = head;
    
    //判断是否有环
    while(fast && fast->next){
        fast = fast->next->next;
        slow = slow->next;
        //追击问题
        if(slow == fast){
            struct ListNode *meet = slow;
            struct ListNode *start = head;
            while(meet != start){
                meet = meet->next;
                start = start->next;
            }
            return meet;
        }
    }
    return NULL;
}

总结:

这个题目考察的主要是思维,如果是在搞不懂,也不用太气馁,慢慢来,实在不行,咱记住怎么写的就行,问题不大!


感谢家人的阅读,若有不准确的地方 欢迎在评论区指正!

家人们,点个请添加图片描述再走呗~


http://www.kler.cn/a/15496.html

相关文章:

  • workerman的安装与使用
  • 基于Java Springboot编程语言在线学习平台
  • Failed to create a temp file - Jenkins 无法创建任务
  • Ubuntu 的 ROS 操作系统 turtlebot3 导航仿真
  • 【计算机网络】协议定制
  • vuex和pinia的区别
  • Flink之TaskManager内存解析
  • 美团赴抖音之“约”:让本地生活补贴大战来得更猛烈些?
  • win11安装双系统ubuntu20.04指导
  • Openwrt搭建php页面
  • 【MATLAB数据处理实用案例详解(19)】——利用神经模糊控制实现对洗衣机的控制
  • 几种编程语言之结构体内存对齐
  • IDA简单使用
  • 用Python分析周杰伦歌曲并进行数据可视化
  • node项目的建立
  • HTTP 知识点总结
  • MRI k空间概念整理
  • 怎么卸载现有Python?【全方位解决】
  • 1。C语言基础知识回顾
  • 真题详解(数据流图平衡)-软件设计(五十九)
  • 数字IC入门教程
  • DDD系列:一、 Domain Primitive
  • 进程状态以及两种特殊进程
  • Java 网络编程 —— Socket
  • C——Typedef是什么?如何使用?有何便利之处?
  • 下载——安装——使用FinalShell