【算法面试】获取数组第二大数

获取数组第二大数
程序 = 数据结构 + 算法
工作多年,尤其是常年在业务代码中CURD的程序猿们,几乎用不到算法相关的知识。但是面试过程中算法又是最基本的面试题。尤其是一些大厂,算法就是敲门砖。因此,掌握好算法才能够有基本的面试资格。笔者根据近期一段时间的面试,总结常见的一些基础面试算法题,希望可以帮到有需要的朋友。
问题:写一个函数求数组(乱序)第二大数,不能使用排序算法。
遍历数组,每次遍历先去对比最大值,如果数组中的元素大于最大值,则更新前两大数,继续遍历数组。
如果小于最大值,则与第二大数对比。如果大于第二大数,更新第二大数。
/**
* 获取数组第二大数
*
* @param array 查询的数组
*
* @return 第二大数
*/
public static Integer getSecond(int[] array) {
int max = array[0];
int second = Integer.MIN_VALUE;
// 遍历数组
for (int i = 1; i < array.length; i++) {
// 判断是否为最大数
if (max < array[i]) {
// 更新前两大数
second = max;
max = array[i];
continue;
}
// 判断是否为第二大数
if (second < array[i]) {
// 更新第二大数
second = array[i];
}
}
return second;
}