成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

每日:刪除鏈表倒數第 N 個結點

開發 前端
需要刪除鏈表中的倒數第 n 個節點,我們需要知道的就是倒數第 n+1 個節點,然后刪除刪除倒數第 n+1 節點的后繼節點即可。

[[416447]]

本文轉載自微信公眾號「三分鐘學前端」,作者sisterAn。轉載本文請聯系三分鐘學前端公眾號。

給定一個鏈表,刪除鏈表的倒數第 n 個節點,并且返回鏈表的頭結點。

示例:

  1. 給定一個鏈表: 1->2->3->4->5, 和 n = 2. 
  2. 當刪除了倒數第二個節點后,鏈表變為 1->2->3->5. 

說明:

給定的 n 保證是有效的。

進階:

你能嘗試使用一趟掃描實現嗎?

解法:快慢指針

解題思路: 需要刪除鏈表中的倒數第 n 個節點,我們需要知道的就是倒數第 n+1 個節點,然后刪除刪除倒數第 n+1 節點的后繼節點即可

步驟:

使用 2 個指針:

  • fast 快指針提前走 n+1 步
  • slow 指針指向當前距離 fast 倒數第 n 個節點, 初始為 head

然后, fast 、 slow 同步向前走,直到 fast.next 為 null

此時,fast 為最后一個節點,slow 就是倒數第 n+1 個節點,此時問題就變更為刪除鏈表中的 slow 的后繼節點

但存在一個問題,當鏈表長度為 n 時,fast 是前進不到 n+1 個節點位置的,所以此時有兩種解決思路:

  • 創建一個頭節點 preHead ,設置 preHead.next = head ,這樣就可以解決以上問題,刪除倒數第 n 個節點后,返回的 preHead.next 即可
  • 另外一種是,fast 快指針提前走 n 步后,判斷 fast.next 是否為 null ,即 fast 是否是最后一個節點,如果是,則 head 為倒數第 n 個節點,此時問題可以簡化為刪除頭節點;如果不是, fast = fast.next ,fast 再前進一步,slow 為倒數第 n+1 個節點,也解決了以上問題。

解決方案一:添加 preHead 節點

  1. const removeNthFromEnd = function(head, n) { 
  2.     let preHead = new ListNode(0) 
  3.     preHead.next = head 
  4.     let fast = preHead, slow = preHead 
  5.     // 快先走 n+1 步 
  6.     while(n--) { 
  7.         fast = fast.next 
  8.     } 
  9.     // fast、slow 一起前進 
  10.     while(fast && fast.next) { 
  11.         fast = fast.next 
  12.         slow = slow.next 
  13.     } 
  14.     slow.next = slow.next.next 
  15.     return preHead.next 
  16. }; 

解決方案二:單獨處理倒數第 n 節點

  1. const removeNthFromEnd = function(head, n) { 
  2.     let fast = head, slow = head 
  3.     // 快先走 n 步 
  4.     while(--n) { 
  5.         fast = fast.next 
  6.     } 
  7.     if(!fast.nextreturn head.next 
  8.     fast = fast.next 
  9.     // fast、slow 一起前進 
  10.     while(fast && fast.next) { 
  11.         fast = fast.next 
  12.         slow = slow.next 
  13.     } 
  14.     slow.next = slow.next.next 
  15.     return head 
  16. }; 

時間復雜度:O(n)

空間復雜度:O(1)

 

來源:https://github.com/sisterAn/JavaScript-Algorithms

 

責任編輯:武曉燕 來源: 三分鐘學前端
相關推薦

2022-01-17 09:23:02

LeetCode刪除鏈表算法

2021-04-14 10:19:18

鏈表倒數結點

2021-02-03 13:23:42

鏈表倒數結點

2020-10-19 13:27:19

鏈表倒數結點

2022-06-01 06:58:41

節點鏈表倒數

2023-04-17 07:33:11

反轉鏈表移除鏈表

2012-06-19 14:23:04

云計算中國

2012-02-17 09:45:04

網速手機

2012-02-17 09:43:13

手機網速移動互聯

2021-02-04 08:18:53

LeetCode鏈表

2012-08-10 10:53:03

云計算BSA商業軟件聯盟

2012-06-18 10:07:17

云計算實力榜

2011-08-08 10:53:55

寶德PR2510N云計算

2018-03-01 13:32:28

宏碁游戲本PC行業

2021-09-22 22:57:41

手機流量通信

2010-11-15 10:49:23

求職

2012-02-21 17:17:51

手機網速網速

2019-02-21 09:55:39

單鏈表存儲C結點

2022-11-14 14:55:05

軟件開發程序員薪資

2022-03-07 11:03:08

大數據檢測谷歌
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美日韩精品久久亚洲区 | 在线观看www高清视频 | 亚洲人一区 | 2018国产大陆天天弄 | 99re视频这里只有精品 | 日日夜夜天天 | 国产成人一区二区三区电影 | 一区二区三区国产 | 中文字幕一区二区三区四区不卡 | 99久久久99久久国产片鸭王 | 国产欧美精品一区 | 国产精品免费观看 | 亚洲欧美视频 | 国产一区二区三区视频免费观看 | 日韩成人在线视频 | www.久久.com | www亚洲一区 | 亚洲成人av | 国产激情一区二区三区 | 午夜电影福利 | 夜夜操操操 | 久操伊人 | 亚洲免费在线 | 热久久免费视频 | 日韩视频专区 | h视频在线免费 | 国产精品18久久久久久久 | 久久久xx| 国产成人在线播放 | 欧美成人精品欧美一级 | 亚洲免费视频一区 | 久久精品欧美一区二区三区不卡 | 久久久精品网站 | 亚洲视频在线观看 | 在线观看免费观看在线91 | 黄色国产大片 | 久久国内精品 | 午夜日韩视频 | 黄色大片在线播放 | 欧美一区二区三区视频 | 亚洲精品一区二区三区蜜桃久 |