网站收录后怎么做排名,安装网站程序的流程,免费网站软件下载大全动漫,甘肃项目信息网给你一个有序数组 nums #xff0c;请你 原地 删除重复出现的元素#xff0c;使得出现次数超过两次的元素只出现两次 #xff0c;返回删除后数组的新长度。
不要使用额外的数组空间#xff0c;你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明…给你一个有序数组 nums 请你 原地 删除重复出现的元素使得出现次数超过两次的元素只出现两次 返回删除后数组的新长度。
不要使用额外的数组空间你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。 说明
为什么返回数值是整数但输出的答案是数组呢
请注意输入数组是以「引用」方式传递的这意味着在函数里修改输入数组对于调用者是可见的。
你可以想象内部操作如下:
// nums 是以“引用”方式传递的。也就是说不对实参做任何拷贝
int len removeDuplicates(nums);// 在函数里修改输入数组对于调用者是可见的。
// 根据你的函数返回的长度, 它会打印出数组中 该长度范围内 的所有元素。
for (int i 0; i len; i) {print(nums[i]);
}
思路一模拟题意
int removeDuplicates(int* nums, int numsSize){if (numsSize 0) return false;int j1,k1;for (int i1;inumsSize;i){if (nums[i] ! nums[i-1]){nums[k] nums[i];j 1; }else{j;if (j 2){nums[k] nums[i];}}}return k;
}分析
本题已经将数组内数排列好了可以考虑直接对每个相同的数进行计数当记的数超过2时放置后面的数多的重复数则不放入数组并被后面数代替。
总结
本题涉及数组应用将重复数代替即可解决注意题目所给空间复杂度为O(1)