83. Remove Duplicates from Sorted List

来源:互联网 发布:mac怎么设置默认输入法 编辑:程序博客网 时间:2024/05/17 22:18

问题描述:

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.

思路:设定两个节点p和q,其初始值分别热头结点和头结点的下一个节点,当p的节点值等于q的节点值时,q后移一位,同时删除q之前的节点。

当p,q不等时,p、q都后移一位。因为最终循环终止的条件是q->next != NULL,因此在循环体外还要判断p、q手相等。

AC代码如下:

ListNode* deleteDuplicates(ListNode* head)     {        if(head == NULL || head ->next == NULL)            return head;        ListNode *p,*q;        p = head;        q = head->next;        while(q->next != NULL)        {            if(p->val < q->val)            {                p = p->next;                q = q->next;            }            else if(p->val == q->val)            {                q = q->next;                p->next = q;            }                           }        if(p->val == q->val)            p->next = q->next;        return head;            }


0 0
原创粉丝点击