414. 第三大的数
js
;(function () {
/**
* 414. 第三大的数
* 给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
*
* 输入:[3, 2, 1]
* 输出:1
* 解释:第三大的数是 1 。
*
* 输入:[1, 2]
* 输出:2
* 解释:第三大的数不存在, 所以返回最大的数 2 。
*
* 输入:[2, 2, 3, 1]
* 输出:1
* 解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数
* 此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。
*
*/
function thirdMax(nums: number[]): number {
// 方法一:
// let arrSet: number[] = [...Array.from(new Set(nums))]
// if (arrSet.length > 2) {
// // 倒序
// let newSort = arrSet.sort((a, b) => b - a)
// // 返回第三大值
// return newSort[2]
// } else {
// // 返回最大值
// return Math.max(...arrSet)
// }
// 方法二:
nums.sort((a, b) => b - a)
for (let i = 1, diff = 1; i < nums.length; i++) {
if (nums[i] !== nums[i - 1] && ++diff === 3) {
return nums[i]
}
}
return nums[0]
}
let nums: number[] = [3, 2, 1]
let nums2: number[] = [3, 2, 2, 1]
let nums3: number[] = [2, 1]
console.log(thirdMax(nums))
console.log(thirdMax(nums2))
console.log(thirdMax(nums3))
})()