(26)Remove Duplicates from Sorted Array
题目:把所给排好序的数组剔除重复数据,返回新数组的长度。
例如:所给数组为nums = [1, 1, 2],返回的新数组为nums_new = [1, 2],长度为2。
另外:不能使用其他数组,只能使用当前开辟的内存。
O(n)的算法就可以解决问题,但是刚开始以为只是返回长度就可以,所以搜了一遍没有重复数字的数组长度,但是后台会根据返回长度对原来输入的vector进行判断是否去除了原来重复的数字,所以题目不仅是返回长度,还要在查找过程中对数组进行操做,由于不需要考虑整个数组的长度,所以直接进行覆盖式搜索就可以,也就是对当前未出现数字记录并覆盖当前搜索不重复数组的长度位置上的数字。
下面是代码:
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
int len = nums.size();
if(len == 0){
return 0;
}
int num = nums[0];
int result = 1;
for(int i = 0; i < len; i ++){
if(nums[i] == num){
continue;
}
else{
num = nums[i];
nums[result] = num;
result ++;
}
}
return result;
}
};