从排序数组中删除重复项

Posted xxzkj1517

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从排序数组中删除重复项相关的知识,希望对你有一定的参考价值。

给定一个有序数组,你需要原地删除其中的重复内容,使每个元素只出现一次,并返回新的长度。

不要另外定义一个数组,您必须通过用 O(1) 额外内存原地修改输入的数组来做到这一点。

 

个人代码,较为弱智。

class Solution {
public:
int removeDuplicates(vector<int>& nums) {
  vector<int>::iterator iter;
  int m;
  if(nums.size()==0) return 0;
  else m=nums[0];
  for(iter=++nums.begin();iter!=nums.end();)
  {
    if(*iter!=m){
    m=*iter;
    ++iter;
    }
    else{

    iter=nums.erase(iter);

    }
  }
  return int(nums.size());
  }
};

 

排名第一代码:

思路很简单,就是遍历数组,不同的元素提前,不会改变数组大小。

class Solution {

public:

int removeDuplicates(vector<int>& nums){

  short int endpos = 0;

  if (nums.size() == 0) return 0;

  for(short int i = 0; i<nums.size(); ++i) {

    if(nums[endpos]!=nums[i]){

      nums[++endpos] = nums[i];

    }

  }

  return endpos +1;

}

};

以上是关于从排序数组中删除重复项的主要内容,如果未能解决你的问题,请参考以下文章

从 C++ 中的排序数组中删除重复项

从排序数组中删除重复项 Leetcode

从排序数组中删除重复项

从排序数组中删除重复项

探索初级算法—— 从排序数组中删除重复项

LeetCode从排序数组中删除重复项