思路:遍歷一次即可。dfs回溯的時候進行修改,不過這樣寫起來條件有點多。
還有一點就是關於引用的問題,因為題目是要求返回刪除後的頭結點,所以最好的方法就是傳乙個引用進去記錄最後的修改結果。
之前因為沒想好傳引用帶來的問題,錯了很久。看來我對c++的指標在引數傳遞上的理解還是有問題的。
class solution
listnode *p=head;
listnode *ans=new listnode(0);
int k=0;
bool f=0;
dfs(p,null,ans,n,k,f,1);
return ans;
}void dfs(listnode *head,listnode *pre,listnode *&ans, int n,int &k,bool &f,int st)
else
}return;
}dfs(head->next,head,ans,n,k,f,st+1);
if(f==1)}}
if(st==1)
}};
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 保證是有效的。高階 你能嘗試使用一趟掃瞄實現嗎?兩次遍歷的演算法思路 第一遍歷從頭結點開始來計算鍊錶的長度,然後...