日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 141. 环形链表 简单难度

發布時間:2025/5/22 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 141. 环形链表 简单难度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

**

141. 環形鏈表

**
給定一個鏈表,判斷鏈表中是否有環。

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

解題思路(兩種方法):
方法一
用集合set以及set.find()方法。
**步驟一:**遍歷鏈表時用find方法判斷節點是否在set里,如果在就停止,并且這個節點就是環形的起點。
**步驟二:**如果不在,把節點插入到set里。

這個方法簡單,但是空間復雜度并不是O(1),會浪費額外的空間。

接下來看看
方法二:用快慢指針遍歷指針(這個方法的原理就跟我們跑步一樣,如果是環形,就是跑操場,快的人總會繞過一圈追到慢的人;而如果是直線跑,那么快的人跟慢的人距離只會越拉越大)

步驟一:建立快慢指針指向鏈表表頭
步驟二:判斷指針目前的節點和指向的下個節點的值是否為null,如果不為空,就讓快指針走兩步。滿指針走一步。
步驟三:判斷快指針和滿指針是否相等,如果相等就是存在環形。如果不等就繼續回步驟二;

這個方法就是省空間,只要兩個指針就搞定了。空間復雜度是O(1);
方法一:代碼很簡單,就不寫了。
方法二:代碼如下:

class Solution { public:bool hasCycle(ListNode *head) {//快慢指針ListNode *fast=head;ListNode *slow=head;while(fast!=NULL&&fast->next!=NULL){fast=fast->next->next;slow=slow->next;if(fast==slow){return true;}}return false;} };

問題:如果是要返回環形的起點,那么我們應該改快慢指針呢?
我們來試跑一下吧

總結

以上是生活随笔為你收集整理的LeetCode 141. 环形链表 简单难度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。