/
Solution.java
46 lines (43 loc) · 1.37 KB
/
Solution.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
35
36
37
38
39
40
41
42
43
44
45
46
package g0001_0100.s0082_remove_duplicates_from_sorted_list_ii;
// #Medium #Two_Pointers #Linked_List #Data_Structure_II_Day_11_Linked_List
// #Algorithm_II_Day_3_Two_Pointers #2022_06_20_Time_0_ms_(100.00%)_Space_41.6_MB_(95.54%)
import com_github_leetcode.ListNode;
/*
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode dummy = new ListNode(0);
ListNode prev = dummy;
prev.next = head;
ListNode curr = head.next;
while (curr != null) {
boolean flagFoundDuplicate = false;
while (curr != null && prev.next.val == curr.val) {
flagFoundDuplicate = true;
curr = curr.next;
}
if (flagFoundDuplicate) {
prev.next = curr;
if (curr != null) {
curr = curr.next;
}
} else {
prev = prev.next;
prev.next = curr;
curr = curr.next;
}
}
return dummy.next;
}
}