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

回到顶部