Leetcode---83. 刪除排序連結串列中的重複元素
給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。
示例 1:
輸入: 1->1->2
輸出: 1->2
示例 2:
輸入: 1->1->2->3->3
輸出: 1->2->3
-----------------------------------------------------------------------------------------------------------------------------------------------------------
由於這個連結串列是有序的,那麼操作就很容易了,直接用一個int k來記錄每次出現的不同val,k在不同的val第一次出現時更新,如果有重複,那麼一定就緊挨著在後面出現(因為有序)這裡只要不停的後移,直到出現不同的val 時,更新k,並且移動指標。 說起來有點抽象,還是看程式碼吧。。 這次超過了99.96%的提交,hahahahahah(雖然是道簡單題,但還是很happy)
AC:
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (head==NULL)
return head;
ListNode* root=head;
ListNode* rr=head;
ListNode* r=root->next;
int k=root->val;
while(r!=NULL)
{
if (r->val==k)
{
r=r->next;
}else //這裡手畫一個連結串列更容易理解。
{
k=r->val;
root->next=r;
root=root->next;
r=r->next;
}
}
root->next=NULL;
return rr;
}
};