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

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

1.題目
給定一個排序連結串列,刪除所有含有重複數字的節點,只保留原始連結串列中 沒有重複出現 的數字。
2.示例
示例 1:
輸入: 1->2->3->3->4->4->5
輸出: 1->2->5
示例 2:
輸入: 1->1->1->2->3
輸出: 2->3
3.思路
一次遍歷刪除所有重複的節點
4.程式碼
ListNode* deleteDuplicates(ListNode* head) {
if(head= =NULL||head->next= =NULL) return head;
ListNode* pre=new ListNode(INT_MIN);
//#define INT_MAX 2147483647#define INT_MIN (-INT_MAX - 1)
//INT_MIN int中最小值
ListNode* ptr=head;
ListNode* res=pre;
while(ptr!=NULL&&ptr->next!=NULL){
if(ptr->val= =ptr->next->val){//需要刪除的重複節點
while(ptr!=NULL&&ptr->next!=NULL&&ptr->val==ptr->next->val)
ptr=ptr->next; //遍歷找到最後一個重複節點
pre->next=ptr->next;
ptr=ptr->next;
}
while(ptr!=NULL&&ptr->next!=NULL&&ptr->val!=ptr->next->val){//不需要刪除的節點
pre->next=ptr;
pre=ptr;
ptr=ptr->next;
}
}
return res->next;
}