leetcode - Remove Duplicates from Sorted List II

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.

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
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 *node = new ListNode(-1);
		node->next = head;
		ListNode *cur = node,*t = head;
		while(t != NULL)
		{
			bool flag = false;
			while(t->next != NULL && t->next->val == t->val)
			{
				flag = true;
				t = t->next;
			}
			if(flag)
			{
				t = t->next;
				continue;
			}
			cur->next = t;
			cur = cur->next;
			t = t->next;
		}
		cur->next = t;
		return node->next;
    }
};


posted @ 2017-07-23 19:22  yxysuanfa  阅读(119)  评论(0编辑  收藏  举报