码迷,mamicode.com
首页 > 编程语言 > 详细

从排序数组中删除重复项

时间:2018-04-02 00:11:22      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:gpo   begin   number   内容   remove   有序   就是   turn   遍历数组   

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

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

}

};

从排序数组中删除重复项

标签:gpo   begin   number   内容   remove   有序   就是   turn   遍历数组   

原文地址:https://www.cnblogs.com/xxZkj1517/p/8688969.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!