原题链接:https://leetcode.com/problems/remove-linked-list-elements/
思路: 建一个dunmy,dunmy.next = head,为了防止head.val 等于要被踢掉的value,删掉head不方便表示。
再建一个helper,这里是temp用来遍历list,每次建材temp.next 是否为null.
Note: 这里犯了一个错误,刚开始是写成了
while(temp.next!=null){
while(temp.next.val == val){
temp.next = temp.next.next;
}
}
当时想到如果下一个点的val还是给定的value就不能跳,所以嵌套了一个while,但第二个while的conditional statement 是
有问题的,如果此时的temp.next已经是null的话,temp.next.val就会报错,null是不能用.val的!
AC Java:
/**
* 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) {
ListNode dunmy = new ListNode(0);
dunmy.next = head;
ListNode temp = dunmy;
while(temp.next!=null){
if(temp.next.val == val){ //error
temp.next = temp.next.next;
}else{
temp = temp.next;
}
}
return dunmy.next;
}
}