国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

LeetCode 19:刪除鏈表的倒數(shù)第N個(gè)節(jié)點(diǎn) Remove Nth Node From End

周國輝 / 3027人閱讀

摘要:給定一個(gè)鏈表,刪除鏈表的倒數(shù)第個(gè)節(jié)點(diǎn),并且返回鏈表的頭結(jié)點(diǎn)。示例給定一個(gè)鏈表和當(dāng)刪除了倒數(shù)第二個(gè)節(jié)點(diǎn)后,鏈表變?yōu)檎f明給定的保證是有效的。值得注意的的是,指向應(yīng)當(dāng)刪除的節(jié)點(diǎn)并無法刪除它,應(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 end of list and return its head.

示例:

給定一個(gè)鏈表: 1->2->3->4->5, 和 n = 2.

當(dāng)刪除了倒數(shù)第二個(gè)節(jié)點(diǎn)后,鏈表變?yōu)?1->2->3->5.

說明:

給定的 n 保證是有效的。

Note:

Given n will always be valid.

進(jìn)階:

你能嘗試使用一趟掃描實(shí)現(xiàn)嗎?

Follow up:

Could you do this in one pass?

解題思路:

這道題很有意思,雖然很簡單,但是很考驗(yàn)一個(gè)人的思維。最先想到的方法就是遍歷整個(gè)鏈表得到長度,減去 n 得到實(shí)際應(yīng)該刪除的節(jié)點(diǎn)的位置了。然而由于單鏈表刪除操作的特殊性,得到位置之后仍然需要再遍歷一次來刪除該節(jié)點(diǎn)。

進(jìn)階要求是一次遍歷完成該題,想想是否有好的方法?

假設(shè)鏈表長度為 L ,定義一個(gè)指針先走 n 步,此時(shí)該指針還剩下 L-n 個(gè)節(jié)點(diǎn)即可完成該鏈表的遍歷。而第 L-n 個(gè)節(jié)點(diǎn)不就是題目要求的的要?jiǎng)h除的倒數(shù)第 n 個(gè)節(jié)點(diǎn)嗎?這時(shí)候只需要再定義一個(gè)指針,讓它與之前的指針同時(shí)遍歷,當(dāng)?shù)谝粋€(gè)指針遇到空節(jié)點(diǎn)時(shí)(null 節(jié)點(diǎn)),該指針即指向刪除的節(jié)點(diǎn)。

值得注意的的是,指向應(yīng)當(dāng)刪除的節(jié)點(diǎn)并無法刪除它,應(yīng)當(dāng)指向該刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)。

Java:
class Solution {
    public ListNode removeNthFromEnd(ListNode head, int n) {
        ListNode curA = head;
        ListNode curB = head;
        for (int i = 0; i < n; i++) curA = curA.next;
        if (curA == null) {//如果走了n步之后該節(jié)點(diǎn)指向空節(jié)點(diǎn),則該鏈表只有一個(gè)節(jié)點(diǎn)
            head = head.next;
            return head;
        }
        while (curA.next != null) {//當(dāng)?shù)谝粋€(gè)指針的下一個(gè)節(jié)點(diǎn)為空時(shí),該指針指向最后一個(gè)節(jié)點(diǎn),而指針curB 走了L-n-1步,即指向該刪除節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)
            curA = curA.next;
            curB = curB.next;
        }
        curB.next = curB.next.next;//將本來指向應(yīng)當(dāng)刪除節(jié)點(diǎn)地址指向應(yīng)當(dāng)刪除節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)的地址
        return head;
    }
}
Python3:
class Solution:
    def removeNthFromEnd(self, head: ListNode, n: int) -> ListNode:
        curA,curB=head,head
        for i in range(n):
            curA=curA.next
        if not curA:
            head=head.next
            return head
        while(curA.next):
            curA=curA.next
            curB=curB.next
        curB.next=curB.next.next

歡迎關(guān)注公.眾號(hào)一起刷題:愛寫B(tài)ug

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/45232.html

相關(guān)文章

  • LeetCode 19刪除表的倒數(shù)N個(gè)節(jié)點(diǎn) Remove Nth Node From End

    摘要:給定一個(gè)鏈表,刪除鏈表的倒數(shù)第個(gè)節(jié)點(diǎn),并且返回鏈表的頭結(jié)點(diǎn)。示例給定一個(gè)鏈表和當(dāng)刪除了倒數(shù)第二個(gè)節(jié)點(diǎn)后,鏈表變?yōu)檎f明給定的保證是有效的。值得注意的的是,指向應(yīng)當(dāng)刪除的節(jié)點(diǎn)并無法刪除它,應(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 ...

    qiangdada 評論0 收藏0
  • leetcode-019-刪除鏈表倒數(shù)N個(gè)結(jié)點(diǎn)(Remove Nth Node From End

    摘要:第題給定一個(gè)鏈表,刪除鏈表的倒數(shù)第個(gè)節(jié)點(diǎn),并且返回鏈表的頭結(jié)點(diǎn)。因?yàn)?,若有一個(gè)真正的頭結(jié)點(diǎn),則所有的元素處理方式都一樣。但以第一個(gè)有效元素為頭結(jié)點(diǎn),就導(dǎo)致算法的不一致,需要單獨(dú)處理第一個(gè)有效元素頭結(jié)點(diǎn)。 leetcode第19題 Given a linked list, remove the n-th node from the end of list and return its h...

    brianway 評論0 收藏0
  • leetcode19 Remove Nth Node From End of List 從鏈表中移除

    摘要:雖然時(shí)間復(fù)雜度還是但是顯然我們可以再一次遍歷中完成這個(gè)任務(wù)?,F(xiàn)在跳出下標(biāo)的思路,從另一個(gè)角度分析??炻?jié)點(diǎn)之間的距離始終是。當(dāng)快節(jié)點(diǎn)到達(dá)終點(diǎn)時(shí),此時(shí)的慢節(jié)點(diǎn)就是所要?jiǎng)h去的節(jié)點(diǎn)。 題目要求 Given a linked list, remove the nth node from the end of list and return its head. For example, ...

    YPHP 評論0 收藏0
  • leetcode 19 Remove Nth Node From End of List

    摘要:題目詳情題目要求輸入一個(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...

    chaosx110 評論0 收藏0
  • leetcode 19. Remove Nth Node From End of List

    摘要:這題也是攜程年暑假實(shí)習(xí)生的筆試題。最開始想的解法就是,先循環(huán)求鏈表的長度,再用長度,再循環(huán)一次就能移除該結(jié)點(diǎn)。結(jié)果對的,但是超時(shí)了。再返回整個(gè)鏈表。 Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1->2...

    bigdevil_s 評論0 收藏0

發(fā)表評論

0條評論

周國輝

|高級講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<