java设计一个方法removeDuplicates(),要求删除数组nums中重复出现的元素,使得每个元素最多只出现两次,并将剩余的元素保存到列表集合并返回
时间: 2024-01-22 11:20:43 浏览: 56
可以使用双指针的方法来解决这个问题。定义两个指针,一个指向当前不重复的元素的最后一个位置,另一个用来遍历整个数组。同时用一个计数器来统计当前元素出现的次数,如果当前元素出现次数大于2,就将另一个指针指向的位置删除,并将计数器减1。最后将剩余的元素保存到列表集合并返回。
下面是Java代码实现:
```java
public List<Integer> removeDuplicates(int[] nums) {
int len = nums.length;
int i = 0; // 指向当前不重复的元素的最后一个位置
int j = 1; // 用来遍历整个数组
int count = 1; // 统计当前元素出现的次数
List<Integer> list = new ArrayList<>();
while (j < len) {
if (nums[j] == nums[i]) {
count++;
} else {
count = 1; // 重置计数器
}
if (count <= 2) {
i++;
nums[i] = nums[j];
}
j++;
}
for (int k = 0; k <= i; k++) {
list.add(nums[k]);
}
return list;
}
```
这个方法的时间复杂度为O(n),空间复杂度为O(1)。
阅读全文