删除排序链表中的重复数字 II -LintCode

来源:互联网 发布:2016网络在逃犯名单 编辑:程序博客网 时间:2024/06/05 00:57

给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素。
样例:
给出 1->2->3->3->4->4->5->null,返回 1->2->5->null
给出 1->1->1->2->3->null,返回 2->3->null

#ifndef C113_H#define C113_H#include<iostream>using namespace std;class ListNode{public:    int val;    ListNode *next;    ListNode(int val){        this->val = val;        this->next = NULL;    }};class Solution{public:    /**    * @param head: The first node of linked list.    * @return: head node    */    ListNode * deleteDuplicates(ListNode *head) {        // write your code here        if (head == NULL || head->next == NULL)            return head;        ListNode *node = new ListNode(-1);        ListNode *pre = node;        ListNode *cur = head;        while (cur != NULL)        {            if (cur->next != NULL&&cur->val == cur->next->val)            {                while (cur->next!=NULL&&cur->val==cur->next->val)                {                    cur = cur->next;                }            }            else            {                pre->next = cur;                pre = pre->next;            }            cur = cur->next;        }        pre->next = cur;        return node->next;    }};#endif
原创粉丝点击