3
A
回答
1
下面的代碼將統計每個卷號碼和店鋪數的numbers
map:
Map<Integer, Integer> numbers = new HashMap<Integer, Integer>();
for (int i = 0; i < 50; i++) {
Integer num = die.roll();
Integer count = numbers.get(num);
if (count == null) {
count = Integer.valueOf(0);
}
count = Integer.valueOf(count.intValue() + 1);
numbers.put(num, count);
}
然後你可以檢查所有的地圖條目,並找到那些滾動多次。
for (Map.Entry<Integer, Integer> entry : numbers.entrySet()) {
if (entry.getValue().intValue() > 1) {
System.out.println(entry.getKey() + " rolled more than once");
}
}
或者你也可以在第一個循環只是改變狀態輸出的數字有:
for (int i = 0; i < 50; i++) {
Integer num = die.roll();
Integer count = numbers.get(num);
if (count != null) {
System.out.println(num + " rolled more than once");
} else {
numbers.put(num, Integer.valueOf(1));
}
}
最後,你仍然可以使用陣列找到它編號:
for (int i = 0; i < 50; i++) {
nums[i] = die.roll();
for (int j = i - 1; j >= 0; j--) {
if (nums[i] == nums[j]) {
System.out.println(nums[i] + " rolled more than once");
break;
}
}
}
0
你可以嘗試整理數據
int[] nums = new int[50];
for(int i = 0; i < nums.length; i++) nums[i] = die.roll();
java.util.Arrays.sort(nums);
int dupes = 0;
for(int i = 0; i < nums.length - 1; i++) {
if(nums[i] == nums[i+1) dupes++;
}
對數據進行排序可以將所有相同的元素放在彼此旁邊,這樣您就可以一次找到它們。當然,你必須對它進行排序,這不是一次性的操作。
這消除了使用地圖的開銷,並且仍然非常快。排序是n lg n
,這比使用地圖的解決方案要慢,但是如此小的地圖開銷可能是重要的。代碼本身也很容易遵循。
看到,一個10元件陣列中使用數字0-19此自包含例如(按比例縮小,方便審查數;概念完全適用。)
import java.util.*;
class Christine {
static Random random = new Random();
static int dieroll() {
return random.nextInt(20);
}
public static void main(String[] args) {
int[] nums = new int[10];
for(int i = 0; i < nums.length; i++) nums[i] = dieroll();
System.out.println(Arrays.toString(nums));
Arrays.sort(nums);
int dupes = 0;
for(int i = 0; i < nums.length - 1; i++) {
if(nums[i] == nums[i+1]) dupes++;
}
System.out.println(dupes);
}
}
運行該示例如下所示:
c:\files\j>javac Christine.java
c:\files\j>java Christine
[2, 9, 8, 5, 11, 12, 15, 15, 16, 7]
1
c:\files\j>java Christine
[10, 10, 1, 18, 11, 6, 4, 3, 9, 5]
1
c:\files\j>java Christine
[8, 0, 13, 4, 5, 4, 16, 13, 6, 18]
2
在第一次運行中,有兩個15。第二,有兩個10。第三,有兩個13和兩個4。
考慮這個例子:
c:\files\j>java Christine
[17, 19, 19, 3, 19, 4, 18, 19, 1, 1]
4
此計數3個愚弄爲4個不同的19S,和用於兩個1一個重複數據刪除。現在爲什麼在19年代有3個傻瓜?因爲如果我們稱19s a,b,c和d,a將b看作是一個重複,b將c看作是一個重複,並且c將d看作重複。所以有三個。你必須添加額外的邏輯才能使它更加強大,以便捕獲所有6個模糊。
相關問題
- 1. 查找出現奇數次的元素
- 2. 查找行的出現次數
- 3. 查找出現一對值的次數
- 4. 查找出現次數最多的值
- 5. 查找特定值的出現次數
- 6. 查找特定值的出現次數
- 7. 使用子串查找出現次數
- 8. 在Java中查找JSON對象中鍵的出現次數
- 9. 查找數組Java的最後一次出現?
- 10. 確定數字出現的次數 - Java
- 11. 查找出現一次
- 12. 在Python中查找數組中整數出現的次數
- 13. 查找多維數組內的數組出現次數
- 14. 如何查找出現突出顯示的字符串的次數,以及出現的次數?
- 15. 查找數組中出現偶數次的單詞 - Javascript
- 16. 查找數組列表中出現特定元素的次數
- 17. 查找特定範圍內整數的出現次數
- 18. 遍歷數組以查找值的出現次數
- 19. 查找數字在兩列中出現的總次數
- 20. 查找索引在數組中出現的次數
- 21. 在matlab中查找結構數組中出現的次數
- 22. php查找發生次數(次數)
- 23. 使用計數來查找出現次數
- 24. 查找多次出現的字典?
- 25. 查找只出現一次的單詞
- 26. 計數出現次數[R]
- 27. 發現出現次數
- 28. Java創建收集和出現次數
- 29. 什麼應該是mongoDb查詢來查找出現次數?
- 30. 使用正則表達式查找第n次出現的次數
歡迎來到SO,你到目前爲止嘗試過什麼? – PermGenError
你到目前爲止編碼了什麼? – Mirco
無論你曾經嘗試過粘貼 –