java设计一个方法removeDuplicates(),要求删除数组nums中重复出现的元素,使得每个元素最多只出现两次,并将剩余的元素保存到列表集合并返回
时间: 2024-02-15 22:05:42 浏览: 149
从数组中删除重复元素的 Java 程序.docx
好的,下面是方法的实现:
```java
import java.util.ArrayList;
import java.util.List;
public class Solution {
public List<Integer> removeDuplicates(int[] nums) {
List<Integer> result = new ArrayList<>();
int i = 0;
while (i < nums.length) {
int j = i + 1;
while (j < nums.length && nums[j] == nums[i]) {
j++;
}
int count = Math.min(j - i, 2);
for (int k = 0; k < count; k++) {
result.add(nums[i]);
}
i = j;
}
return result;
}
}
```
该方法使用了双指针的思想,具体实现如下:
1. 定义两个指针 i 和 j,初始值都为 0;
2. 当 nums[j] 与 nums[i] 相等时,不断将 j 后移,直到 nums[j] 不等于 nums[i] 或 j 越界;
3. 计算 nums[i] 在数组中出现的次数 count,取 count 和 2 的较小值,因为每个元素最多只能出现两次;
4. 将 nums[i] 添加到结果集合 result 中 count 次;
5. 将 i 设置为 j 的值,继续执行步骤 2 - 4;
6. 返回结果集合 result。
这样,就能够删除数组 nums 中重复出现的元素,使得每个元素最多只出现两次,并将剩余的元素保存到列表集合并返回。
阅读全文