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题:有效的数独

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

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

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

    2024年02月10日
    浏览(51)
  • 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日
    浏览(51)
  • C语言 | Leetcode C语言题解之第36题有效的数独

    题目: 题解:

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

    414、第三大的数

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

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

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

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

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

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

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

    题目链接:https://leetcode.cn/problems/integer-replacement/ 给定一个正整数 n ,你可以做如下操作: 如果 n 是偶数,则用 n / 2 替换 n 。 如果 n 是奇数,则可以用 n + 1 或 n - 1 替换 n 。 返回 n 变为 1 所需的 最小替换次数 。 示例 1: 示例 2: 示例 3: 提示: 1 = n = 2^31 - 1 思路 这里我们

    2024年03月23日
    浏览(53)
  • 算法沉淀——贪心算法五(leetcode真题剖析)

    题目链接:https://leetcode.cn/problems/jump-game-ii/ 给定一个长度为 n 的 0 索引 整数数组 nums 。初始位置为 nums[0] 。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i + j] 处: 0 = j = nums[i] i + j n 返回到达 nums[n - 1] 的最小跳跃次

    2024年04月11日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包