一開始想太簡單了沒有考慮到已經遍歷到的結點無法刪除
看了答案區大佬的**
有三種方法:
1.在原表基礎上刪除 要定義指向當前結點前一結點的指標
/**
* definition for singly-linked list.
* struct listnode
* };
*/class
solution
else
if(p-
>next==null)
//尾else
//中間
} k=p;
//k向前
p=p-
>next;//}
return head;}}
;
2.另建新表 不等的放入新錶
class
solution
}return p-
>next;}}
;
3.遞迴
遞迴很棒 但易錯
class
solution
};
三種方法整體效率對比:
提交記錄區還能看到更多效率更高的演算法
203 移除鍊錶元素
刪除鍊錶中等於給定值val的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6輸出 1 2 3 4 5刪除結點的步驟 找到該結點的前乙個結點 進行刪除操作 三種方法 1.刪除頭結點時另做考慮 由於頭結點沒有前乙個結點 2.新增乙個虛擬頭結點,刪除頭結點就不用另做考慮 3.遞迴 演示 方法一...
203 移除鍊錶元素
刪除鍊錶中等於給定值 val 的所有節點。示例 輸入 1 2 6 3 4 5 6,val 6 輸出 1 2 3 4 5使用空表頭,就可以不用判斷單個節點的情況或多個相同節點的情況.使用空表頭 public listnode removeelementsdummy listnode head,int ...
203 移除鍊錶元素
刪除鍊錶中與val值相等的節點,使用哨兵節點 哨兵節點廣泛應用於樹和鍊錶中,如偽頭 偽尾 標記等,它們是純功能的,通常不儲存任何資料,其主要目的是使鍊錶標準化,如使鍊錶永不為空 永不無頭 簡化插入和刪除。屬於簡單題 class solution def removeelements self,hea...