博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode题目:Remove Duplicates from Sorted Array
阅读量:6294 次
发布时间:2019-06-22

本文共 1392 字,大约阅读时间需要 4 分钟。

题目:Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,

Given input array nums = [1,1,2],

Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn't matter what you leave beyond the new length.

题目解答:

class Solution {

public:
    int removeDuplicates(vector<int>& nums) {
        int size = nums.size();
        if(size <= 1)
            return size;
        int cur_index = 0;
        int next = 1;
        for(; next < size; next++)
        {
            if(nums[cur_index] == nums[next])
                continue;
            else
            {
                cur_index++;
                nums[cur_index] = nums[next];
            }
        }
        return cur_index + 1;
    }
};

题目发散:

上面的代码是自己在编程的时候直接反应写出来的答案。AC之后,想到了C++的STL中,有一个函数unique也可以实现对有序数组的一个去重。

unique的功能是去除相邻的重复元素(只保留一个),其实它并不真正把重复的元素删除,是把重复的元素移到后面去了,然后依然保存到了原数组中,然后 返回去重后最后一个元素的地址,因为unique去除的是相邻的重复元素,所以一般用之前都会要排一下序。

需注意的是:unique返回的是一个迭代器,即出现重复的第一个位置。

[1 , 1,  2 , 2 , 3 , 4]

使用unique之后得到的数组,如下

[1 , 2 , 3 , 4 , 1 , 2]

对于上面的这个数组,begin指向1,end指向最末的2的后面的一个位置,那么unique返回的迭代器指向下面这个数组的第二个1的位置。

于是便重新写了下面这个。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.size() <= 1)
            return nums.size();
        vector<int>::iterator nums_end_it = unique(nums.begin(),nums.end());
        return nums_end_it - nums.begin();
    }
};

转载于:https://www.cnblogs.com/CodingGirl121/p/5181146.html

你可能感兴趣的文章
CentOS7 yum 安装git
查看>>
启动日志中频繁出现以下信息
查看>>
httpd – 对Apache的DFOREGROUND感到困惑
查看>>
分布式锁的一点理解
查看>>
idea的maven项目,install下载重复下载本地库中已有的jar包,而且下载后jar包都是lastupdated问题...
查看>>
2019测试指南-web应用程序安全测试(二)指纹Web服务器
查看>>
树莓派3链接wifi
查看>>
js面向对象编程
查看>>
Ruby中类 模块 单例方法 总结
查看>>
jQuery的validate插件
查看>>
5-4 8 管道符 作业控制 shell变量 环境变量配置
查看>>
Enumberable
查看>>
开发者论坛一周精粹(第五十四期) 求购备案服务号1枚!
查看>>
validate表单验证及自定义方法
查看>>
javascript 中出现missing ) after argument list的错误
查看>>
使用Swagger2构建强大的RESTful API文档(2)(二十三)
查看>>
Docker容器启动报WARNING: IPv4 forwarding is disabled. Networking will not work
查看>>
(转)第三方支付参与者
查看>>
程序员修炼之道读后感2
查看>>
DWR实现服务器向客户端推送消息
查看>>