如果元素的出现次数超过java的n次,则删除该元素的出现次数。互联网解决方案不是';行不通
示例:如果元素的出现次数超过java的n次,则删除该元素的出现次数。互联网解决方案不是';行不通,java,Java,示例: EnoughIsEnough.deleteNth(newint[]{20,37,20,21},1)//返回[20,37,21] EnoughIsEnough.deleteNth(新int[]{1,1,3,3,7,2,2,2},3)//返回[1,1,3,3,7,2,2,2] 这个代码有什么问题 public static int[] deleteNth(int[] elements, int maxOccurrences) { int[] uniElements = element
EnoughIsEnough.deleteNth(newint[]{20,37,20,21},1)//返回[20,37,21]
EnoughIsEnough.deleteNth(新int[]{1,1,3,3,7,2,2,2},3)//返回[1,1,3,3,7,2,2,2]
这个代码有什么问题
public static int[] deleteNth(int[] elements, int maxOccurrences) {
int[] uniElements = elements;
for (int i = 0; i < elements.length; i++) {
for (int j = 0; j < elements.length; j++) {
int counter = 1;
if (counter <= maxOccurrences) {
uniElements[i] = elements[i];
if (uniElements[i] == uniElements[j]) {
counter++;
}
}
}
}
return uniElements;
}
publicstatic int[]deleteNth(int[]elements,int-maxaccurrencess){
int[]单元素=元素;
for(int i=0;i 如果(counter这样做是错误的。在所有情况下,你只是将counter设置为1。
下面是一个使用集合的实现
public static int[] deleteNth(int[] elements, int maxOccurrences) {
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
List<Integer> list = new ArrayList<Integer>();
for (int ele : elements) {
if (map.containsKey(ele)) {
if (map.get(ele) < maxOccurrences) {
map.put(ele, map.get(ele) + 1);
list.add(ele);
}
} else {
map.put(ele, 1);
list.add(ele);
}
}
return list.stream().mapToInt(i -> i).toArray();
}
publicstatic int[]deleteNth(int[]elements,int-maxaccurrencess){
Map Map=newhashmap();
列表=新的ArrayList();
用于(内部元素:元素){
if(地图容器(ele)){
if(map.get(ele)i.toArray();
}
例如,计数器
在每个循环中重置为1。。。