[leetcode] 【链表】 82. Remove Duplicates from Sorted List II

原创 2016年05月30日 17:28:26

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.


题意

把链表中含有重复值元素的节点删掉,和Remove Duplicates from Sorted List
这一题的区别是这里要把重复的全部删除,比如
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) {}
 * };
 */
class Solution {
public:
    ListNode* deleteDuplicates(ListNode* head) {
        if(!head) return head;
        ListNode newhead(-1);
        newhead.next=head;
        ListNode *prev=&newhead;
        ListNode *cur=head;
        while(cur)
        {
            bool isDuplicate=false;
            while(cur->next!=NULL&&cur->val==cur->next->val)
            {
                isDuplicate=true;
                ListNode *temp=cur;
                cur=cur->next;
                delete temp;
            }
            if(isDuplicate)
            {
                ListNode *temp=cur;
                cur=cur->next;
                prev->next=cur;
                delete temp;
            }
            else
            {
                prev=prev->next;
                cur=cur->next;
            }
        }
        return newhead.next;
    }
};


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

LeetCode 82 Remove Duplicates from Sorted List II(从已排序链表中移除重复元素)(Linked List)(*)

翻译给定一个已排序链表,删除所有的重复节点,只保留原始链表中独特的数字。例如, 给定 1->2->3->3->4->4->5, 返回 1->2->5. 给定 1->1->1->2->3, 返回 2...
  • NoMasp
  • NoMasp
  • 2016-08-11 20:25
  • 1412

leetcode 82. Remove Duplicates from Sorted List II (线性表)

leetcode 82. Remove Duplicates from Sorted List IIGiven a sorted linked list, delete all nodes that ...

LeetCode82:Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct num...

【一天一道LeetCode】#82. Remove Duplicates from Sorted List II

一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder‘s Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目...

LeetCode - 82. Remove Duplicates from Sorted List II

这一道题目主要是链表的操作,一开始因为情况比较复杂,把自己绕晕了,所以没想到这道题目的解法,后来看了答案才觉得自己解起来确实很难解出。这道题目对于链表的操作比较复杂,所要考虑的情况也很多,最大的一个技...

leetcode_82_Remove Duplicates from Sorted List II

思路: 大致思路就是,遍历链表找出重复元素的子列并删除重复元素子列,当然,第一个元素开始有重复元素的话比较特种,需要特殊考虑。删除子列的过程稍微有点绕,题目倒是不难理解。

[leetcode 82]Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb...

LeetCode 82. Remove Duplicates from Sorted List II pre指针,首元素的处理

题目 题意 注意 思路 代码 结果题目 Given a sorted linked list, delete all nodes that have duplicate numbers, leav...

[leetcode] 82. Remove Duplicates from Sorted List II

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numb...

[LeetCode]82.Remove Duplicates from Sorted List II

【题目】 Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distin...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)