📅  最后修改于: 2023-12-03 14:56:43.468000             🧑  作者: Mango
输入$n$个正整数,输出它们中的最大值和次大值。($n \geq 2$)
这道题目需要求出$n$个数中的最大值和次大值,最直观的想法是遍历一遍数组,找出最大值和次大值。
int max1 = Integer.MIN_VALUE, max2 = Integer.MIN_VALUE;
for (int i = 0; i < n; i++) {
if (nums[i] > max1) {
max2 = max1;
max1 = nums[i];
} else if (nums[i] > max2) {
max2 = nums[i];
}
}
其中$max1$为当前已经遍历过的最大值,$max2$为次大值,如果当前数字大于$max1$,则将$max1$更新为当前数字,同时将$max2$更新为原本的$max1$;如果当前数字大于$max2$,则将$max2$更新为当前数字。
时间复杂度是$O(n)$。
本题使用遍历一遍数组的思路即可实现,时间复杂度为$O(n)$。