1. 程式人生 > >leetcode83.刪除排序連結串列中的重複元素

leetcode83.刪除排序連結串列中的重複元素

1.題目:
給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。
2.示例:
示例 1:
輸入: 1->1->2
輸出: 1->2
示例 2:
輸入: 1->1->2->3->3
輸出: 1->2->3
3.思路
遍歷連結串列,跳過重複節點。
4.程式碼
程式碼1:儲存節點的值比較,釋放重複節點記憶體
ListNode* deleteDuplicates(ListNode* head) {
if(head= =NULL||head->next= =NULL) return head;
ListNode* pre=head;
ListNode* ptr=head->next;
int val=head->val;
while(ptr!=NULL){
if(ptr->val= =val){
ListNode* del=ptr;
pre->next=ptr->next;
ptr=ptr->next;
delete del;
}
else{
val=ptr->val;
pre=ptr;
ptr=ptr->next;
}
}
return head;
}
程式碼2:直接跳過重複節點,不需要釋放記憶體。
ListNode* deleteDuplicates(ListNode* head) {
if(head= =NULL||head->next= =NULL) return head;
ListNode* ptr=head;
while(ptr->next!=NULL){
if(ptr->val= =ptr->next->val)
ptr->next=ptr->next->next;
else
ptr=ptr->next;
}
return head;
}