獲取數組第二大數
程序 = 數據結構 + 算法
工作多年,尤其是常年在業務代碼中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;
}