82. [M] Remove Duplicates from Sorted List II
https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/
输入 1 1 2 3 3 4
初始:(h/c) -> (1/head) -> (1) -> (2) -> (3) -> (3) -> (4)
第一步:更新 p = c
(h/p/c) -> (1) -> (1) -> (2/c) -> (3) -> (3) -> (4)
第二步:更新 c 指向下一个
(h/p) -> (1/c) -> (1) -> (2) -> (3) -> (3) -> (4)
第三步:如果 c 与下一个节点值相同,则移动 c 至值不同的节点
(h/p) -> (1) -> (1) -> (2/c) -> (3) -> (3) -> (4)
第四步:更新 p.next 指向 c
(h/p) -> (2/c) -> (3) -> (3) -> (4)
重复这个过程class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null) {
return null;
}
ListNode h = new ListNode(-head.val);
h.next = head;
ListNode c = h, p = null;
while (c != null) {
p = c;
c = c.next;
while (c != null && c.next != null && c.next.val == c.val) {
for (int v = c.val; c != null && c.val == v; c = c.next);
}
p.next = c;
}
return h.next;
}
}最后更新于