414. 第三大的数

414. 第三大的数icon-default.png?t=M666https://leetcode.cn/problems/third-maximum-number/414. 第三大的数

难度简单369

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

示例 1:

输入:[3, 2, 1]
输出:1
解释:第三大的数是 1 。

示例 2:

输入:[1, 2]
输出:2
解释:第三大的数不存在, 所以返回最大的数 2 。

示例 3:

输入:[2, 2, 3, 1]
输出:1
解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。
此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

进阶:你能设计一个时间复杂度 O(n) 的解决方案吗?

class Solution {
    public int thirdMax(int[] nums) {

        // 去重
        HashSet<Integer> set = new HashSet<Integer>();
        for(int i=0;i<nums.length;i++)
            set.add(nums[i]);
        nums = set.stream().mapToInt(Integer::intValue).toArray();
            
        // 排序:冒泡排序
        for(int i=1;i<nums.length;i++)
        {
            int flag = 0;
            for(int j=0;j<nums.length-i;j++)
            {
                if(nums[j+1]>nums[j])
                {
                    int temp = nums[j];
                    nums[j] = nums[j+1];
                    nums[j+1] = temp;
                    flag = 1;
                }
            }
            if(flag == 0) break;
        }
        if(nums.length<3) return nums[0];
        return nums[2];
    }
}

414. 第三大的数

 

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
相关推荐
  • 暂无相关文章
  • 评论 抢沙发

    请登录后发表评论

      暂无评论内容