删除链表中等于给定值 val 的所有节点
slow fast 只是指针不存储值,更改的是next的指向。
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode result = new ListNode(0);
result.next = head;
ListNode slow = result;
ListNode fast = head;
while(fast != null){
if(fast.val == val){
slow.next = fast.next;
}
//不相等 slow才能移动
else{
slow = fast;
}
fast = fast.next;
}
return result.next;
}
}
与删除链表中重复的元素,让其只出现一次代码相通
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode result = new ListNode(0);
result.next = head;
ListNode curr = result;
while(curr != null){
while(curr.next != null && curr.next.val == val){
curr.next = curr.next.next;
}
else{
curr =curr.next;
}
}
return result.next;
}
}