Python LeetCode-141. 環(huán)形鏈表(難度-簡單)(python)

LeetCode-141. 環(huán)形鏈表

1.題目描述

給定一個(gè)鏈表咽安,判斷鏈表中是否有環(huán)雇卷。

為了表示給定鏈表中的環(huán),我們使用整數(shù)pos來表示鏈表尾連接到鏈表中的位置(索引從 0 開始)崎淳。 如果 pos 是 -1柜与,則在該鏈表中沒有環(huán)。

示例1:
輸入:head = [3,2,0,-4], pos = 1
輸出:true
解釋:鏈表中有一個(gè)環(huán)悄蕾,其尾部連接到第二個(gè)節(jié)點(diǎn)票顾。

示例2:
輸入:head = [1,2], pos = 0
輸出:true
解釋:鏈表中有一個(gè)環(huán),其尾部連接到第一個(gè)節(jié)點(diǎn)帆调。

示例3:
輸入:head = [1], pos = -1
輸出:false
解釋:鏈表中沒有環(huán)奠骄。

2.分析

  • 想到使用兩個(gè)指針slowfast分別遍歷鏈表,fast指針遍歷的速度是slow的兩倍番刊,如果兩個(gè)指針能重疊含鳞,就說明這個(gè)鏈表是有環(huán)的。
  • 注意點(diǎn)如何判斷重疊芹务?is是python中判斷兩個(gè)對(duì)象是否是同一個(gè)對(duì)象(內(nèi)存地址一致)蝉绷,所以可以用is來判斷slowfast指向的是不是同一個(gè)節(jié)點(diǎn)。
  • 注意邊界條件的排除

3.解答

class Solution(object):
    def hasCycle(self, head):
        """
        :type head: ListNode
        :rtype: bool
        可以考慮用兩個(gè)指針枣抱,slow和fast熔吗,當(dāng)這兩個(gè)指針重疊之后,則表示這個(gè)鏈表有環(huán)
        """
        if not head or not head.next:
            return False
        
        slow,fast = head,head
        
        while slow and fast:  # 如果跳出這個(gè)循環(huán)佳晶,說明鏈表有盡頭桅狠,無環(huán)
            try:  # 用來規(guī)避fast.next 就是none這個(gè)情況
                slow = slow.next
                fast = fast.next.next
                
                if slow is fast:  # 這一步是關(guān)鍵,可以通過is來判斷節(jié)點(diǎn)是不是在同一個(gè)內(nèi)存地址里(也就是是否是同一個(gè))
                    return True
                
            except:
                return False
            
        return False
  • 或者直接這么寫
class Solution(object):
    def hasCycle(self, head):
        """
        :type head: ListNode
        :rtype: bool
        """
        fast = slow = head
        while fast and fast.next:
            slow = slow.next
            fast = fast.next.next
            if slow is fast:
                return True
        else:
            return False
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市垂攘,隨后出現(xiàn)的幾起案子维雇,更是在濱河造成了極大的恐慌,老刑警劉巖晒他,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吱型,死亡現(xiàn)場離奇詭異,居然都是意外死亡陨仅,警方通過查閱死者的電腦和手機(jī)津滞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灼伤,“玉大人触徐,你說我怎么就攤上這事『模” “怎么了撞鹉?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長颖侄。 經(jīng)常有香客問我鸟雏,道長,這世上最難降的妖魔是什么览祖? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任孝鹊,我火速辦了婚禮,結(jié)果婚禮上展蒂,老公的妹妹穿的比我還像新娘又活。我一直安慰自己,他們只是感情好锰悼,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布柳骄。 她就那樣靜靜地躺著,像睡著了一般松捉。 火紅的嫁衣襯著肌膚如雪夹界。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天隘世,我揣著相機(jī)與錄音可柿,去河邊找鬼。 笑死丙者,一個(gè)胖子當(dāng)著我的面吹牛复斥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播械媒,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼目锭,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼评汰!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起痢虹,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤被去,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后奖唯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體惨缆,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年丰捷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了坯墨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡病往,死狀恐怖捣染,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情停巷,我是刑警寧澤耍攘,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站叠穆,受9級(jí)特大地震影響少漆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜硼被,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望渗磅。 院中可真熱鬧嚷硫,春花似錦、人聲如沸始鱼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽医清。三九已至起暮,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間会烙,已是汗流浹背负懦。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留柏腻,地道東北人纸厉。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像五嫂,于是被迫代替她去往敵國和親颗品。 傳聞我的和親對(duì)象是個(gè)殘疾皇子肯尺,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354