2012-01-17 43 views
1

我是編程新手,所以如果此問題很簡單,請接受我的道歉。查找堆棧中發生次數最多的事件

我的老師要我們來創建搜索一個堆棧最經常出現,並返回

例如名稱的方法:如果我有我的籌碼這些名字:

老虎伍茲,傑克尼古拉斯,阿諾德·帕爾默,傑克·尼古拉斯,吉米Demerrit,傑克·尼古拉斯,薩姆·斯尼德,吉米Demerrit,本·霍根,沃爾特·哈根,托米裝甲,鮑比 - 瓊斯

的方法應該返回傑克尼古拉斯

請幫助我,因爲我東東d知道該怎麼做我的程序

預先感謝您

+3

到目前爲止你寫了些什麼?你有什麼想法來解決這個問題嗎?如果我在一張紙上給了你一個名字列表,你會如何找到最常出現的名字? – 2012-01-18 00:02:13

+0

他特別想要_stack_,還是會對_list_感到滿意?這兩者不是互斥的,但在語義上你可能會看到這個(並使用它)像列表,而不是堆棧。 – 2012-01-18 00:11:41

+0

如果最常出現的元素出現超過n/2次,這可以在'O(n)'中使用堆棧(沒有列表)完成 – st0le 2012-01-18 06:26:40

回答

2

你的程序將需要做以下事情:

  1. 創建或獲取的名稱的列表並將它們添加他們所有到一個堆棧。
  2. 迭代堆棧中的每個項目並跟蹤它遇到的次數(稱爲頻率計數)。
  3. 確定哪個名稱具有最高的頻率計數並返回該值。

嘗試執行上述每個步驟並更新您遇到的具體問題。

0

一個簡單的方法來解決這個問題將是做什麼maerics說。但要更具體一些,請使用字符串(名稱)作爲鍵和int(頻率)作爲值來創建HashMap。然後遍歷堆棧中的每個名稱,並將其添加到HashMap中,並將該名稱的頻率提高1.如果名稱已經存在於HashMap中,只需提高其頻率即可。完成後,頻率最高的名稱將成爲您想要獲得的名稱。

+0

我是編程新手,請你給我看一些例子 – skoon 2012-01-18 02:29:48

+0

Here是一些僞代碼。 在堆疊中的每個名稱, 如果名稱不HashMap中,通過 [鏈接](http://docs.oracle.com/javase/1.5添加名稱與值1,否則 增加頻率至HashMap中。 0 /文檔/ API/JAVA/util的/ HashMap.html) – theDazzler 2012-01-18 02:33:24