leetcode [#203]

目录

题目

Remove all elements from a linked list of integers that have value val.

Example:
Given: 1 –> 2 –> 6 –> 3 –> 4 –> 5 –> 6, val = 6
Return: 1 –> 2 –> 3 –> 4 –> 5


解决方案

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* 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) {
if(head == null) return null;
ListNode fakeHead = new ListNode(0);
fakeHead.next = head;
ListNode p = fakeHead;

while (p != null && p.next != null){
if(p.next.val == val){
p.next = p.next.next;
continue;
}
p = p.next;
}
return fakeHead.next;
}
}

注意事项

  1. 使用“头指针”,去除头结点的特殊性。
  2. 如果当前节点的下一个节点是要删除的节点,将当前节点指向下一个节点之后的节点即可。