Leetcode每日一题:141.linked-list-cycle(环形链表)
思路1:这道题如果就这么遍历下去,那么出现一个环就是死循环了,所以想到一个骚办法,也算是投机取巧吧,把遇到的每个数字都置INT32_MAX,在置之前先判断这个值是不是INT32_MAX,如果是则说明这是个环,如果不是,继续遍历下去;
所幸,数据里没并没有INT32_MAX,哈哈哈哈!!!
/*** 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* now=head;while(now!=NULL){if(now->val==INT32_MAX){return true;}now->val=INT32_MAX;now=now->next;}return false;}
};
思路1其实有点类似Hash法,这里的Hash法就是把指针所代表的地址作为参数,得到一个hash值再加入到集合中,每次加入之前先判断集合中是不是已存在,若已存在则说明存在环,若一直遍历结束,则说明不存在环;
思路2:快慢指针(双指针)法,快指针每次走两步,慢指针每次走一步;那么无环的情况下,快指针一定先到达终点;如果出现环,情况1:快指针回到慢指针之后的位置,那么快指针一定在某个时刻能追上慢指针,情况二:快指针回到慢指针之前的位置,那么快指针又会进入环,依次类推,总会回到慢指针后再追上慢指针;所以当快指针追上慢指针时,表示存在环;
简单地说就是:2 个人在环形跑道上赛跑,从同一个起点出发,一个跑得快,一个跑得慢,在某一时刻,速度快的必定会追上速度慢的,只要是跑道是环形的;
题目有一个很可爱的题解,标记一下:这是一个有趣的视频题解:快慢指针
class Solution {public:bool hasCycle(ListNode *head) {if(head == NULL || head->next == NULL){return false;}ListNode* slow = head;ListNode* fast = head->next;while(slow != fast){if(fast == NULL || fast->next == NULL){// 如果没有环,快指针会先到达结尾return false;}slow = slow->next;fast = fast->next->next;}return true;}
};
Leetcode每日一题:141.linked-list-cycle(环形链表)相关推荐
- leetcode python3 简单题141. Linked List Cycle
1.编辑器 我使用的是win10+vscode+leetcode+python3 环境配置参见我的博客: 链接 2.第一百四十一题 (1)题目 英文: Given a linked list, det ...
- 141. Linked List Cycle 环形链表
给定一个链表,判断链表中是否有环. 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环. 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引 ...
- LeetCode 141. Linked List Cycle (链表循环)
Given a linked list, determine if it has a cycle in it. Follow up: Can you solve it without using ex ...
- LeetCode每日一题 141. 环形链表
题目链接 思路 快慢指针 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ...
- [LeetCode] 141. Linked List Cycle 单链表判圆算法
TWO POINTER 快指针速度2 , 慢指针速度1 相对速度1,有环必然相遇 public class Solution {public boolean hasCycle(ListNode hea ...
- Leetcode每日一题:147.insertion-sort-list(对链表进行插入排序)
思路:因为链表的特性,插入排序无法从当前元素往前遍历,所以这里直接从头开始查找插入位置,分头部插入.中间插入和尾部插入: ListNode *insertionSortList(ListNode *h ...
- Leetcode每日一题:328.odd-even-linked-list(奇偶链表)
思路:同时分两个子链表分别向后连接属于它们的节点,遇到NULL节点时将两者连接即可: class Solution {public:ListNode *oddEvenList(ListNode *he ...
- Leetcode每日一题:剑指offer22.lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof(链表中倒数第k个节点)
思路:同上一道题,快慢指针问题: /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *nex ...
- Leetcode每日一题:83.remove-duplicates-from-sorted-list(删除排序链表中的重复元素)
思路:两个指针pre和cur,用cur遍历链表,pre指向cur前面的非重复元素: class Solution {public:ListNode *deleteDuplicates(ListNode ...
- 141. Linked List Cycle
欢迎fork and star:Nowcoder-Repository-github 141. Linked List Cycle 题目 Given a linked list, determine ...
最新文章
- python求平方根的代码_Python求平方根(附带源码)
- debian,ubuntu 安装mongodb 允许外网访问,修改端口,设置用户和密码
- 技术开发中一些名词解释
- [Android]乐Pad开发准备
- Django 中间件
- 动手写一个Remoting接口测试工具(附源码下载)
- 【C++】 C++标准模板库(六) Queue
- hibernate更新部分字段的几种方法
- WP8开发学习笔记动态修改启动时导航的第一个页面(如登录前启动页为LoginPage,登录后变为MainPage)...
- httpModule一些细节
- 不用找了,基于 Redis 的分布式锁实战来了
- PHP微信小程序生成带参二维码getwxacodeunlimit
- Smartbi的使用
- python脚本迁移数据库_Django 数据库迁移脚本
- DFX:面向产品生命周期的设计
- Tello 无人机 python 编程
- TouchGFX 中文字体添加(直入正题)
- Android Studio新手必读
- [系统安全] 二十二.PE数字签名之(下)微软证书漏洞CVE-2020-0601复现及Windows验证机制分析
- 实习生到公司第一天应该怎么快速上手
热门文章
- JavaScript引用数据类型
- C++STL-priority_queue
- request.getAttribute()和request.getParameter()区别
- python连接redis002
- 【设计模式】5、单例模式
- OPEN(SAP) UI5 学习入门系列之四:更好的入门系列-官方Walkthrough
- 利用navicat for mysql实现mysql数据库表结构复制
- [导入]正则表达式学习心得体会(3)(转)
- jq中使用promise封装ajax
- Tomcat系列(5)——Tomcat配置详细部分