为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

潇湘沐 2021-06-21 16:52:23
我无法解决这个问题。需要找到重复项,我做到了。现在剩下的就是打印重复出现在数组中的次数。我刚开始使用 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]);                }            }        }    }}
查看完整描述

3 回答

?
大话西游666

TA贡献1817条经验 获得超14个赞

只需通过您的解决方案,首先将正数和负数分开在两个不同的数组中,然后从不使用它们,那么这种分离的目的是什么?我只是给你一个与你的问题相关的想法,最好由你自己解决,这样你就可以掌握 Java。

解决方案:您可以使用字典键值对。遍历您的数组,将字典中的元素作为键,值为零,在每次迭代时检查该键是否已存在于字典中,只需增加其值。最后,所有值都是数组中出现的重复值。

希望对你有帮助。


查看完整回答
反对 回复 2021-06-23
?
哔哔one

TA贡献1854条经验 获得超8个赞

从算法的角度来看,Veselin Davidov 的回答很好(最有效)。

在生产代码中,您宁愿这样写:

Map<Integer, Long> result = 
    Arrays.stream(array)
          .boxed() //converts IntStream to Stream<Int>
          .collect(Collectors.groupingBy(i -> i, 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}


查看完整回答
反对 回复 2021-06-23
  • 3 回答
  • 0 关注
  • 211 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信