代碼隨想錄算法訓練營第四天|24. 兩兩交換鏈表中的節(jié)點叶眉、142.環(huán)形鏈表II 面試題 02.07. 鏈表相交址儒、 19.刪除鏈表的倒數(shù)第N個節(jié)點 、

24. 兩兩交換鏈表中的節(jié)點 - 力扣(LeetCode)

模擬題衅疙,注意保存好中間值

class Solution:
    def swapPairs(self, head: Optional[ListNode]) -> Optional[ListNode]:
        dummy_head = ListNode(next=head)
        cur = dummy_head
        while cur.next is not None and cur.next.next is not None:
            temp1 = cur.next
            temp2 = cur.next.next.next

            cur.next = cur.next.next
            cur.next.next = temp1
            temp1.next = temp2
            
            cur = cur.next.next
        return dummy_head.next

19. 刪除鏈表的倒數(shù)第 N 個結(jié)點 - 力扣(LeetCode)

解題思路

  • 鏈表不像數(shù)組可以直接用下標莲趣,只能依靠指針一個個往下。
  • 雙指針解法饱溢,快慢指針同時指向虛擬頭節(jié)點喧伞,快指針先走n步,然后快慢指針一起往前,直到快指針指向最后一個節(jié)點絮识,此時慢指針指向的節(jié)點的next就是要刪除的
class Solution:
    def removeNthFromEnd(self, head: Optional[ListNode], n: int) -> Optional[ListNode]:
        dummy_head = ListNode(next=head)
        slow, fast  = dummy_head, dummy_head

        for i in range(n):
            fast = fast.next #先讓fast移動n個位置

        while fast.next is not None:
            slow = slow.next # slow.next指向的就是倒數(shù)n個
            fast = fast.next #當fast.next移動到鏈表最后一個

        slow.next= slow.next.next

        return dummy_head.next
  • 因為用了虛擬頭節(jié)點绿聘,所以最后慢指針指向的是目標刪除節(jié)點的前一個

面試題 02.07. 鏈表相交 - 力扣(LeetCode)

class Solution:
    def getIntersectionNode(self, headA: ListNode, headB: ListNode) -> ListNode:

        cur = headA
        n1 = 0
        while cur:
            cur = cur.next
            n1 += 1

        cur = headB
        n2 = 0
        while cur:
            cur = cur.next
            n2 += 1
        
        if n1 > n2:
            cur1 = headA #1長2短
            cur2 = headB
        else:
            cur1 = headB
            cur2 = headA



        for i in range(abs(n1-n2)):
            cur1 = cur1.next

        while cur1 :
            if cur1 == cur2:
                return cur1
            cur1 = cur1.next
            cur2 = cur2.next
        return None
  • 注意邊界和計數(shù);cur=cur.next是移動一次次舌,count要加上1

142. 環(huán)形鏈表 II - 力扣(LeetCode)

解題思路

  • 雙指針,快指針走兩步兽愤,慢指針走一步彼念,若相遇,一定是在環(huán)內(nèi)浅萧,且慢指針一定沒走滿一圈
  • 找到相遇點之后逐沙,設(shè)置兩個新指針,一個從head出發(fā)洼畅,一個從相遇點出發(fā)吩案,相遇時的節(jié)點就是環(huán)入口(數(shù)學證明見代碼隨想錄 (programmercarl.com)
class Solution:
    def detectCycle(self, head: Optional[ListNode]) -> Optional[ListNode]:
        fast = slow = head
        while fast is not None and fast.next is not None:
            fast = fast.next.next #快指針兩步一走
            slow = slow.next # 慢指針一步一走,若相遇帝簇,必有環(huán)徘郭,且在環(huán)內(nèi)相遇

            if fast == slow: #相遇點
                index1 = head #新雙指針,從頭出發(fā)
                index2 = fast # 從相遇點出發(fā)

                while index1 != index2:
                    index1 = index1.next
                    index2 = index2.next

                return index1 #環(huán)起點

        return None
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丧肴,一起剝皮案震驚了整個濱河市残揉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌芋浮,老刑警劉巖抱环,帶你破解...
    沈念sama閱讀 217,542評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異纸巷,居然都是意外死亡镇草,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,822評論 3 394
  • 文/潘曉璐 我一進店門瘤旨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來梯啤,“玉大人,你說我怎么就攤上這事裆站√醣伲” “怎么了?”我有些...
    開封第一講書人閱讀 163,912評論 0 354
  • 文/不壞的土叔 我叫張陵宏胯,是天一觀的道長羽嫡。 經(jīng)常有香客問我,道長肩袍,這世上最難降的妖魔是什么杭棵? 我笑而不...
    開封第一講書人閱讀 58,449評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上魂爪,老公的妹妹穿的比我還像新娘先舷。我一直安慰自己,他們只是感情好滓侍,可當我...
    茶點故事閱讀 67,500評論 6 392
  • 文/花漫 我一把揭開白布蒋川。 她就那樣靜靜地躺著,像睡著了一般撩笆。 火紅的嫁衣襯著肌膚如雪捺球。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,370評論 1 302
  • 那天夕冲,我揣著相機與錄音氮兵,去河邊找鬼。 笑死歹鱼,一個胖子當著我的面吹牛泣栈,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弥姻,決...
    沈念sama閱讀 40,193評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼南片,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蚁阳?” 一聲冷哼從身側(cè)響起铃绒,我...
    開封第一講書人閱讀 39,074評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎螺捐,沒想到半個月后颠悬,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,505評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡定血,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,722評論 3 335
  • 正文 我和宋清朗相戀三年赔癌,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片澜沟。...
    茶點故事閱讀 39,841評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡灾票,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出茫虽,到底是詐尸還是另有隱情刊苍,我是刑警寧澤,帶...
    沈念sama閱讀 35,569評論 5 345
  • 正文 年R本政府宣布濒析,位于F島的核電站正什,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏号杏。R本人自食惡果不足惜婴氮,卻給世界環(huán)境...
    茶點故事閱讀 41,168評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧主经,春花似錦荣暮、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,783評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惠遏,卻和暖如春迷扇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背爽哎。 一陣腳步聲響...
    開封第一講書人閱讀 32,918評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留器一,地道東北人课锌。 一個月前我還...
    沈念sama閱讀 47,962評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像祈秕,于是被迫代替她去往敵國和親渺贤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,781評論 2 354

推薦閱讀更多精彩內(nèi)容