给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
https://leetcode-cn.com/problems/remove-linked-list-elements/
//方法1:造一个哨兵节点指向头节点,把Node.val == val 的节点删除,返回哨兵节点的next
public ListNode removeElements1(ListNode head, int val) {
ListNode newHead = new ListNode(-1);
newHead.next = head;
ListNode temp = newHead;
while(temp.next != null){
if(temp.next.val == val){
temp.next = temp.next.next;
}else{
temp = temp.next;
}
}
return newHead.next;
}
//方法2:新造一个链表,把Node.val != val 的节点加到链表尾部,如果原链表的尾部有值为val的节点也会附加到新链表上,所以要把新链表尾部置为null
public ListNode removeElements(ListNode head, int val) {
ListNode newHead = new ListNode();
ListNode temp = newHead;
while(head != null){
if (head.val != val){
temp.next = head;
temp = temp.next;
}
head = head.next;
}
temp.next = null;
return newHead.next;
}