【LeetCode】 82. Remove Duplicates from Sorted List II

来源:互联网 发布:体检数据 编辑:程序博客网 时间:2024/06/03 15:51

iven a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example,
Given 1->2->3->3->4->4->5, return 1->2->5.
Given 1->1->1->2->3, return 2->3.

方法1:

class Solution {public:    ListNode* deleteDuplicates(ListNode* head) {        if(!head||!head->next){            return head;        }        ListNode* myHead=new ListNode(0);        ListNode* pre=myHead;        myHead->next=head;        ListNode* cur=head;        while(cur->next){            if(cur->val==cur->next->val){                cur=cur->next;            }else{                if(pre->next==cur){                    pre=cur;                }else{                    pre->next=cur->next;                }                 cur=cur->next;            }        }        if(pre->next!=cur){   //处理最后一个节点            pre->next=cur->next;        }        return myHead->next;    }};

方法2递归:

class Solution {public:    ListNode* deleteDuplicates(ListNode* head) {        if(!head||!head->next){            return head;        }        ListNode* cur=head->next;        if(head->val==cur->val){            while(cur&&cur->val==head->val)cur=cur->next;   //找到下一个不相同的结点            return deleteDuplicates(cur);        }else{            head->next=deleteDuplicates(cur);            return head;        }    }};
原创粉丝点击