【JS】陣列中第三大的數
阿新 • • 發佈:2018-12-20
給定一個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是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;}