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++ 代码:

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;
    }
};

相关推荐

  1. Leetcode 414.

    2023-12-30 12:32:02       64 阅读
  2. LeetCode第一天(414.

    2023-12-30 12:32:02       45 阅读
  3. LeetCode-410.分割

    2023-12-30 12:32:02       58 阅读
  4. 排序题目:

    2023-12-30 12:32:02       34 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-30 12:32:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-30 12:32:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-30 12:32:02       87 阅读
  4. Python语言-面向对象

    2023-12-30 12:32:02       96 阅读

热门阅读

  1. 前端DApp开发利器,Ant Design Web3 正式发布 1.0

    2023-12-30 12:32:02       60 阅读
  2. C语言通过指针访问数组元素介绍

    2023-12-30 12:32:02       49 阅读
  3. Linux C 中 multiple definition of ‘xxx‘

    2023-12-30 12:32:02       58 阅读
  4. Linux cp 命令

    2023-12-30 12:32:02       50 阅读
  5. 单片机MCU堆栈概念与区别

    2023-12-30 12:32:02       51 阅读
  6. oracle-检查点队列

    2023-12-30 12:32:02       53 阅读
  7. TeeInputStream

    2023-12-30 12:32:02       56 阅读
  8. 704.二分查找

    2023-12-30 12:32:02       61 阅读