您的位置:首页 > 其它

删除排序数组中的重复数字

2016-04-15 12:40 197 查看
给定一个排序数组,在原数组中删除重复出现的数字,使得每个元素只出现一次,并且返回新的数组的长度。

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

样例:

给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。
如果可以允许出现重复的两个元素,将如何做?
这道题挺简单的,从i=1开始遍历数组,nums[i]与nums[i-1]比较,如果相等时不做任何处理。
class Solution {
public:
/**
* @param A: a list of integers
* @return : return an integer
*/
int removeDuplicates(vector<int> &nums) {
// write your code here
int n = nums.size();
if(n<=1)
return n;
int index=1;
for(int i =1;i<n;i++){
if(nums[i]!=nums[i-1])
nums[index++] =nums[i];
}
return index;
}
};


class Solution {
public:
/**
* @param A: a list of integers
* @return : return an integer
*/
int removeDuplicates(vector<int> &nums) {
// write your code here

if(nums.size() <= 2)
return nums.size();
int index=2;
for(int i=2;i<nums.size();i++){
if(nums[i] != nums[index-2])
nums[index++] = nums[i];
}
return index;

}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: