使用In-place algorithm 来去重数组
输入:数组
输出:整数
应该是在邓俊辉的数据结构里面讲过去重。
int removeDuplicates(vector<int>& nums) {
int len = nums.size();
if(len==0)return 0;
int curIndex = 1, pointer = 1; //pointer 遍历数组,curIndex保存当前的索引
int value = nums[0];
while( pointer<len&& true){
if(nums[pointer] != value){
value = nums[pointer];
nums[curIndex++] = nums[pointer++];
}else{
while(pointer<len && nums[pointer]==value){
pointer++;
};
}
}
return curIndex;
}
差不多是这个样子
执行用时 : 36 ms, 在Remove Duplicates from Sorted Array的C++提交中击败了32.40% 的用户
内存消耗 : 10.8 MB, 在Remove Duplicates from Sorted Array的C++提交中击败了0.95% 的用户
int removeDuplicates(vector<int>& nums) {
if(nums.size()==0) return 0;
auto i = 0;
auto j = 0;
while(j < nums.size()){
if(nums[i] == nums[j])
j++;
else
nums[++i] = nums[j];
}
return i+1;
}
代码很优雅,和我的相比吧while合并了,没有赋值第一个。没有利用第三方value
$i = $j, j++, $i!=$j, $++i = $j
执行用时 : 36 ms, 在Remove Duplicates from Sorted Array的C++提交中击败了32.40% 的用户
内存消耗 : 10.9 MB, 在Remove Duplicates from Sorted Array的C++提交中击败了0.95% 的用户