給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。
示例:
給定乙個鍊錶: 1->2->3->4->5, 和 n = 2.說明:當刪除了倒數第二個節點後,鍊錶變為 1->2->3->5.
給定的 n 保證是有效的。
高階:你能嘗試使用一趟掃瞄實現嗎?
分析:看到這個問題,第一反應,先求長度,再找節點,看一下高階,有更好的解決辦法,有更巧妙的解決辦法。下面是我參考的乙個部落格,用來學習交流,發現博主寫的太好,考慮到了delete,避免的記憶體洩漏。
/** * definition for singly-linked list.
* struct listnode
* }; */
class
solution
while(q!=null)
listnode* deletenode=p->next;
p->next=deletenode->next;
delete deletenode;//
養成程式設計的好習慣,new-delete
listnode* node=emptynode->next;
delete
emptynode;
return
node;
}};
參考:
LeetCode 19 鍊錶(160)
1 如圖,鍊錶是一種非常常用的資料結構 煉表頭 指向第乙個鍊錶結點的指標 鍊錶結點 鍊錶中的每乙個元素,包括 1 當前結點的資料,2 下乙個結點的位址 鍊錶尾 不再指向其他結點的結點,其位址部分放乙個null,表示鍊錶到此結束。2 鍊錶可以動態地建立 動態地申請記憶體空間 int pint new ...
leetcode 19 分隔鍊錶
給定乙個頭結點為 root 的鍊錶,編寫乙個函式以將鍊錶分隔為 k 個連續的部分。每部分的長度應該盡可能的相等 任意兩部分的長度差距不能超過 1,也就是說可能有些部分為 null。這k個部分應該按照在鍊錶 現的順序進行輸出,並且排在前面的部分的長度應該大於或等於後面的長度。返回乙個符合上述規則的鍊錶...
Leetcode 19 刪除鍊錶的第N個節點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?兩次遍歷的演算法思路 第一遍歷從頭結點開始來計算鍊錶的長度,然後...