我很难理解在数组中找到第二大数字的方法背后的逻辑。使用的方法是在数组中找到最高但小于之前的最高(已经找到)。我仍然无法弄清楚的是为什么 || 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];
原文由 Richard Jackson 发布,翻译遵循 CC BY-SA 4.0 许可协议
我不相信做你所做的可以解决问题;我认为它掩盖了您逻辑中的另一个问题。要找到第二高的其实很简单:
这是一次通过
O(N)
。如果您想接受关系,则更改为if (num >= high1)
,但实际上,如果数组中没有至少 2 个元素,它将返回Integer.MIN_VALUE
。它还将返回Integer.MIN_VALUE
如果数组仅包含相同的数字。