如果元素的出现次数超过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。。。