从排序数组中删除重复项

2018-06-17 20:53:40来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

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

不要另外定义一个数组,您必须通过用 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;

}

};

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:BZOJ4484: [Jsoi2015]最小表示(拓扑排序乱搞+bitset)

下一篇:BZOJ2028: [SHOI2009]会场预约(set)