Remove Duplicates from Sorted List II 题解
题目来源: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.
解题思路:
用一个变量标记是否有相同的节点,直到不同的才连接到result中。
ListNode *deleteDuplicates(ListNode *head)
{
ListNode dummy(-1);
ListNode * result = &dummy;
while(head)
{
auto node = head->next;
bool rep = false;
while(node != NULL && node->val == head->val)
{
auto next = node->next;
delete node;
node = next;
rep = true;
}
if(rep) //1 1 1 2 2
{delete head; head = node;}
else //1 2 2
{result->next = head; result = result->next; head = head->next;}
}
result->next = NULL; //!!IMPORTANT
return dummy.next;
}
别忘了最后的节点->next需要置空。
Last updated
Was this helpful?