我无法解决这个问题。需要找到重复项,我做到了。现在剩下的就是打印重复出现在数组中的次数。我刚开始使用 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。
解决方案:您可以使用字典键值对。遍历您的数组,将字典中的元素作为键,值为零,在每次迭代时检查该键是否已存在于字典中,只需增加其值。最后,所有值都是数组中出现的重复值。
希望对你有帮助。
哔哔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}
添加回答
举报
0/150
提交
取消