您的位置:首页 > 其它

删除排序链表中的重复元素

2017-03-29 11:04 246 查看
一、问题描述

    给定一个排序链表,删除所有重复的元素每个元素只留下一个。

       样例

       给出 
1->1->2->null
,返回 
1->2->null

       给出 
1->1->2->3->3->null
,返回 
1->2->3->null


二、解题思路

    定义两个指针,一个指向head,一个指向head->next,当这两个指针所指的元素相等时,让l1->next等于l2->next,即把重复的元素删除掉了;否则,l1=l2;然后指针继续遍历,直到head->next=NULL。

三、我的代码

class Solution {

public:

    /**

     * @param head: The first node of linked list.

     * @return: head node

     */

    ListNode *deleteDuplicates(ListNode *head) {

        if(head==NULL) return NULL;

        if(head->next==NULL)  return head;

        ListNode *l1=head;

        ListNode *l2=head->next;

        while(l2!=NULL)

        {

            if(l1!=NULL&&l2->val==l1->val)

            {

                l1->next=l2->next;

                l2=l2->next;

            }

            else

            {

                l1=l2;

                l2=l2->next;

            }

        }

        return head;

    }

};

四、我的感想

     删除操作和删除给定节点的题目类似,只不过这里要用到两个指针,判断哪些是重复的元素,以便删除,感觉在做题过程中思路越来越清晰了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: