LeetCode203-移除链表元素

LeetCode203-移除链表元素

直接操作结点

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public ListNode removeElements(ListNode head, int val) {
//创建头结点
ListNode dummyHead = new ListNode(-1);
dummyHead.next = head;

ListNode prev = dummyHead;
while (prev.next != null) {
if (prev.next.val == val) {
prev.next = prev.next.next;
}
prev = prev.next;
}
return head;
}

递归实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public ListNode removeElements1(ListNode head, int val) {
if (head == null) {
return head;
}
//res是在头结点下一个结点删除了val的结果
ListNode res = removeElements1(head.next, val);
//然后处理头结点
if (head.val == val) {
//头结点如果需要删除,就返回res
//因为res是不包含头结点的链表
return res;
} else {
//如果头结点不需要删除
//就继续接上res
head.next = res;
return head;
}
}

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!