回答
我會簡單地創建一個HashMap<Integer,Integer>
其中第一個整數是分數數組中的值,第二個是頻率。
然後在hashmap中處理數組填充。如果一個密鑰已經存在,請將計數加1。如果它是新密鑰,請將其設置爲1。
然後處理散列圖以查找出現次數最多的值。
我要對源代碼的工作,一旦我進入到Java的安裝,但一臺機器,因爲它現在被標記的功課,它僅僅是算法(這將是從長遠來看對你更好呢):
Create empty hashmap freq
For each entry in your array (probably nested loops):
If entry.value is not in freq:
Add entry.value to freq, set its count to zero
Increase count of freq.value
Set max_count to 0
For each item in freq:
If item.count is greater than max_count:
Set max_list to an empty list
Set max_count to item.count
If item.count is equal to max_count:
Append item.value to max_list
If max_count is greater than 0:
Output max_count, max_list
這是我將遵循的基本算法,它由兩個順序循環組成。
第一個只是創建一個值到計數的映射,以便您可以稍後查找最大計數。
第二個遍歷地圖並創建具有最高計數值的列表。
由於得分可能處於有限範圍內(例如0..100
),因此您可以使用計數陣列快速完成此操作。基本上,您正在執行counting sort的第一階段。
所有可能得分的count
開始於0
,則對於每個得分s
,增量count[s]
。一旦處理了所有得分,請掃描count
並查看哪個count[k]
是最高的。
您還可以跟蹤計數中最常見的分數。只是這樣做:(?出於某種原因)
// init
mostFrequent = 0;
// during increment
count[s]++;
if (count[s] > count[mostFrequent]) {
mostFrequent = s;
}
因爲你的分數被安排在一個二維矩陣,可以處理每個分數如下:
int[] count = new int[RANGE]; // valid scores are 0..RANGE-1
mostFrequent = 0;
for (int[] tuplet : scores) {
for (int s : tuplet) {
count[s]++;
if (count[s] > count[mostFrequent]) {
mostFrequent = s;
}
}
}
report(mostFrequent, count[mostFrequent]);
由於這是比算法更多的代碼,我不得不說道爾頓沒有理由不能獲得相當好的成績。也是可惜的,因爲它是解決iter問題的最簡單的問題。 – jcolebrand 2010-04-30 03:28:48
或者保持一個指針當前最大的一個。每次創建或更新時,都要比較一下,看看你是否剛剛超過了以前的最大值,如果有,就更換它。 保存另一個通過散列映射。
對於這樣的事情,編寫代碼來模擬在現實生活中你將如何做事。
讓我們的模型:
你的[5] [5]數組:這只是一個5列和5行數的網格。
從0,0位置開始 - 讀取該位置的值,並啓動一個列表(在Java中,一個ArrayList或HashMap),將該數字添加到列表中並給它一個哈希標記(值爲1) ,以表明你已經看過一次。
穿過該行,然後左後下行,等等。
你讀的每個數字,檢查它是否已經在你的列表中。如果是,只需製作另一個散列標記(加1)即可。如果沒有,然後將該號碼添加到您的列表並給它一個哈希標記。
讀完數組後,從頭開始查看列表,並通過將手指放在數字上(將數字存儲在變量中)來跟蹤您看到的散列標記最多的數字。
返回最後一個變量。
- 1. 計算數組中值的頻率
- 2. 計算數組中元素的頻率
- 3. C - 計算數組中數字的頻率
- 4. 計算一個特定值在一個數組中出現的頻率
- 5. 使用Python計算數字頻率
- 6. 使用函數計算字符(頻率)
- 7. 計算字典中的值的頻率
- 8. PHP - 數組值的計數頻率
- 9. 一種計算數字頻率的方法
- 10. Python:計算字典中的頻率
- 11. 計算一個數組元素的頻率落在一定範圍內
- 12. 用JavaScript計算數組中元素的頻率
- 13. 計數的字母的頻率在一個字符串
- 14. PDA中的計數字母頻率
- 15. 計算頻率
- 16. Perl字頻率計數器
- 17. 跟蹤/計數字頻率
- 18. 計數字母頻率
- 19. 頻率計數
- 20. 計算一個數組中2個值之間的數字量
- 21. 計算整數y在numpy數組中整數x之後的頻率
- 22. 在O(n)時間估計一個數組元素的頻率
- 23. 如何計算二維數組的頻率
- 24. 使用函數來計算的列的頻率在一個數據幀(熊貓)
- 25. 返回組頻率,滿足條件的值的計數和比率,按data.table中的組計算
- 26. 計算字符數組中的一行中的字符數
- 27. 計算事件的頻率
- 28. 如何計算三重嵌套循環中的頻率計數
- 29. 從頻率響應計算FIR係數
- 30. mbsctows來計算一個數組中的寬字符數
你是這個達爾頓嗎? http://stackoverflow.com/users/307394/dalton – trashgod 2010-04-30 00:50:38
這個問題有關嗎? http://stackoverflow.com/questions/2740852/finding-the-best-person-in-an-array – trashgod 2010-04-30 00:50:58
是爲什麼它由於某種原因 – dalton 2010-04-30 00:52:36