LeetCode 141. 环形链表 简单难度
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 141. 环形链表 简单难度
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
**
141. 環形鏈表
**
給定一個鏈表,判斷鏈表中是否有環。
如果鏈表中存在環,則返回 true 。 否則,返回 false 。
解題思路(兩種方法):
方法一:用集合set以及set.find()方法。
**步驟一:**遍歷鏈表時用find方法判斷節點是否在set里,如果在就停止,并且這個節點就是環形的起點。
**步驟二:**如果不在,把節點插入到set里。
這個方法簡單,但是空間復雜度并不是O(1),會浪費額外的空間。
接下來看看
方法二:用快慢指針遍歷指針(這個方法的原理就跟我們跑步一樣,如果是環形,就是跑操場,快的人總會繞過一圈追到慢的人;而如果是直線跑,那么快的人跟慢的人距離只會越拉越大)
步驟一:建立快慢指針指向鏈表表頭
步驟二:判斷指針目前的節點和指向的下個節點的值是否為null,如果不為空,就讓快指針走兩步。滿指針走一步。
步驟三:判斷快指針和滿指針是否相等,如果相等就是存在環形。如果不等就繼續回步驟二;
這個方法就是省空間,只要兩個指針就搞定了。空間復雜度是O(1);
方法一:代碼很簡單,就不寫了。
方法二:代碼如下:
問題:如果是要返回環形的起點,那么我們應該改快慢指針呢?
我們來試跑一下吧
總結
以上是生活随笔為你收集整理的LeetCode 141. 环形链表 简单难度的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: leetcode 160 简单难度
- 下一篇: LeetCode 86. 分隔链表 中