您的位置:首页 > 其它

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

2017-03-29 00:11 225 查看

1.题目

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

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


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


2.思路

     删除重复元素的思路和之前所有的删除都是一样的。

    链表为空直接返回。当链表不为空时从头开始遍历,当遍历到某值与它下一个值相等时,用下下个节点覆盖下一个节点,就完成了对下个结点的删除。最后遍历到NULL时,直接返回整个链表就可以啦。

3.代码

/**

 * Definition of ListNode

 * class ListNode {

 * public:

 *     int val;

 *     ListNode *next;

 *     ListNode(int val) {

 *         this->val = val;

 *         this->next = NULL;

 *     }

 * }

 */

class Solution {

public:

    /**

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

     * @return: head node

     */

    ListNode *deleteDuplicates(ListNode *head) {

        // write your code here

        if(head==NULL)

           { return NULL;}

        ListNode *T=head;

        while(T->next!=NULL)

            {

                 if(T->val==T->next->val)

                     { T->next=T->next->next;}

                else   { T=T->next;}

            }

         return head;

    }

};

4.感想

      我觉得删除重复、删除某个值、单纯的删除都可以归为一类了。

       删除的重点在于找到它的前一个指针。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: