题目链接:Remove Duplicates from Sorted List
题面:
Remove Duplicates from Sorted List
Total Accepted: 58257 Total Submissions: 168776My Submissions
Question Solution
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2
, return 1->2
.
Given 1->1->2->3->3
, return 1->2->3
.
Show Tags
解题
:第一次接触这个OJ,题量不多,但做的人好像很多,要好好利用,哈哈。
题解:
就是分前后一样和不一样两种情况处理。一样直接后移,不一样改变前一个指向的位置,并释放中间那一块空间。比较坑的是,没有考虑到head直接为空的情况。其他还好。
代码:
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if(head==NULL)return head;
ListNode* newHead = head;
ListNode* curr = head->next;
ListNode* tmp;
while( curr != NULL )
{
if( curr->val != head->val )
{
curr = curr->next;
head = head->next;
}
else
{
tmp=curr;
curr = curr->next;
head->next=curr;
delete tmp;
}
}
return newHead;
}
};