我想找到大值出现的频率,就像在数组最大值为98时,我想找到它重复的次数。帮帮我们
public static void main(String[] args) {
int numbers[] = new int[]{32,43,53,25,98,54,32,65,63,98,43,23,25,98};
int largest = numbers[0];
for (int i=1; i< numbers.length; i++) {
if(numbers[i] > largest)
largest = numbers[i];
}
System.out.println("Largest Number is : " + largest);
}
答案 0 :(得分:2)
不确定这是否是一个家庭作业问题,所以我会尝试通过伪代码而非Java来为您提供帮助。
假设您正在查看元素。有三种情况:
答案 1 :(得分:1)
您需要添加count
变量。每当找到新的最大值时,将此变量重置为1,并且只要当前索引处的值等于您到目前为止找到的最大数字,就将其递增。
答案 2 :(得分:0)
解决此类问题的传统方法是使用哈希表。第一次看到一个元素时,将它放入hash = 1的哈希表中。每次在此之后看到相同的元素时,将其计数增加1.最后,循环遍历哈希表的键并找到最大的键,然后输出该键及其相关值(即其计数)。
在某种意义上,可能存在更高效的解决方案,但我猜他们也更复杂。你可以说你是否需要考虑这一点。
答案 3 :(得分:0)
使用每次看到最大值时递增的计数器,并在每次找到新的较大值时重置:
int largest = numbers[0];
int counter = 1;
for(int i=1; i< numbers.length; i++)
{
if(numbers[i] > largest) {
largest = numbers[i];
counter = 1;
} elseif (numbers[i] == largest) {
counter++;
}
}