File tree Expand file tree Collapse file tree 1 file changed +15
-40
lines changed
RemoveDuplicatesfromSortedListII Expand file tree Collapse file tree 1 file changed +15
-40
lines changed Original file line number Diff line number Diff line change 9
9
class Solution {
10
10
public:
11
11
ListNode *deleteDuplicates (ListNode *head) {
12
- // Start typing your C/C++ solution below
13
- // DO NOT write int main() function
14
-
15
- if (head == NULL )
16
- return head;
17
-
18
- ListNode preHead (0 );
19
- preHead.next = head;
20
-
21
- ListNode *preprev = &preHead;
22
- ListNode *prev = head;
23
- ListNode *node = head->next ;
24
- bool flag = false ;
25
-
26
- while (node != NULL ) {
27
- if (prev->val == node->val ) {
28
- ListNode *del = node;
29
- node = node->next ;
30
- flag = true ;
31
- delete del;
32
- }
33
- else {
34
- if (flag) {
35
- flag = false ;
36
- preprev->next = node;
37
- prev = node;
38
- node = node->next ;
39
- }
40
- else {
41
- preprev = prev;
42
- prev = node;
43
- node = node->next ;
12
+ ListNode prevhead (0 );
13
+ ListNode* prev = &prevhead;
14
+ ListNode* curr = head;
15
+ while (curr) {
16
+ if (curr->next && curr->val == curr->next ->val ) {
17
+ ListNode* next = curr->next ;
18
+ while (next && next->val == curr->val ) {
19
+ next = next->next ;
44
20
}
21
+ curr = next;
22
+ } else {
23
+ prev->next = curr;
24
+ prev = prev->next ;
25
+ curr = curr->next ;
45
26
}
46
27
}
47
- if (flag) {
48
- preprev->next = NULL ;
49
- delete prev;
50
- }
51
-
52
- return preHead.next ;
28
+ prev->next = NULL ;
29
+ return prevhead.next ;
53
30
}
54
31
};
55
-
56
- // Accepted after my first commit, yeah.
You can’t perform that action at this time.
0 commit comments