LintCode-删除排序链表中的重复数字 II

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

您在真实的面试中是否遇到过这个题?

Yes

样例

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

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

标签 Expand

分析:因为是排序链表,所以每次判断和后面的是不是一样就行,一样就一直把这个相同的遍历到不同的点

代码:

/**
 * 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
        ListNode dummy(-1);
        ListNode* temp = &dummy;
        while(head)
        {
            if(head->next)
            {
                bool same = false;
                while(head->next&&head->next->val==head->val)
                {
                    same = true;
                    head = head->next;
                }
                if(!same)
                {
                    temp->next = new ListNode(head->val);
                    temp = temp->next;
                }
                head = head->next;
            }
            else
            {
                temp->next = head;
                head = head->next;
            }
        }
        return dummy.next;
    }
};

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

时间: 2024-11-08 22:05:15

LintCode-删除排序链表中的重复数字 II的相关文章

删除排序链表中的重复数字 II

题目 给定一个排序链表,删除所有重复的元素只留下原链表中没有重复的元素. 样例 给出 1->2->3->3->4->4->5->null,返回 1->2->5->null 给出 1->1->1->2->3->null,返回 2->3->null 解题 记录相同个数 一个相同的保存,多个的跳过 /** * Definition for ListNode * public class ListNode { *

LintCode(101)删除排序数组中的重复数字 II

题目 跟进"删除重复数字": 如果可以允许出现两次重复将如何处理? 您在真实的面试中是否遇到过这个题? Yes 样例 给出数组A =[1,1,1,2,2,3],你的函数应该返回长度5,此时A=[1,1,2,2,3]. 分析 与上题思路相同,只需要增加一个记录元素出现次数的变量即可,限制最多出现2次. Python代码 class Solution: """ @param A: a list of integers @return an integer &q

Leetcode(无重复字符的最长子串;删除排序链表中的重复元素II;加一;最后一个单词的长度;相同的树)

1.无重复字符的最长子串 这题需要用到滑动窗口法,有许多问题都可以考虑使用滑动窗口法:https://www.geeksforgeeks.org/tag/sliding-window/ 因为用c++,所以用到set容器:std::count 2.删除排序链表中的重复元素II 3.加一 1 class Solution { 2 public: 3 vector<int> plusOne(vector<int>& digits) { 4 int n=digits.size()-

【LeetCode链表】删除排序链表中的重复元素 II

题目描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 题目链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/ 做这题之前,可以先做删除排序链表中的重复元素,题解. 思路 这题是<剑指Offer>上的一道题.我们需要保存3个指针:

LeetCode 82. 删除排序链表中的重复元素 II(Remove Duplicates from Sorted List II)

题目描述 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例 2: 输入: 1->1->1->2->3 输出: 2->3 解题思路 由于重复的节点要全部删掉,所以再删除时要先保存重复节点的前一个节点,注意特殊情况是链表的开头就是重复节点,所以应首先找到链表从左往右第一个不重复的节点作为头节点,若头节点不为

leetcode 82. 删除排序链表中的重复元素 II

给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例 1: 输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2: 输入: 1->1->1->2->3输出: 2->3 来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii著作权归领扣网络所有.商

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

题目 给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 示例1 输入: 1->2->3->3->4->4->5 输出: 1->2->5 示例2 输入: 1->1->1->2->3 输出: 2->3 思路 新建新链表,创建newHead以及newCurrent分别是新链表的头部节点以及记录新链表当前值 创建原链表pre指向虚拟头节点,以及current记录当前访问的值还有nextCurrent

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

给定一个排序链表,删除所有重复的元素每个元素只留下一个. 样例 给出 1->1->2->null,返回 1->2->null 给出 1->1->2->3->3->null,返回 1->2->3->null 分析:先开始的时候是想着head 和head->next作为基准 但其实pre和cur更合适 /** * Definition of ListNode * class ListNode { * public: * int

101. 删除排序数组中的重复数字 II

跟进"删除重复数字": 如果可以允许出现两次重复将如何处理? 在丑的不行的原基础代码上加了个count 1 int removeDuplicates(vector<int> &nums) { 2 // write your code here 3 if(nums.empty()){ 4 return 0; 5 } 6 vector<int>::iterator it=nums.begin(); 7 it++; 8 int mark=nums[0]; 9