1. 程式人生 > >【JS】陣列中第三大的數

【JS】陣列中第三大的數

給定一個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是O(n)。

示例 1: 輸入: [3, 2, 1] 輸出: 1

示例 2: 輸入: [1, 2]  輸出: 2 解釋: 第三大的數不存在, 所以返回最大的數 2 .

示例 3: 輸入: [1, 1, 2] 輸出: 2

解釋: 注意,要求返回第三大的數,是指第三大且唯一出現的數。 存在兩個值為2的數,它們都排第二。

解法一:使用比較偷懶的方法了先對陣列sort()排序了最大的在前最小的後。所以只要遍歷出陣列前幾位,找到第三大就可以了。

/**
 * @param 2018/11/12 Mon上午 
 */
var thirdMax = function(nums) {
    var arr =nums.sort(sortNum);
    var n=1;
    for(var i=1;i<arr.length;i++){
        if(arr[i]!=arr[i-1]){
            n+=1;
            if(n>=3){
                return arr[i];
            }
        }
    }

    return arr[0];
};
var sortNum=function(a,b){return b-a;}