leetcode-83-remove duplicates from sorted list

题目

给定排好续的链表,将重复的元素变为单一元素,返回链表

分析

举例分析:
输入: 1-2-3-3-4-4-5
返回: 1-2-3-4-5

C++代码实现

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

* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/

class Solution {
public:
ListNode* (ListNode* head) {
if(!head || !head->next)
return head;
ListNode *res;
ListNode tmp(-1);
res = &tmp;
ListNode *pre = res;
while(head){
while(head->next && head->next->val == head->val)
head = head->next;
pre->next = head;
head = head->next;
pre = pre->next;
}
return res->next;
}
};