您的位置:首页 > 其它

lintcode-100-删除排序数组中的重复数字

2017-07-12 21:13 260 查看

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


素只出现一次,并且返回新的数组的长度。

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

样例

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

标签

数组 两根指针 脸书


思路

将数组分为两段,前一段是已经删除重复元素的数组,后一段是未删除重复元素的数组

用下标 i 指向非重数组最大值(即数组最右边的元素),下标 j 指向重复数组中第一个与非重数组中元素不同的元素

将 j 指向的元素值赋给 i+1 指向的元素,即可增大非重数组

code

class Solution {
public:
/**
* @param A: a list of integers
* @return : return an integer
*/
int removeDuplicates(vector<int> &nums) {
// write your code here
int size = nums.size(), i = 0, j = 1;
if(size <= 0) {
return 0;
}
int  newSize = 1;
while(j<size) {
if(nums[i] < nums[j]){
nums[i+1] = nums[j];
i++;
j++;
newSize++;
}
else {
j++;
}
}
return newSize;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: