仅对数组进行排序以查找订单统计信息太浪费了。您可以通过遵循与现有算法相似的算法找到第二大元素,并使用一个代表第二大数字的附加变量。
当前,下一个元素可以大于最大值或等于/小于最大值,因此单个元素就
if足够了:
if (times[i] > maxValue) { maxValue = times[i];}考虑两个变量,下一个元素可能是
- 大于最大值 -最大值变为第二大,而下一个元素变为最大值
- 小于最大值但大于第二大 元素-下一个元素将成为第二大元素。
必须特别注意初始状态。查看前两项,然后将较大的项分配给
max,将较小的项分配给第二大;如果有一个元素,则从第三个元素开始循环。
这是您如何编码它:
if (times[i] > maxValue) { secondLargest = maxValue; maxValue = times[i];} else if (times[i] > secondLargest) { secondLargest = times[i];}


