给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2 输出: 1->2
示例 2:
输入: 1->1->2->3->3 输出: 1->2->3
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* deleteDuplicates(struct ListNode* head){
struct ListNode* tmp_head=NULL;
struct ListNode* tmp=NULL;
struct ListNode* last=NULL;
while(head)
{
if(last)
{
if(head->val!=last->val)
{ //save
if(!tmp_head)
{
tmp_head=last;
tmp=last;
}
else
{
tmp->next=last;
tmp=tmp->next;
}
}
}
last=head;
head=head->next;
}
if(!tmp_head)
{
tmp_head=last;
}
else
{
tmp->next=last;
}
return tmp_head;
}
执行用时 : 8 ms, 在Remove Duplicates from Sorted List的C提交中击败了98.39% 的用户
内存消耗 : 7.7 MB, 在Remove Duplicates from Sorted List的C提交中击败了15.38% 的用户