LeetCode-Remove Duplicates from Sorted List II

来源:互联网 发布:python 进制转换 编辑:程序博客网 时间:2024/05/22 15:15

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.

Solution:

Code:

<span style="font-size:14px;">/** * 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;        bool duplicate;        while (head != NULL && head->next != NULL) {            duplicate = false;            while (head != NULL && head->next != NULL) {                if (head->val != head->next->val) break;                duplicate = true;                head = head->next;            }            if (!duplicate) break;            head = head->next;        }        if (head == NULL || head->next == NULL) return head;        ListNode *begin = head, *end = head;        head = head->next;        while (head != NULL && head->next != NULL) {            duplicate = false;            while (head != NULL && head->next != NULL) {                if (head->val != head->next->val) break;                duplicate = true;                head = head->next;            }            if (!duplicate) {                end->next = head;                end = head;            }            head = head->next;        }        if (head != NULL)            end->next = head;        else            end->next = NULL;        return begin;    }};</span>



0 0