Leetcode 414.第三大的数

原题链接:Leetcode 414. Third Maximum Number

Given an integer array nums, return the third distinct maximum number in this array. If the third maximum does not exist, return the maximum number.

Example 1:

Input: nums = [3,2,1]

Output: 1

Explanation:

The first distinct maximum is 3.

The second distinct maximum is 2.

The third distinct maximum is 1.

Example 2:

Input: nums = [1,2]

Output: 2

Explanation:

The first distinct maximum is 2.

The second distinct maximum is 1.

The third distinct maximum does not exist, so the maximum (2) is returned instead.

Example 3:

Input: nums = [2,2,3,1]

Output: 1

Explanation:

The first distinct maximum is 3.

The second distinct maximum is 2 (both 2's are counted together since they have the same value).

The third distinct maximum is 1.

Constraints:

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

Follow up: Can you find an O(n) solution?


方法一:遍历数组

思路:

题目要求返回第三大的数,以及当没有三个不同数的情况下返回第二个数

那么就维护三个值:first、second、third,最后分情况返回即可

比较麻烦的就是初始值,需要设置一个最小的正数,这里用 LONG_LONG_MIN

C++ 代码:

cpp 复制代码
class Solution {
public:
    // const long long Min = -(1LL << 31) - 1;
    int thirdMax(vector<int>& nums) {
        long first = LONG_LONG_MIN, second = LONG_LONG_MIN, third = LONG_LONG_MIN;    // 当前最大的三个数
        
        // 遍历的同时维护这三个数
        for(int i = 0; i < nums.size(); i++ ){
            if(nums[i] > first){
                third = second;
                second = first;
                first = nums[i];
            }
            else if(nums[i] < first && nums[i] > second){
                third = second;
                second = nums[i];
            }
            else if(nums[i] < second && nums[i] > third){
                third = nums[i];
            }
        }

        if(third == LONG_LONG_MIN)
            return first;
        return third;
    }
};
相关推荐
墨染点香14 分钟前
LeetCode 刷题【160. 相交链表】
算法·leetcode·链表
少睡点觉15 分钟前
LeetCode 238. 除自身以外数组的乘积 问题分析+解析
java·算法·leetcode
YoungHong199215 分钟前
面试经典150题[066]:分隔链表(LeetCode 86)
leetcode·链表·面试
大千AI助手27 分钟前
多叉树:核心概念、算法实现与全领域应用
人工智能·算法·决策树·机器学习··多叉树·大千ai助手
一只老丸30 分钟前
HOT100题打卡第38天——贪心算法
算法·贪心算法
普通网友32 分钟前
高性能TCP服务器设计
开发语言·c++·算法
醒过来摸鱼33 分钟前
9.12 sinc插值
python·线性代数·算法·numpy
普通网友38 分钟前
C++与硬件交互编程
开发语言·c++·算法
liliangcsdn41 分钟前
EnsembleRetriever中的倒数融合排序算法
算法·排序算法
HUTAC44 分钟前
重要排序算法(更新ing)
数据结构·算法