欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

LeetCode題解之如何刪除鏈表倒數(shù)第n個結(jié)點

這篇文章主要講解了“LeetCode題解之如何刪除鏈表倒數(shù)第n個結(jié)點”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“LeetCode題解之如何刪除鏈表倒數(shù)第n個結(jié)點”吧!

創(chuàng)新互聯(lián)建站主要從事網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)石鼓,十多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18980820575

題目:刪除鏈表倒數(shù)第n個結(jié)點

給你一個鏈表,刪除鏈表的倒數(shù)第 n 個結(jié)點,并且返回鏈表的頭結(jié)點。

進階:你能嘗試使用一趟掃描實現(xiàn)嗎?

示例 1:輸入:head = [1,2,3,4,5], n = 2 輸出:[1,2,3,5]

示例 2:輸入:head = [1], n = 1 輸出:[]

示例 3:輸入:head = [1,2], n = 1 輸出:[1]

解法一

首先容易想到的辦法就是想數(shù)組一樣,遍歷鏈表找到那個要被刪除的結(jié)點,所以先解決兩個問題:

1、獲取鏈表的總長度

public int getLength(ListNode head){         int n=0;         while(head!=null){             n++;             head=head.next;         }         return n;     }

2、找到結(jié)點之后,怎么刪除。

其實就是把next指向跨過去要刪除的結(jié)點就行了。

tempNode.next=tempNode.next.next;

但是,上述這個方法是刪除的tempNode.next結(jié)點,如果我們要刪除tempNode本身這個結(jié)點,那么就要把一開始的結(jié)點提前到第一個結(jié)點之前。

比如我們要刪除鏈表的第一個結(jié)點,如果你本身的指針就指向第一個結(jié)點,那么通過上面這個刪除方法就永遠刪除不了第一個結(jié)點了。

所以要把指針提前到第一個結(jié)點之前。

所以,綜上所述,我們得出以下解法:

/**  * Definition for singly-linked list.  * public class ListNode {  *     int val;  *     ListNode next;  *     ListNode() {}  *     ListNode(int val) { this.val = val; }  *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }  * }  */ class Solution {     public ListNode removeNthFromEnd(ListNode head, int n) {         int length=getLength(head);         //新建一個新的鏈表結(jié)點指向head頭結(jié)點,也就是上面要注意的特殊情況         ListNode lastNode=new ListNode(0,head);         ListNode tempNode=lastNode;         for(int i=0;i<length-n;i++){             tempNode=tempNode.next;         }         tempNode.next=tempNode.next.next;         return lastNode.next;     }      public int getLength(ListNode head){         int n=0;         while(head!=null){             n++;             head=head.next;         }         return n;     } }

時間復(fù)雜度

用到了遍歷、時間復(fù)雜度為O(n)

空間復(fù)雜度

只用到幾個單獨的鏈表結(jié)點,所以空間復(fù)雜度為O(1)

解法二

再想想,可不可以不計算鏈表長度呢?也就是題目上所說的進階解法,用一次掃描。

再鏈表中,有一種常用的方法,叫做快慢指針,意思就是用到兩個速度不同的指針解決一些問題。

比如這個題中,我們使用一個快指針一個慢指針,并且讓快指針快n個結(jié)點,然后兩個指針一直往后移動。當快指針移動到結(jié)尾,那么慢指針的位置就是我們要刪除的結(jié)點了。

當然,這里也要考慮到當前結(jié)點被刪除的情況,所以要把開始結(jié)點提前到鏈表之前。public ListNode removeNthFromEnd(ListNode head, int n) {  //提前鏈表         ListNode LastNode=new ListNode(0,head);         ListNode FirstNode=LastNode;         ListNode SecondNode=head;         for(int i=0;i<n;i++){             SecondNode=SecondNode.next;         }          while(SecondNode!=null){             FirstNode=FirstNode.next;             SecondNode=SecondNode.next;         }          FirstNode.next=FirstNode.next.next;                  return LastNode.next;     }

感謝各位的閱讀,以上就是“LeetCode題解之如何刪除鏈表倒數(shù)第n個結(jié)點”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對LeetCode題解之如何刪除鏈表倒數(shù)第n個結(jié)點這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

文章題目:LeetCode題解之如何刪除鏈表倒數(shù)第n個結(jié)點
文章URL:http://aaarwkj.com/article14/iidoge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google網(wǎng)頁設(shè)計公司、域名注冊、手機網(wǎng)站建設(shè)網(wǎng)站排名、用戶體驗

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
午夜男女激情在线观看| 国产午夜在线影院一区二区| 国产精品久久久久大屁股精品性色| 国产精品国产不卡在线| 97人妻人人揉人人澡人人学生| 国一区二区三区四区av| 国产欧美激情一区二区| 亚洲国产精品一区二区av| 国产精品三级一区二区三区| 亚洲各类熟女们中文字幕| 尤物欧美精品一区二区三区| 日韩精品一区二区三区高清| av中文字幕国产精品| 亚洲av色福免费网站| 九九六热这里只有精品| 日本免费一区二区三区四区视频| 欧美亚洲国产精品综合在线| 福利av一区二区三区| 国产国产精品人在线观看| 亚洲一区二区三区伊人| 男人天堂一区二区av| 日本人妻风俗店中文字幕| 婷婷不卡中文字幕三区| 亚洲成人高清av在线| 久久国内午夜福利直播| 国产亚洲一区二区高清| 日韩精品毛片在线看| 香蕉夜夜草草久久亚洲香蕉| 亚洲中文字幕乱码丝袜在线精品 | 免费在线观看日韩av大片| 一区二区日韩欧美国产| 日韩成人中文字幕电影| 国产一区二区毛多内射| 成人夜间视频在线观看| 成人性生活黄色三级视频| 国产原创av超爽剧情系列| 天天精品国产av九九久久久| 一区二区三区乱码国产 | 三级日本午夜在线观看| 日韩专区亚洲专区欧美专区 | 久久国产精品亚洲欧美|