LeetCode 141.環形鏈表

在這里插入圖片描述

文章目錄

  • 💡題目分析
  • 💡解題思路
  • 🔔接口源碼
  • 💡深度思考
    • ?思考1
    • ?思考2

在這里插入圖片描述
題目鏈接👉 LeetCode 141.環形鏈表👈

💡題目分析

給你一個鏈表的頭節點 head ,判斷鏈表中是否有環。

如果鏈表中有某個節點,可以通過連續跟蹤 next 指針再次到達,則鏈表中存在環。 為了表示給定鏈表中的環,評測系統內部使用整數 pos 來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)。注意:pos 不作為參數進行傳遞 。僅僅是為了標識鏈表的實際情況。

如果鏈表中存在環 ,則返回 true 。 否則,返回 false 。

在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述
在這里插入圖片描述

💡解題思路

快慢指針:
定義兩個指針,一個快指針、一個慢指針,讓快指針一次走一步,慢指針一次走兩步,如果存在環的話,快指針會先進環,一直在環中循環的走,等到慢指針也進入環中循環,快指針追擊慢指針,最后它們一定會相遇(因為快慢指針的差距步是一步),就可以判斷出該鏈表存在環;如果不存在環的話,快指針會走到頭結束。

👇過程圖解👇
在這里插入圖片描述

🔔接口源碼

//快慢指針
bool hasCycle(struct ListNode *head) 
{struct ListNode* fast = head, *slow = head;while(fast && fast->next){slow = slow->next;fast = fast->next->next;if(slow == fast){return true;}}return false;
}

在這里插入圖片描述

💡深度思考

?思考1

slow一次走一步,fast一次走兩步,slow和fast一定會相遇嗎?

fast會先進環,slow會后進環,假設slow進環時,slow和fast之間的距離為N,slow進環以后,fast開始追擊slow,slow每走1步,fast每走2步,他們之間距離縮小1。
追擊過程中,他們之間的距離變化:N,N-1,N-2,… ,2,1,0

在這里插入圖片描述
所以一定會相遇!

?思考2

slow一次走一步,fast一次走三步,slow和fast一定會相遇嗎?

fast會先進環,slow會后進環,假設slow進環時,slow和fast之間的距離N,slow進環以后,fast開始追擊slow,slow每走1步,fast每走3步,他們之間距離縮小2
在這里插入圖片描述
由于環的長度不同,追擊過程中,他們之間的距離變化會有兩種情況(奇/偶):
在這里插入圖片描述
所以不一定會相遇!

🥰希望烙鐵們能夠理解歐!

總結🥰
以上就是本題講解的全部內容啦🥳🥳🥳🥳
本文章所在【C/C++刷題系列】專欄,感興趣的烙鐵可以訂閱本專欄哦🥳🥳🥳
前途很遠,也很暗,但是不要怕,不怕的人面前才有路。💕💕💕
小的會繼續學習,繼續努力帶來更好的作品😊😊😊
創作寫文不易,還多請各位大佬uu們多多支持哦🥰🥰🥰

請添加圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/42109.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/42109.shtml
英文地址,請注明出處:http://en.pswp.cn/news/42109.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【ES6】—let 聲明方式

一、不屬于頂層對象window let 關鍵字聲明的變量,不會掛載到window的屬性 var a 5 console.log(a) console.log(window.a) // 5 // 5 // 變量a 被掛載到window屬性上了 , a window.alet b 6 console.log(b) console.log(window.b) // 6 // undefin…

原生js獲取今天、昨天、近7天的時間(年月日時分秒)

有的時候我們需要將今天,昨天,近7天的時間(年月日時分秒)作為參數傳遞給后端,如下圖: 那怎么生成這些時間呢?如下代碼里,在methods里的toDay方法、yesterDay方法、weekDay方法分別用于生成今天、昨天和近7天的時間: <template><div class="box"&…

暫停Windows更新的方法,可延后數十萬年,簡單且有手就行

前言 近年來&#xff0c;Windows更新頻率過快&#xff0c;最大只能暫停更新5周&#xff0c;導致用戶不厭其煩&#xff0c;從網上找到的暫停更新的方法不是過于繁瑣就是毫無效果&#xff0c;或者是暫停的時間有限&#xff0c;無意中發現一個大神的帖子可以通過修改注冊表信息以達…

Java定時任務方案

