leetcode No82. Remove Duplicates from Sorted List II

来源:互联网 发布:java date格式转换 编辑:程序博客网 时间:2024/06/02 01:25

Question:

Given 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.

Algorithm:

在头结点前申请一个内存,用两个节点指向重复的头和尾

Accepted Code:

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* deleteDuplicates(ListNode* head) {        if(head==NULL||head->next==NULL)            return head;        ListNode* pre=new ListNode(0);         //在头节点前插一个节点,可以不用判断头节点和后面的值相等        pre->next=head;        ListNode* p=pre;        while(p->next!=NULL)        {            ListNode* first=p->next;         //重复元素首节点            ListNode* last=first->next;      //重复元素尾节点            int count=0;             while(last!=NULL&&first->val==last->val)            {                last=last->next;                count++;            }            if(count>0)                p->next=last;            else                p=p->next;        }        return pre->next;    }};


0 0
原创粉丝点击