LeetCode 82. 【Java】82. Remove Duplicates from Sorted List II
原题链接
中等
作者:
tt2767
,
2020-02-01 22:10:00
,
所有人可见
,
阅读 608
/*
1. 删掉遇到的所有重复node
2. 判断当前节点与后一个节点值是否相等,相等则删掉
3. 如果执行了删除操作则当前节点也删掉,否则处理下一个值
4. 因为可能删除头结点,所以使用虚拟前置节点prev来规避,结果为prev.next
*/
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode deleteDuplicates(ListNode head) {
ListNode prev = new ListNode(0);
prev.next = head;
var p1 = prev;
while (p1.next != null){
boolean f = false;
while (p1.next != null && p1.next.next != null && p1.next.val == p1.next.next.val ){
f = true;
p1.next = p1.next.next;
}
if (f) {
p1.next = p1.next.next;
} else {
p1 = p1.next;
}
}
return prev.next;
}
}