leetcode414. 第三大的数

这篇具有很好参考价值的文章主要介绍了leetcode414. 第三大的数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

题目:

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

示例 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) 的解决方案吗?

思路:

把nums去重且排序,返回最后一个数或倒数第三个数即可。

代码:

class Solution {
public:
    int thirdMax(vector<int>& nums) {
        // 插入到set中实现自动去重和排序
        set<int> st;
        int i;
        for(i = 0; i < nums.size(); i++){
            st.insert(nums[i]);
        }
        nums.clear();
        // nums实现去重和排序
        for(set<int>::iterator it = st.begin(); it != st.end(); it++){
            nums.push_back(*it);
        }
        int max;
        if(nums.size() < 3){
            max = nums[nums.size()-1];
        }else {
            max = nums[nums.size()-3];
        }
        return max;
    }
};

emmm好吧我承认,这个写的有点复杂了

运行结果:

leetcode414. 第三大的数,LeetCode,算法

2023.8.19改良算法:

leetcode414. 第三大的数,LeetCode,算法 

 该思路:

设置set,从前往后遍历,只维护size=3的set,如果大于3,则去除最小值。文章来源地址https://www.toymoban.com/news/detail-659843.html

class Solution {
public:
    int thirdMax(vector<int>& nums) {
        set<int> st;
        for(int i = 0; i < nums.size(); i++){
            st.insert(nums[i]);
            if(st.size() > 3){
                st.erase(st.begin());
            }
        }
        int max;
        set<int>::iterator it = st.begin();
        if(st.size() == 3){
            it = st.begin();
            max = *it;
          
        }else {
            it = st.end();
            max = *(--it);
        }
        return max;
    }
};

到了这里,关于leetcode414. 第三大的数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • LeetCode 36题:有效的数独

    LeetCode 36题:有效的数独

    请你判断一个  9 x 9  的数独是否有效。只需要  根据以下规则  ,验证已经填入的数字是否有效即可。 数字  1-9  在每一行只能出现一次。 数字  1-9  在每一列只能出现一次。 数字  1-9  在每一个以粗实线分隔的  3x3  宫内只能出现一次。(请参考示例图) 注意: 一个有

    2024年02月12日
    浏览(11)
  • Leetcode19-差的绝对值为K的数对数目(2006)

    Leetcode19-差的绝对值为K的数对数目(2006)

    给你一个整数数组 nums 和一个整数 k ,请你返回数对 (i, j) 的数目,满足 i j 且 |nums[i] - nums[j]| == k 。 |x| 的值定义为: 如果 x = 0 ,那么值为 x 。 如果 x 0 ,那么值为 -x 。 示例 1: 输入:nums = [1,2,2,1], k = 1 输出:4 解释:差的绝对值为 1 的数对为: [1,2,2,1] [1,2,2,1] [1,2,2,1] [1,

    2024年01月15日
    浏览(11)
  • (排序) 剑指 Offer 45. 把数组排成最小的数 ——【Leetcode每日一题】

    (排序) 剑指 Offer 45. 把数组排成最小的数 ——【Leetcode每日一题】

    难度:中等 输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。 示例 1: 输入: [10,2] 输出: “102” 示例 2: 输入: [3,30,34,5,9] 输出: “3033459” 提示 : 0 nums.length = 100 说明: 输出结果可能非常大,所以你需要返回一个字符串而不

    2024年02月10日
    浏览(10)
  • C语言 | Leetcode C语言题解之第36题有效的数独

    C语言 | Leetcode C语言题解之第36题有效的数独

    题目: 题解:

    2024年04月22日
    浏览(9)
  • 第三大的数

    第三大的数

    414、第三大的数

    2024年02月15日
    浏览(7)
  • 【算法专题--双指针算法】leetcode--283. 移动零、leetcode--1089. 复写零

    【算法专题--双指针算法】leetcode--283. 移动零、leetcode--1089. 复写零

    🍁你好,我是 RO-BERRY 📗 致力于C、C++、数据结构、TCP/IP、数据库等等一系列知识 🎄感谢你的陪伴与支持 ,故事既有了开头,就要画上一个完美的句号,让我们一起加油 双指针 常见的双指针有两种形式,一种是对撞指针,⼀种是左右指针。 对撞指针:一般用于顺序结构中

    2024年03月17日
    浏览(13)
  • LeetCode算法题解(动态规划)|LeetCode343. 整数拆分、LeetCode96. 不同的二叉搜索树

    LeetCode算法题解(动态规划)|LeetCode343. 整数拆分、LeetCode96. 不同的二叉搜索树

    题目链接:343. 整数拆分 题目描述: 给定一个正整数  n  ,将其拆分为  k  个  正整数  的和(  k = 2  ),并使这些整数的乘积最大化。 返回  你可以获得的最大乘积  。 示例 1: 示例 2: 提示: 2 = n = 58 算法分析: 定义dp数组及下标含义: dp[i]表述正整数i拆分成k个正整数

    2024年02月04日
    浏览(14)
  • LeetCode算法小抄--滑动窗口算法

    ⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计6244字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀文末我的个人微信公众号:不懂开发的程序猿 个人网站:https://jerry-jy.co/ 滑动窗口算法 思路 1、我们在字符串 S 中使用双指针中的

    2023年04月09日
    浏览(15)
  • 算法沉淀——贪心算法六(leetcode真题剖析)

    算法沉淀——贪心算法六(leetcode真题剖析)

    题目链接:https://leetcode.cn/problems/broken-calculator/ 在显示着数字 startValue 的坏计算器上,我们可以执行以下两种操作: **双倍(Double):**将显示屏上的数字乘 2; **递减(Decrement):**将显示屏上的数字减 1 。 给定两个整数 startValue 和 target 。返回显示数字 target 所需的最小操

    2024年04月11日
    浏览(25)
  • 算法沉淀——贪心算法三(leetcode真题剖析)

    算法沉淀——贪心算法三(leetcode真题剖析)

    题目链接:https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-ii/ 给你一个整数数组 prices ,其中 prices[i] 表示某支股票第 i 天的价格。 在每一天,你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买,然后在 同一天 出售。 返回 你能获得

    2024年03月24日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包