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; } }; lintcode-100-删除排序数组中的重复数字 100-删除排序数组中的重复数字 素只出现一次,并且返回新的数组的长度。不要使用额外的数组空间,必须在原地没有额外空间的条件下完成。 样例 给出数组A =[1,1,2],你的函数应该返回长度2,此时A=[1,2]。 标签 数组 两根指针 脸书 思路 将数组分为两段,前一段是已经删除重复元素的数组,后一段是未删除重复元素的数组用下标 i 指向非重数组最大值(即数组最右边的元素),下标 j 指向重复数组中第一个与非重数组中元素不同的元素将 j 指向的元素值赋给 i+1 指向的元素,即可增大非重数组