Java 查找数组中第二高的数字
我很难理解在数组中找到第二大数字的方法背后的逻辑。所使用的方法是在数组中找到最高的,但小于先前最高的(已经找到)。我仍然不明白的是为什么|| highest_score == second_highest
有必要。例如,我输入了三个数字:98、56、3。没有它,最高和第二高将都是98。请解释。
int second highest = score[0]; if (score[i] > second_highest && score[i] < highest_score || highest_score == second_highest)
second_highest = score[i];
回答:
找到第二高实际上很简单:
static int secondHighest(int... nums) { int high1 = Integer.MIN_VALUE;
int high2 = Integer.MIN_VALUE;
for (int num : nums) {
if (num > high1) {
high2 = high1;
high1 = num;
} else if (num > high2) {
high2 = num;
}
}
return high2;
}
这是O(N)一口气。如果你想接受联系,则更改为if (num >= high1)
,但是Integer.MIN_VALUE
如果数组中至少有2个元素,它将返回。Integer.MIN_VALUE
如果数组仅包含相同的数字,它也将返回。
以上是 Java 查找数组中第二高的数字 的全部内容, 来源链接: utcz.com/qa/409672.html