Skip to content

Commit a9be922

Browse files
committed
leetcode
1 parent 47f50cb commit a9be922

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

LeetCode/deleteDuplicates2.cpp

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
#include <vector>
2+
#include <iostream>
3+
#include <algorithm>
4+
using namespace std;
5+
6+
#define REP(i,n) for(int i=0;i<(n);++i)
7+
#define FOR(i,a,b) for(int i=(a);i<=(b);++i)
8+
#define RFOR(i,a,b) for(int i=(a);i>=(b);--i)
9+
typedef long long LL;
10+
11+
struct ListNode {
12+
int val;
13+
ListNode *next;
14+
ListNode() : val(0), next(NULL) {}
15+
ListNode(int x) : val(x), next(NULL) {}
16+
};
17+
18+
class Solution {
19+
public:
20+
ListNode *deleteDuplicates(ListNode *head) {
21+
ListNode *ret = NULL, *prev = NULL;
22+
if (head == NULL) return ret;
23+
while (head != NULL) {
24+
int now = head->val;
25+
if (head->next != NULL && head->next->val == now) {
26+
while (head != NULL && head->val == now) head = head->next;
27+
} else {
28+
if (ret == NULL) {
29+
ret = head;
30+
prev = head;
31+
} else {
32+
prev->next = head;
33+
prev = head;
34+
}
35+
head = head->next;
36+
}
37+
}
38+
if (prev != NULL) prev->next = NULL;
39+
return ret;
40+
}
41+
};
42+
43+
int main() {
44+
ListNode mm[7];
45+
mm[0] = ListNode(1);
46+
mm[1] = ListNode(1);
47+
mm[2] = ListNode(1);
48+
mm[3] = ListNode(2);
49+
mm[4] = ListNode(3);
50+
mm[5] = ListNode(4);
51+
mm[6] = ListNode(5);
52+
REP(i,4) mm[i].next = &mm[i + 1];
53+
Solution s;
54+
ListNode *ret = s.deleteDuplicates(&mm[0]);
55+
while (ret != NULL) {
56+
cout << ret->val << endl;
57+
ret = ret->next;
58+
}
59+
return 0;
60+
}

0 commit comments

Comments
 (0)