File tree Expand file tree Collapse file tree 1 file changed +60
-0
lines changed
Expand file tree Collapse file tree 1 file changed +60
-0
lines changed Original file line number Diff line number Diff line change 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+ }
You can’t perform that action at this time.
0 commit comments