js 网站开发,网站建设分类方案,设计案例网,免费金融网站模板问题
给你一个有序数组 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]);
} 解答
class Solution {public int removeDuplicates(int[] nums) {int n nums.length;int left 2;if(n 2){return n;}for (int right 2; right n; right) {if(nums[right] ! nums[left-2]){nums[left] nums[right];left;}}return left;}
}
总结
同样利用指针相对于删除只出现一次的数而言删除两次之后的数字只需要将left与right改为2间隔为2。另外删除一次的数链接如下
https://blog.csdn.net/m0_63078058/article/details/136298600?spm1001.2014.3001.5501