2012-01-17 36 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