0
点赞
收藏
分享

微信扫一扫

leetcode:414-第三大的数

西风白羽 2022-03-18 阅读 69

题目描述

给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。

解题思路

分为两种情况:

  • 数组长度小于 3
  • 数组长度大于3

小于3

数组从大到小排序,通过Set 集合去重,取出第一个元素即可

大于3

数组从大到小排序,通过Set 集合去重,取出第三个元素即可

代码

var thirdMax = function(nums) {
    nums = nums.sort((a, b) => b - a);
    nums = [...new Set(nums)];
    const len = nums.length;
    if(len < 3) {
        return nums[0];
    }
    return nums[2];
};

在这里插入图片描述

其他人的思路

思路
将数组从大到小排序后,从头开始遍历数组,通过判断相邻元素是否不同,来统计不同元素的个数。如果能找到三个不同的元素,就返回第三大的元素,否则返回最大的元素。

var thirdMax = function(nums) {
    nums = 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];
        }
    }
}
举报

相关推荐

0 条评论