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

每日:刪除鏈表倒數(shù)第 N 個(gè)結(jié)點(diǎn)

開發(fā) 前端
需要?jiǎng)h除鏈表中的倒數(shù)第 n 個(gè)節(jié)點(diǎn),我們需要知道的就是倒數(shù)第 n+1 個(gè)節(jié)點(diǎn),然后刪除刪除倒數(shù)第 n+1 節(jié)點(diǎn)的后繼節(jié)點(diǎn)即可。

[[416447]]

本文轉(zhuǎn)載自微信公眾號(hào)「三分鐘學(xué)前端」,作者sisterAn。轉(zhuǎn)載本文請(qǐng)聯(lián)系三分鐘學(xué)前端公眾號(hào)。

給定一個(gè)鏈表,刪除鏈表的倒數(shù)第 n 個(gè)節(jié)點(diǎn),并且返回鏈表的頭結(jié)點(diǎn)。

示例:

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

說明:

給定的 n 保證是有效的。

進(jìn)階:

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

解法:快慢指針

解題思路: 需要?jiǎng)h除鏈表中的倒數(shù)第 n 個(gè)節(jié)點(diǎn),我們需要知道的就是倒數(shù)第 n+1 個(gè)節(jié)點(diǎn),然后刪除刪除倒數(shù)第 n+1 節(jié)點(diǎn)的后繼節(jié)點(diǎn)即可

步驟:

使用 2 個(gè)指針:

  • fast 快指針提前走 n+1 步
  • slow 指針指向當(dāng)前距離 fast 倒數(shù)第 n 個(gè)節(jié)點(diǎn), 初始為 head

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

此時(shí),fast 為最后一個(gè)節(jié)點(diǎn),slow 就是倒數(shù)第 n+1 個(gè)節(jié)點(diǎn),此時(shí)問題就變更為刪除鏈表中的 slow 的后繼節(jié)點(diǎn)

但存在一個(gè)問題,當(dāng)鏈表長(zhǎng)度為 n 時(shí),fast 是前進(jìn)不到 n+1 個(gè)節(jié)點(diǎn)位置的,所以此時(shí)有兩種解決思路:

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

解決方案一:添加 preHead 節(jié)點(diǎn)

  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 一起前進(jìn) 
  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. }; 

解決方案二:?jiǎn)为?dú)處理倒數(shù)第 n 節(jié)點(diǎ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 一起前進(jìn) 
  10.     while(fast && fast.next) { 
  11.         fast = fast.next 
  12.         slow = slow.next 
  13.     } 
  14.     slow.next = slow.next.next 
  15.     return head 
  16. }; 

時(shí)間復(fù)雜度:O(n)

空間復(fù)雜度:O(1)

 

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

 

責(zé)任編輯:武曉燕 來源: 三分鐘學(xué)前端
相關(guān)推薦

2022-01-17 09:23:02

LeetCode刪除鏈表算法

2021-04-14 10:19:18

鏈表倒數(shù)結(jié)點(diǎn)

2021-02-03 13:23:42

鏈表倒數(shù)結(jié)點(diǎn)

2020-10-19 13:27:19

鏈表倒數(shù)結(jié)點(diǎn)

2022-06-01 06:58:41

節(jié)點(diǎn)鏈表倒數(shù)

2023-04-17 07:33:11

反轉(zhuǎn)鏈表移除鏈表

2012-06-19 14:23:04

云計(jì)算中國(guó)

2012-02-17 09:45:04

網(wǎng)速手機(jī)

2012-02-17 09:43:13

手機(jī)網(wǎng)速移動(dòng)互聯(lián)

2021-02-04 08:18:53

LeetCode鏈表

2012-08-10 10:53:03

云計(jì)算BSA商業(yè)軟件聯(lián)盟

2012-06-18 10:07:17

云計(jì)算實(shí)力榜

2011-08-08 10:53:55

寶德PR2510N云計(jì)算

2010-11-15 10:49:23

求職

2018-03-01 13:32:28

宏碁游戲本PC行業(yè)

2021-09-22 22:57:41

手機(jī)流量通信

2019-02-21 09:55:39

單鏈表存儲(chǔ)C結(jié)點(diǎn)

2012-02-21 17:17:51

手機(jī)網(wǎng)速網(wǎng)速

2022-11-14 14:55:05

軟件開發(fā)程序員薪資

2021-08-26 10:07:25

數(shù)組前端元素
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 成年网站在线观看 | 四虎精品在线 | 国产欧美日韩精品一区 | 中文字幕亚洲无线 | 五月婷六月丁香 | 欧美国产日韩一区 | 亚洲精品国产a久久久久久 午夜影院网站 | 国产午夜精品久久 | av一级久久| 免费视频色| 极品销魂美女一区二区 | 国产一区二区电影网 | 狠狠操狠狠操 | 久久免费视频网 | 99热都是精品 | 亚洲第一天堂无码专区 | 精品国产乱码久久久久久蜜柚 | 欧美日韩三区 | 国产人成精品一区二区三 | 日韩黄色小视频 | 亚洲国产精品一区二区第一页 | 久久精品黄色 | 日韩av大片免费看 | 一区二区三区免费 | 色呦呦网站 | 日韩精品一区二区三区在线播放 | 五月天激情综合网 | 国产精品精品视频一区二区三区 | 欧美日韩福利视频 | www.日韩| 365夜爽爽欧美性午夜免费视频 | 欧美亚洲视频 | 精品国产不卡一区二区三区 | 欧美视频一区二区三区 | 日日干日日操 | 91不卡在线 | 国产伦精品一区二区三区高清 | 日韩一级黄色片 | 国产一区二区不卡 | 91精品国产色综合久久 | 国产美女久久 |