Neo's Blog

不抽象就无法深入思考
不还原就看不到本来面目!

0%

链表系列-删除重复节点

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
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/

class Solution {
public:
/**
*
* @param head ListNode类
* @return ListNode类
*/
ListNode* deleteDuplicates(ListNode* head) {
ListNode* pre = new ListNode(-100000);
ListNode* nHead = pre, *tail = pre;
int preCnt = 2;
while (head) {
if (head->val == pre->val) { //如果当前元素 与 前一个元素;
preCnt++;
} else {
if (preCnt == 1) { //如果前面的元素出现一次
tail->next = pre;
tail = pre;
tail->next = NULL;
}
pre = head;
preCnt = 1;
}
head = head->next;
}

if (preCnt == 1) {
tail->next = pre;
pre->next = NULL;
}

return nHead->next;
}
};
你的支持是我坚持的最大动力!