给你一个排序数组,删除其中的重复元素,使得每个数字最多出现两次,返回新的数组的长度。
如果一个数字出现超过2次,则这个数字最后保留两个。
样例
样例 1:
输入: []
输出: 0
样例 2:
输入: [1,1,1,2,2,3]
输出: 5
样例解释:
长度为 5, 数组为:[1,1,2,2,3]
注意事项
需要在原数组中操作
解题思路:
与上一道题目思路一模一样,见:【简单】Lintcode 100: Remove Duplicates from Sorted Array,区别只是将两指针之间的距离从1变成了2即可。
class Solution {
public int removeDuplicates(int[] nums) {
int k = 0;
for(int i=2; i<nums.length; i++){
if(nums[k] != nums[i]){
nums[k+2] = nums[i];
k++;
}
}
return k+2;
}
}

本文介绍了一种算法,该算法可在排序数组中删除多余的重复元素,确保每个元素最多只出现两次,并返回处理后数组的有效长度。举例说明了如何通过调整指针位置实现这一目标。
252

被折叠的 条评论
为什么被折叠?



