给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
输入:head = [], val = 1
输出:[]
输入:head = [7,7,7,7], val = 7
输出:[]
/**
链表节点的定义
*/
public class ListNode{
//节点的值
int val;
//下一个节点
ListNode next;
//节点的无参构造
public LiseNode(){
}
//节点的有参构造(一个参数)
public ListNode(int val){
this.val = val;
}
//节点的有参构造(两个参数)
public ListNode(int val , ListNode next){
this.val = val;
this.next = next;
}
}
class Solution{
public ListNode removeElements(ListNode head , int val){
//创建虚拟节点,当头节点需要被删除时,无需单独处理头节点
ListNode dummyHead = new ListNode(0);
//dummyHead代表虚拟头节点
dummyHead.next = head;
//pointer代表指针
ListNode pointer = dummyHead;
if(head.val == null){
return head;
}
while(pointer.next != null){
if(pointer.next.val == val){
pointer.next = pointer.next.next;
}else{
pointer = pointer.next;
}
}
return dummuHead.next;
}
}