Problem
Given a linked list, remove the nth node from the end of list and return its head.
ExampleGiven linked list: 1->2->3->4->5->null, and n = 2.
After removing the second node from the end, the linked list becomes 1->2->3->5->null.
ChallengeCan you do it without getting the length of the linked list?
Note首先建立dummy結(jié)點(diǎn)指向head,復(fù)制鏈表。
然后建立快慢指針結(jié)點(diǎn)fast、slow,讓fast比slow先走n個(gè)結(jié)點(diǎn),再讓fast和slow一起走,直到fast到達(dá)鏈表最后一個(gè)結(jié)點(diǎn)。由于fast比slow快n個(gè)結(jié)點(diǎn),所以slow正好在鏈表倒數(shù)第n+1個(gè)結(jié)點(diǎn)。
最后讓slow指向slow.next.next,就刪除了原先的slow.next———倒數(shù)第n個(gè)結(jié)點(diǎn)。
返回dummy.next,結(jié)束。
class Solution { public ListNode removeNthFromEnd(ListNode head, int n) { if (head == null || n <= 0) return head; ListNode dummy = new ListNode(0); dummy.next = head; ListNode slow = dummy, fast = dummy; while (n-- != 0) { fast = fast.next; } while (fast.next != null) { slow = slow.next; fast = fast.next; } slow.next = slow.next.next; return dummy.next; } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/65667.html
摘要:首先建立按時(shí)間戳從大到小排列的,找到中的,出其中在中存在的,把每一個(gè)的推特鏈表放入,再?gòu)闹腥☆^十條推特的放入結(jié)果數(shù)組。 Design Twitter Note 建立兩個(gè)HashMap,一個(gè)存user,一個(gè)存tweets。以及整型的時(shí)間戳timestamp。user的k-v pair是userId-follower_set,tweets的k-v pair是userId-tweets_li...
摘要:給定一個(gè)鏈表,刪除鏈表的倒數(shù)第個(gè)節(jié)點(diǎn),并且返回鏈表的頭結(jié)點(diǎn)。示例給定一個(gè)鏈表和當(dāng)刪除了倒數(shù)第二個(gè)節(jié)點(diǎn)后,鏈表變?yōu)檎f(shuō)明給定的保證是有效的。值得注意的的是,指向應(yīng)當(dāng)刪除的節(jié)點(diǎn)并無(wú)法刪除它,應(yīng)當(dāng)指向該刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)。 給定一個(gè)鏈表,刪除鏈表的倒數(shù)第 n 個(gè)節(jié)點(diǎn),并且返回鏈表的頭結(jié)點(diǎn)。 Given a linked list, remove the n-th node from the ...
摘要:給定一個(gè)鏈表,刪除鏈表的倒數(shù)第個(gè)節(jié)點(diǎn),并且返回鏈表的頭結(jié)點(diǎn)。示例給定一個(gè)鏈表和當(dāng)刪除了倒數(shù)第二個(gè)節(jié)點(diǎn)后,鏈表變?yōu)檎f(shuō)明給定的保證是有效的。值得注意的的是,指向應(yīng)當(dāng)刪除的節(jié)點(diǎn)并無(wú)法刪除它,應(yīng)當(dāng)指向該刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)。 給定一個(gè)鏈表,刪除鏈表的倒數(shù)第 n 個(gè)節(jié)點(diǎn),并且返回鏈表的頭結(jié)點(diǎn)。 Given a linked list, remove the n-th node from the ...
摘要:先用快指針向前走步,這樣快指針就領(lǐng)先慢指針步了,然后快慢指針一起走,當(dāng)快指針到盡頭時(shí),慢指針就是倒數(shù)第個(gè)。注意因?yàn)橛锌赡軇h除頭節(jié)點(diǎn),我們需要一個(gè)代碼快指針先走步從開始慢指針和快指針一起走刪除當(dāng)前的下一個(gè)節(jié)點(diǎn) Remove Nth Node From End of List 最新更新的解法和思路:https://yanjia.me/zh/2018/11/... Given a link...
摘要:題目詳情題目要求輸入一個(gè)和一個(gè)數(shù)字。要求我們返回刪掉了倒數(shù)第個(gè)節(jié)點(diǎn)的鏈表。想法求倒數(shù)第個(gè)節(jié)點(diǎn),我們將這個(gè)問題轉(zhuǎn)化一下。我們聲明兩個(gè)指針和,讓和指向的節(jié)點(diǎn)距離差保持為。解法使點(diǎn)和點(diǎn)的差距為同時(shí)移動(dòng)和使得到達(dá)的末尾刪除倒數(shù)第個(gè)節(jié)點(diǎn) 題目詳情 Given a linked list, remove the nth node from the end of list and return it...
閱讀 1137·2023-04-26 00:12
閱讀 3284·2021-11-17 09:33
閱讀 1072·2021-09-04 16:45
閱讀 1203·2021-09-02 15:40
閱讀 2189·2019-08-30 15:56
閱讀 2976·2019-08-30 15:53
閱讀 3560·2019-08-30 11:23
閱讀 1941·2019-08-29 13:54