前言:我刷LinkCode的第二題,挺簡單的
題目:刪除鏈表中等于給定值val的所有節(jié)點粱挡。
樣例
給出鏈表1->2->3->3->4->5->3
, 和 val =3
, 你需要返回刪除3之后的鏈表:1->2->4->5
思路
- 先判斷第一個節(jié)點是否為val,是的話就將head向后移動,直到出現(xiàn)不一樣的為止替饿。
- 定義一個current,privious代表當(dāng)前的節(jié)點和前面的節(jié)點
- 斷開節(jié)點,完成横媚!
/**
* @param head a ListNode
* @param val an integer
* @return a ListNode
*/
public ListNode removeElements(ListNode head, int val) {
// Write your code here
if (head == null) return null;
while (head.val == val) {
if (head.next == null) return null;
head = head.next;
}
if (head == null) return null;
ListNode current = head.next;
ListNode previous = head;
while (current!= null) {
if (current.val == val) {
previous.next = current.next;
current = current.next;
}else{
previous = current;
current = current.next;
}
}
return head;
}