8000 2 · javasharper/leetcode@3305d5e · GitHub
[go: up one dir, main page]

Skip to content

Commit 3305d5e

Browse files
committed
2
1 parent a16b607 commit 3305d5e

File tree

1 file changed

+15
-40
lines changed

1 file changed

+15
-40
lines changed

RemoveDuplicatesfromSortedListII/RemoveDuplicatesfromSortedListII.cpp

Lines changed: 15 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -9,48 +9,23 @@
99
class Solution {
1010
public:
1111
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;
4420
}
21+
curr = next;
22+
} else {
23+
prev->next = curr;
24+
prev = prev->next;
25+
curr = curr->next;
4526
}
4627
}
47-
if (flag) {
48-
preprev->next = NULL;
49-
delete prev;
50-
}
51-
52-
return preHead.next;
28+
prev->next = NULL;
29+
return prevhead.next;
5330
}
5431
};
55-
56-
// Accepted after my first commit, yeah.

0 commit comments

Comments
 (0)
0