一、Timer import java.util.Timer; import java.util.TimerTask;public class TimerExample {public static void main(String[] args) {Timer timer new Timer();TimerTask task new TimerTask() {Overridepublic void run() {System.out.println("Task executed at:…

uni-app自定義多環境配置,動態修改appid

背景 在企業級項目開發中&#xff0c;一般都會分為開發、測試、預發布、生產等多個環境&#xff0c;在工程化中使用不同的打包命令改變環境變量解決不同環境各種變量需要手動修改的問題&#xff0c;比如接口請求地址&#xff0c;不同環境的請求路徑前綴都是不同的。在使用uni-…

Docker中為RabbitMQ安裝rabbitmq_delayed_message_exchange延遲隊列插件

1、前言 rabbitmq_delayed_message_exchange是一款向RabbitMQ添加延遲消息傳遞&#xff08;或計劃消息傳遞&#xff09;的插件。 插件下載地址&#xff1a;https://www.rabbitmq.com/community-plugins.html 1、下載插件 首先需要確定我們當前使用的RabbitMQ的版本&#xff0c…

Android隱藏輸入法

1、方法一(如果輸入法在窗口上已經顯示&#xff0c;則隱藏&#xff0c;反之則顯示) InputMethodManager imm (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS); 2、方法二(view為接受軟…

實踐教程|基于 pytorch 實現模型剪枝

PyTorch剪枝方法詳解&#xff0c;附詳細代碼。 一&#xff0c;剪枝分類 1.1&#xff0c;非結構化剪枝 1.2&#xff0c;結構化剪枝 1.3&#xff0c;本地與全局修剪 二&#xff0c;PyTorch 的剪枝 2.1&#xff0c;pytorch 剪枝工作原理 2.2&#xff0c;局部剪枝 2.3&#…

前端如何安全的渲染HTML字符串?

在現代的Web 應用中&#xff0c;動態生成和渲染 HTML 字符串是很常見的需求。然而&#xff0c;不正確地渲染HTML字符串可能會導致安全漏洞&#xff0c;例如跨站腳本攻擊&#xff08;XSS&#xff09;。為了確保應用的安全性&#xff0c;我們需要采取一些措施來在安全的環境下渲染…

QString常用函數介紹

此篇博客核心介紹QT中的QString類型的常用函數&#xff0c;介紹到的函數均從幫助手冊或其他博客中看到 QString 字符串類 Header: #include qmake: QT core 一、QString字符串轉換 1、QString類字符串轉換為整數 int toInt(bool *ok Q_NULLPTR, int base 10) cons…

Python 基礎 -- Tutorial(二)

5、數據結構 本章更詳細地描述了一些你已經學過的東西&#xff0c;并添加了一些新的東西。 5.1. 更多關于Lists 列表(list)數據類型有更多的方法。下面是列表對象的所有方法: list.append(x) 在列表末尾添加一項。相當于a[len(a):] [x]。 list.extend(iterable) 通過添加可…

如何使用SpringBoot 自定義轉換器

&#x1f600;前言 本篇博文是關于SpringBoot 自定義轉換器的使用&#xff0c;希望你能夠喜歡&#x1f60a; &#x1f3e0;個人主頁&#xff1a;晨犀主頁 &#x1f9d1;個人簡介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以幫助到大家&#xff0c;您的…

02-前端基礎第二天-HTML5

01-HTML標簽&#xff08;下&#xff09;導讀 目標&#xff1a; 能夠書寫表格能夠寫出無序列表能夠寫出3~4個常用input表單類型能夠寫出下拉列表表單能夠使用表單元素實現注冊頁面能夠獨立查閱W3C文檔 目錄&#xff1a; 表格標簽列表標簽表單標簽綜合案例查閱文檔 02-表格標…

Nginx搭建本地服務器,無需購買服務器即可測試vue項目打包后的效果

一.前言 本文是在windows環境&#xff08;Linux環境下其實也大同小異&#xff09;下基于Nginx實現搭建本地服務器&#xff0c;手把手教你部署vue項目。 二.Nginx入門 1&#xff09;下載安裝 進入Nginx官網下載&#xff0c;選擇stable版本下的windows版本下載即可 2&#xff09;…

Ubuntu 20.04配置靜態ip

ip配置文件 cd /etc/netplan配置 根據需求增加 # Let NetworkManager manage all devices on this system network:version: 2renderer: NetworkManager # 管理 不是必須ethernets:enp4s0: #網卡名dhcp4: no #關閉ipv4動態分配ip地址dhcp6: no #關閉ipv6動態分配…

Arrays.asList() 返回的list不能add,remove

一.Arrays.asList() 返回的list不能add,remove Arrays.asList()返回的是List,而且是一個定長的List&#xff0c;所以不能轉換為ArrayList&#xff0c;只能轉換為AbstractList 原因在于asList()方法返回的是某個數組的列表形式,返回的列表只是數組的另一個視圖,而數組本身并沒…

Wireshark 抓包過濾命令匯總

Wireshark 抓包過濾命令匯總 Wireshark 是一個強大的網絡分析工具&#xff0c;它可以幫助網絡管理員和安全專家監控和分析網絡流量。通過捕獲網絡數據包&#xff0c;Wireshark 能夠幫助我們識別網絡中的問題、瓶頸以及潛在的安全威脅。在使用 Wireshark 進行網絡數據包分析時&…

SQL Server基礎之游標

一&#xff1a;認識游標 游標是SQL Server的一種數據訪問機制&#xff0c;它允許用戶訪問單獨的數據行。用戶可以對每一行進行單獨的處理&#xff0c;從而降低系統開銷和潛在的阻隔情況&#xff0c;用戶也可以使用這些數據生成的SQL代碼并立即執行或輸出。 1.游標的概念 游標是…

DELL PowerEdge R720XD 磁盤RAID及Hot Spare熱備盤配置

一臺DELL PowerEdge R720XD服務器&#xff0c;需進行磁盤RAID及Hot Spare熱備盤配置&#xff0c;本文記錄配置過程示例。 一、設備環境 服務器型號&#xff1a;DELL PowerEdge R720XD 硬盤配置&#xff1a;800G硬盤共24塊 二、配置計劃 1、當前狀態&#xff1a;2塊盤配置RAID…

AIGC+游戲:一個被忽視的長賽道

&#xff08;圖片來源&#xff1a;Pixels&#xff09; AIGC徹底變革了游戲&#xff0c;但還不夠。 數科星球原創 作者丨苑晶 編輯丨大兔 消費還沒徹底復蘇&#xff0c;游戲卻已經出現拐點。 在游戲熱度猛增的背后&#xff0c;除了版號的利好因素外&#xff0c;AIGC技術的廣泛…