我有一个数组,我希望找到最高值,但这个值可能会重复。
例如,考虑这个整数数组:
{10, 2, 6, 25, 40, 58, 60, 60}.
//Here the value 60 is repeated
在这里,我希望输出显示此数组中有两个最高值。与上面的示例一样,必须显示60是数组中所有值中的最高值,并且该值是数组中可用的2倍。而且我不想计算多少数字,而是想加上这两个最高数字。我有搜索程序,但我找不到任何相关的解决方案。
class Cal
{
void CalculateThis()
{
int[] myArray = new int[] {20,10,5,40,20,41,41,2,6,7,3,4,5,6,23,34,7,8,9,2};
int max = Integer.MIN_VALUE;
int sum=0;
for(int i = 0; i < myArray.length; i++)
{
if(myArray[i] > max)
{
max = myArray[i]*3;
sum = sum + max;
}
}
System.out.println(sum);
}
}
class program1
{
public static void main(String args[])
{
Cal obj = new Cal();
obj.CalculateThis();
}
}
答案 0 :(得分:0)
int max = ar[0];
int maxSum = 0;
for (int i=1; i< ar.length; i++)
{
if(ar[i] > max)
max = ar[i];
else
if(ar[i] == max)
maxSum+=max;
}
答案 1 :(得分:0)
int[] myArray = { 10, 2, 6, 25, 40, 58, 60, 60 };
int max = Integer.MIN_VALUE;
int maxCount = 0;
for (int x : myArray) {
if (x > max) {
max = x;
maxCount = 1;
} else if (x == max) {
maxCount++;
}
}
int maxSum = max * maxCount;
System.out.println("Max value : " + max);
System.out.println("Max Count : " + maxCount);
System.out.println("Max Sum : " + maxSum);
输出:
Max value : 60
Max Count : 2
Max Sum : 120
答案 2 :(得分:0)
您可以采取各种方法:
Arrays.sort
对数组进行排序,然后从最后开始工作,直到看到不同的值...让您计算出值和计数,然后您可以将它们相乘。这是相对低效的,因为您不需要排序。max
和sum
,如果您看到更高的值,则重置两者。这可能是最有效的,但不能重复用于其他要求。 (您可以在去的时候等效地跟踪count
,并在最后将max
乘以count
。)