前言
一、題目描述
二、解題思路總結
簡單記錄一下答案和思路。
給你乙個鍊錶,刪除鍊錶的倒數第 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]
預先指標指向頭結點是為了方便定位鍊錶
頭結點既是第乙個結點,也代表了整個鍊錶
在鍊錶問題,陣列問題,多用到了雙指標
/**
* definition for singly-linked list.
* public class listnode
* }*/class
solution
//start和end同時向前移動,直到start移動到最後,此時end正好處於倒數第n+1個
while
(start.next != null)
//刪除第n個
end.next = end.next.next;
//由於head可能是第n個要刪除的點,所以返回pre.next
return pre.next;
}}
1.注意**中,end和start之間差了n+1個.所以當start.next == null退出while執行刪除結點操作的時候,end處在倒數第n+1個的位置,end.next是倒數第n個結點. 19 刪除鍊錶的倒數第 N 個結點
給你乙個鍊錶,刪除鍊錶的倒數第 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 鍊錶中結點的數目為 sz 1...
19 刪除鍊錶的倒數第 N 個結點
題目大意 就是刪除其中的倒數第k個節點!思路 自己想的辦法是使用快慢指標來解決的,然後使用乙個額外的指標來記錄當前需要被刪除的節點的前乙個節點,但是實際上操作難度增加啦!只需要讓其中的fast指標少走一步即可!這樣的話slow指標當好就是到達了其中的需要被刪除的前乙個節點。如下 definition...
19 刪除鍊錶的倒數第 N 個結點
題目 思路 一道經典的快慢指標問題,快指標先走n步,然後一起走,快指標走到最後乙個節點,慢指標就到了要被刪除的節點的前乙個節點。definition for singly linked list.class listnode def init self,val 0,next none self.va...