剑指Offer 18 删除链表的节点

剑指 Offer 原版

题目

(1)在 O(1) 的时间内删除链表的节点。

给定单向链表的头指针和一个节点指针,定义一个函数在 O(1) 时间内删除该节点。

解答

解答1[Java]

LeetCode 版本

解答

解答1[Java]

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
26
27
28
29
30
31
32
33
34
public class Problem18Solution1 {
public ListNode deleteNode(ListNode head, int val) {
if (head == null) {
return head;
}

if (head.val == val) {
return head.next;
}

ListNode pre = head;
ListNode current = head.next;
while (current != null) {
if (current.val == val) {
pre.next = current.next;
return head;
} else {
current = current.next;
pre = pre.next;
}
}

return head;
}
}

class ListNode {
int val;
ListNode next;

ListNode(int x) {
val = x;
}
}

对应 LeetCode 题目

剑指 Offer 18. 删除链表的节点 - 力扣(LeetCode)