刪除鏈表中等于給定值 val 的所有節(jié)點(diǎn)瞳秽。
示例:
輸入: 1->2->6->3->4->5->6, val = 6
輸出: 1->2->3->4->5
- 先看頭節(jié)點(diǎn)是不是要刪除的節(jié)點(diǎn)敏簿,如果是里覆,先把頭節(jié)點(diǎn)刪掉刑顺;
- 如果刪完頭節(jié)點(diǎn),鏈表中已經(jīng)沒有節(jié)點(diǎn)了摔癣,返回null跛璧;
- 頭節(jié)點(diǎn)不是要刪除的節(jié)點(diǎn),把頭節(jié)點(diǎn)后面跟著的節(jié)點(diǎn)歇拆,挨個排除鞋屈;
- 定義一個游標(biāo)prev,初始狀態(tài)指向head故觅,從prev.next開始挨個判斷厂庇;
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode removeElements(ListNode head, int val) {
while (head != null && head.val == val) {
ListNode delNode = head;
head = head.next;
delNode.next = null;
}
if (head == null) {
return null;
}
ListNode prev = head;
while (prev.next != null) {
if (prev.next.val == val) {
ListNode delNode = prev.next;
prev.next = delNode.next;
delNode.next = null;
} else {
prev = prev.next;
}
}
return head;
}
}