zoukankan      html  css  js  c++  java
  • 删除顺序数组的重复数字

    描述:给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。

    不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。

    样例

    给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]

     思路:

    第一次是错的,后来编译通过了,这道题我的想法是:第一,因为题上要求不能新增数组空间,所以我们考虑在原数组的覆盖,也就是把重复数字覆盖前面的一个数字,后面的依次往前覆盖,在编程里,是不存在删除一说的,只是数据的覆盖。覆盖前面的以后,最后的就可以通过缩小数据空间。

     

     代码:

    class Solution {
    public:
    int removeDuplicates(vector<int> &nums) {

    if(nums.empty())
    {
    return 0;
    }

    int n = nums.size(),k=0;

    for(int i=1;i<n;++i)
    {
    if(nums[i] != nums[k])
    {
    nums[++k] = nums[i];
    }
    }
    nums.resize(k+1);
    return k+1;
    }
    };

  • 相关阅读:
    MySQL学习(十二)
    MySQL学习(十一)
    MySQL学习(十)
    MySQL学习(九)
    MySQL学习(八)
    hlg1600线性代数中的矩阵问题【区间dp】
    HDU1556Color the ball【标号法||树状数组】
    hlg1481 Attack of the Giant n-pus【二分+二分图】
    0918
    20140913
  • 原文地址:https://www.cnblogs.com/moqinlin/p/6517129.html
Copyright © 2011-2022 走看看