查找数组中出现的重复数 - Java

我无法解决这个问题。需要找到重复项,我做到了。现在剩下的就是打印重复出现在数组中的次数。我刚开始使用 Java,所以这需要硬编码才能理解。花最后两天的时间试图弄清楚但没有运气..任何帮助都会很棒!说话很便宜,这是代码..


import java.util.Arrays;

public class LoopTest {


    public static void main(String[] args) {


        int[] array = {12,23,-22,0,43,545,-4,-55,43,12,0,-999,-87};

        int positive_counter = 0;

        int negative_counter = 0;



        for (int i = 0; i < array.length; i++) {

            if(array[i] > 0) {

                positive_counter++;

            } else if(array[i] < 0) {

                negative_counter++;

            }

        }


        int[] positive_array = new int[positive_counter];

        int[] negative_array = new int[negative_counter];


        positive_counter = 0;

        negative_counter = 0;


        for (int i = 0; i < array.length; i++) {

            if(array[i] > 0) {

                positive_array[positive_counter++] = array[i];

            } else if(array[i] < 0) {

                negative_array[negative_counter++] = array[i];

            }

        }


        System.out.println("Positive array: " + (Arrays.toString(positive_array)));

        System.out.println("Negative array: " + (Arrays.toString(negative_array)));


        Arrays.sort(array);

        System.out.println("Array duplicates: ");

        for (int i = 0; i < array.length; i++) {

            for (int j = i + 1; j < array.length; j++) {

                if(array[i] == array[j]) {                    

                    System.out.println(array[j]);

                }


            }

        }

    }

}



潇湘沐
浏览 212回答 3
3回答

大话西游666

只需通过您的解决方案,首先将正数和负数分开在两个不同的数组中,然后从不使用它们,那么这种分离的目的是什么?我只是给你一个与你的问题相关的想法,最好由你自己解决,这样你就可以掌握 Java。解决方案:您可以使用字典键值对。遍历您的数组,将字典中的元素作为键,值为零,在每次迭代时检查该键是否已存在于字典中,只需增加其值。最后,所有值都是数组中出现的重复值。希望对你有帮助。

哔哔one

从算法的角度来看,Veselin Davidov 的回答很好(最有效)。在生产代码中,您宁愿这样写:Map<Integer,&nbsp;Long>&nbsp;result&nbsp;=&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;Arrays.stream(array) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.boxed()&nbsp;//converts&nbsp;IntStream&nbsp;to&nbsp;Stream<Int> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.groupingBy(i&nbsp;->&nbsp;i,&nbsp;Collectors.counting()));结果是这张地图:System.out.println(result);{0=2, 545=1, -4=1, -22=1, -87=1, -999=1, -55=1, 23=1, 43=2, 12=2}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java