【算法】 求數組第二大數

獲取數組第二大數

程序 = 數據結構 + 算法

​ 工作多年,尤其是常年在業務代碼中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;
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章