LeetCode19刪除鍊錶的倒數第N個節點

2022-06-05 14:18:05 字數 855 閱讀 8756

// problem: leetcode 19

// url:

// tags: linked list two pointers recursion

// difficulty: medium

#include using namespace std;

struct listnode;

class solution

// 這個if語句和上個while迴圈中的fast!=nullptr都是為了處理一種特殊情況:

// 假如鍊錶只有n個元素且要刪除倒數第n個元素,則快指標不能移動n+1步,這時應直接刪除頭結點

if(i!=n+1)

// 快指標和慢指標一起移動直至快指標為空

// 因為快指標先移動了n+1步,所以迴圈結束後慢指標是指向待刪除結點前面的那個結點

while(fast!=nullptr)

// 刪除待刪除的結點並返回新鍊錶

fast = slow->next;

slow->next = fast->next;

delete fast;

return head;

}};

// problem: leetcode 19

// url:

// tags: linked list two pointers recursion

// difficulty: medium

#include using namespace std;

struct listnode;

class solution

};

歡迎討論和交流!

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 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?兩次遍歷的演算法思路 第一遍歷從頭結點開始來計算鍊錶的長度,然後...