我無(wú)法解決這個(gè)問(wèn)題。需要找到重復(fù)項(xiàng),我做到了?,F(xiàn)在剩下的就是打印重復(fù)出現(xiàn)在數(shù)組中的次數(shù)。我剛開始使用 Java,所以這需要硬編碼才能理解?;ㄗ詈髢商斓臅r(shí)間試圖弄清楚但沒(méi)有運(yùn)氣..任何幫助都會(huì)很棒!說(shuō)話很便宜,這是代碼..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貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
只需通過(guò)您的解決方案,首先將正數(shù)和負(fù)數(shù)分開在兩個(gè)不同的數(shù)組中,然后從不使用它們,那么這種分離的目的是什么?我只是給你一個(gè)與你的問(wèn)題相關(guān)的想法,最好由你自己解決,這樣你就可以掌握 Java。
解決方案:您可以使用字典鍵值對(duì)。遍歷您的數(shù)組,將字典中的元素作為鍵,值為零,在每次迭代時(shí)檢查該鍵是否已存在于字典中,只需增加其值。最后,所有值都是數(shù)組中出現(xiàn)的重復(fù)值。
希望對(duì)你有幫助。

嗶嗶one
TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
從算法的角度來(lái)看,Veselin Davidov 的回答很好(最有效)。
在生產(chǎn)代碼中,您寧愿這樣寫:
Map<Integer, Long> result = Arrays.stream(array) .boxed() //converts IntStream to Stream<Int> .collect(Collectors.groupingBy(i -> i, Collectors.counting()));
結(jié)果是這張地圖:
System.out.println(result);
{0=2, 545=1, -4=1, -22=1, -87=1, -999=1, -55=1, 23=1, 43=2, 12=2}
添加回答
舉報(bào)
0/150
提交
取消