Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
For example,
Given sorted array nums = [1,1,1,2,2,3]
,
Your function should return length = 5
, with the first five elements of nums being 1
, 1
, 2
, 2
and 3
. It doesn't matter what you leave beyond the new length.
题意:给一个数组,有序的,去掉超过两个的即可。
java代码:
class Solution {
public int removeDuplicates(int[] nums) {
int count = 0;
HashMap<Integer, Integer> map = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
if (map.get(nums[i]) == null) {
count++;
map.put(nums[i], 1);
} else if (map.get(nums[i]) == 1) {
count++;
map.put(nums[i], 2);
}
}
List<Integer> list = new ArrayList<Integer>();
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue() == 1) {
list.add(entry.getKey());
} else {
list.add(entry.getKey());
list.add(entry.getKey());
}
}
Collections.sort(list);
for (int i = 0; i < list.size(); i++) {
nums[i] = list.get(i);
}
return count;
}
}