203. Remove Linked List Elements
Leetcode Linked ListRemove all elements from a linked list of integers that have value val.
Example:
Input: 1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5
分析¶
一一比对节点元素,然后删除匹配元素,需要注意的是删除匹配的头部元素,采取两种方案
- 直接删除头部元素
- 加入dummynode,将头部元素按正常元素处理
结果是第一种方法快,但是代码量比较多。
public ListNode removeElements(ListNode head, int val) {
if(head == null) return null;
// 处理头部元素
while (head.val == val) {
head = head.next;
if (head == null) return null;
}
// 正常节点
ListNode pos = head;
while (pos.next != null)
if (pos.next.val == val) pos.next = pos.next.next;
else pos = pos.next;
return head;
}
对于头部元素的删除,采用另一种更加简便的方法: 加入dummy node
public ListNode removeElementsUsingDummy(ListNode head, int val) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode pos = dummy;
while (pos.next != null)
if (pos.next.val == val) pos.next = pos.next.next;
else pos = pos.next;
return dummy.next;
}