給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。
示例:
給定乙個鍊錶:1->2->3->4->5, 和n = 2.說明:當刪除了倒數第二個節點後,鍊錶變為1->2->3->5.
給定的 n 保證是有效的。
高階:
你能嘗試使用一趟掃瞄實現嗎?
首先判斷頭節點是否為空,如果為空則返回null,不為空再往後進行。由於刪除倒數第n個節點,所以如果n等於鍊錶的長度的話,那麼把頭節點向後移動n次,將恰好為null,這種情況下,刪除的就是頭節點,所以返回頭節點的next節點即可;如果頭節點向後移動n次後不為null,則說明要刪除的不是頭節點,這時del指向的是頭節點,所以進入迴圈:如果cur->next不為空,就同時向後移動cur節點和del節點,當cur->next為空時跳出迴圈,此時del指向的是待刪除節點的前乙個節點,所以進行del->next = del->next->next;操作對節點進行刪除,並返回頭節點head。
/**
* definition for singly-linked list.
* struct listnode
* };
*/class solution
del->next = del->next->next;
return head;
}};
LeetCode 19 鍊錶(160)
1 如圖,鍊錶是一種非常常用的資料結構 煉表頭 指向第乙個鍊錶結點的指標 鍊錶結點 鍊錶中的每乙個元素,包括 1 當前結點的資料,2 下乙個結點的位址 鍊錶尾 不再指向其他結點的結點,其位址部分放乙個null,表示鍊錶到此結束。2 鍊錶可以動態地建立 動態地申請記憶體空間 int pint new ...
鍊錶 LeetCode19刪除鍊錶中的第N個節點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?分析 看到這個問題,第一反應,先求長度,再找節點,看一下高階,有...
Leetcode 19 刪除鍊錶的第N個節點
給定乙個鍊錶,刪除鍊錶的倒數第 n 個節點,並且返回鍊錶的頭結點。示例 給定乙個鍊錶 1 2 3 4 5,和 n 2.當刪除了倒數第二個節點後,鍊錶變為 1 2 3 5.說明 給定的 n 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?兩次遍歷的演算法思路 第一遍歷從頭結點開始來計算鍊錶的長度,然後...