【数组-简单】414. 第三大的数

Java实现 LeetCode 414 第三大的数 414. 第三大的数 给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2: 输入: [1, 2] 输出: 2 解释: 第三大的数不存在, 所以返回最大的数 2 . 示例 3: 输入: [2, 2, 3, 1] 输出: 1 解释: 注意,要求返回第三大... 阅读详情

【题目】
给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。
【示例 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
【代码】
【普通版】
在这里插入图片描述

class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        nums=list(set(nums))
        l=len(nums)
        if l<=2:
            return max(nums)
        nums.sort()
        return nums[-3]

【进阶版】
在这里插入图片描述

class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        #长度小于3的,直接返回最大值
        ll_nums = list(set(nums))
        if len(ll_nums) < 3:
            return max(ll_nums)
        #初始化最大值,次大值,第三大值
        a = b = c = float('-inf')
        #遍历列表:
        for num in nums:
            #大于最大值,依次更新,这里要注意更新顺序,先更新c, 然后b, 最后a
            if num > a:
                c = b
                b = a
                a = num
            #更新次大值
            elif num > b and num != a:
                c = b
                b = num
            #更新第三大值
            elif num > c and num != a and num != b:
                c = num
        return c
Leetcode 414. 第三大的数(详解 C语言实现) 414. 第三大的数(点击查看原题) 给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2: 输入: [1, 2] 输出: 2 解释: 第三大的数不存在, 所以返回最大的数 2 . 示例 3: 输入: [2, 2, 3, 1] 输出: 1 解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。 存在两个值为2的数,它们都排第二。 解题思路 阅读详情

相关推荐

Power BI应用案例:淘宝用户行为分析实战

一、案例背景 基于千万级的淘宝用户的使用记录,对淘宝用户的行为进行分析,具体指标包括:日PV、日UV、小时PV、小时UV、不同用户行为的PV、用户购买次数分布、用户购买频次分布、活跃用户消费情况等。通过本案例,可以基本看看Power BI都能分析达到怎么样的效果。 二、数据来源及结构 阿里天池官方发布的1万用户在2014年双十二期间的行为记录,数据量达1200万+。 数据下载地址:...

灰哥数据智能的专栏 1万+

刷题刷到爽-数组篇习题-414.第三大的数

数组篇算法习题-线性枚举

uniPause的博客 165

基于Dify1.9知识库流水线模板的思考——图像和表格数据处理

本文探讨了Dify1.9知识库流水线中LLM节点对文档图像/表格增强处理的优化方案。针对当前仅在内容后追加说明的简单做法,提出了结构化标注的改进方法:通过唯一ID和注释块标记图像/表格及其描述,确保内容可精准对齐。文章详细阐述了该方案的解析处理流程、数据结构化表示方法,以及在RAG检索和文档还原中的具体应用。关键经验包括:必须结构化标注非文本内容、LLM增强的必要性、语义向量化处理等。该方案解决了原始方法在内容重排、相似元素区分和检索精度等方面的问题。

roseey的专栏 1445

力扣(数组)第三大数

给你一个非空数组,返回此数组中。如果不存在,则返回数组中最大的数。[3, 2, 1]1第三大的数是 1。[1, 2]2第三大的数不存在, 所以返回最大的数 2。1注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1。题解:方法一:排序将数组从大到小排序后,从头开始遍历数组,通过判断相邻元素是否不同,来统计不同元素的个数。如果能找到三个不同的元素,就返回第三大的元素,否则返回最大的元素。

qq_44625745的博客 377

contextcapture多区块点云_多源点云数据融合的建筑物精细化建模

本文内容来源于《测绘通报》2020年第8期,审图号:GS(2020)3611号多源点云数据融合的建筑物精细化建模王树臻1, 郑国强1, 王光生1, 胡玉民2, 张德怀2, 亓伟3 ...

weixin_36301639的博客 1825

NumPy包(下) python笔记扩展

nditer 是 NumPy 中的一个强大的迭代器对象,用于高效地遍历多维数组。nditer 提供了多种选项和控制参数,使得数组的迭代更加灵活和高效。nditer 提供了多种控制参数,用于控制迭代的行为。1.order 参数order 参数用于指定数组的遍历顺序。默认情况下,nditer 按照 C 风格(行优先)遍历数组。# 创建一个二维数组​# 使用 C 风格遍历数组print(x)# 输出:# 1# 2# 3# 4# 5# 6​# 使用 Fortran 风格遍历数组。

正在学习中ing...... 1355

寻找数组中第三大的数

给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2: 输入: [1, 2] 输出: 2 解释: 第三大的数不存在, 所以返回最大的数 2 . 示例 3: 输入: [2, 2, 3, 1] 输出: 1 分析: 这个题目最大的难点...

qq_39084358的博客 1767

华硕ROG玩家国度安装Ubuntu双系统避坑指南:安全启动密钥那些事儿

本文详细解析了在华硕ROG玩家国度设备上安装Ubuntu双系统时,如何正确处理BIOS中的安全启动(Secure Boot)与密钥管理,避免常见的引导失败和Windows系统无法启动问题。指南提供了从数据备份、启动盘制作到BIOS精细设置(如将OS Type改为Other OS而非简单关闭Secure Boot)以及分区规划的完整流程,确保两个系统都能稳定共存。

weixin_29219189的博客 756

【JS】数组中第三大的数

给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 输入: [3, 2, 1] 输出: 1 示例 2: 输入: [1, 2]  输出: 2 解释: 第三大的数不存在, 所以返回最大的数 2 . 示例 3: 输入: [1, 1, 2] 输出: 2 解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。 存在两个值...

大白菜啊 1373

五子棋AI实战:极大极小搜索、Alpha-Beta剪枝与禁手实现

博弈树搜索是双人零和博弈AI的经典决策框架,其核心思想是假设对手最优应对,通过递归遍历走法空间寻找最优解。极大极小搜索配合Alpha-Beta剪枝,能在不影响决策结果的前提下将搜索量降至平方根级别,大幅提升搜索效率。在五子棋场景中,还需处理黑棋禁手规则,包括双三、双四和长连判定,并将其融入搜索框架。评估函数基于棋型识别对局面打分,走法排序和迭代加深进一步优化剪枝效果。这些技术共同构成了一个可运行的五子棋AI,适用于棋类AI入门与博弈搜索实践。

weixin_29054399的博客 133

让 ABAP 程序天生可翻译:Text Symbols 与 Text Pool 从入门到工程化落地

ABAP 国际化实践:Text Symbols 的工程价值与落地方法 摘要: 本文系统阐述了 ABAP 开发中 Text Symbols 的核心价值与实践方法。通过解耦程序逻辑与语言文本,Text Symbols 实现了代码国际化,避免了硬编码带来的维护难题。文章详细介绍了 Text Pool 结构、两种引用方式(独立引用 TEXT-001 和附着式 '(001)'),以及 SE38 和 SE63 的翻译流程。特别强调最大长度预留、术语统一等工程实践,并提供了 READ TEXTPOOL 自动化检查方案。最

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 247

厚积薄发—给定一个数组找第三个最大的数

基本题型:给定一个长度大于3的数组,找出其中第三个最大的数 先讨论在实际应用遇到,一般前面三个最大的不会有重复。 int findThirdBiggest(vector<vector<Point>>contours) { double biggest, bigger, big; biggest = bigger = big = 0.0; int biggestI...

joel的博客 1512

改进的主动轮廓模型实现图像分割

主动轮廓模型的优点在于可以自适应地调整轮廓形状和位置,适用于不同形状和大小的目标分割。改进的主动轮廓模型是一种有效的图像分割方法,能够适应不同场景下的图像分割需求。改进的主动轮廓模型涉及到许多参数,如模型参数、分割参数、权值系数等,这些参数的调整也会直接影响到分割结果。本文将介绍一个改进的主动轮廓模型,该模型可以实现对图像进行有效的分割。改进的主动轮廓模型是在传统的主动轮廓模型基础上进行的改进。和传统的模型相比,改进的主动轮廓模型加入了外部力和内部力,能够更好地适应复杂场景下的图像分割。

qq_39605374的博客 297

[数组][简单]414.第三大的数

tags: 简单 完成 数组 flag: green style: summer date: ‘2019-6-25’ 414.第三大的数 一、题目 给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2: 输入: [1, 2] 输出: 2...

GJXAIOU 的 优快云 博客 212

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

414.第三大的数(LeetCode)(C语言)(数组)(简单)

给定一个 非空 数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是 O(n) 。 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2: 输入: [1, 2] 输出: 2 解释: 第三大的数不存在, 所以返回最大的数 2 示例 3: 输入: [2, 2, 3, 1] 输出: 1 解释: 注意,要求返回第三大的数,是指第三大且...

weixin_45460916的博客 1021

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

LeetCode 414. 第三大的数(简单、数组)day13

题目描述:给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。 示例 1: 输入:[3, 2, 1] 输出:1 解释:第三大的数是 1 。 示例 2: 输入:[1, 2] 输出:2 解释:第三大的数不存在, 所以返回最大的数 2 。 示例 3: 输入:[2, 2, 3, 1] 输出:1 解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。 此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。 题目解析: 方法一:TreeSet集合

qq_43751200的博客 172

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【力扣】 414. 第三大的数(简单)

题目 给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。 示例 1: 输入:[3, 2, 1] 输出:1 解释:第三大的数是 1 。 示例 2: 输入:[1, 2] 输出:2 解释:第三大的数不存在, 所以返回最大的数 2 。 示例 3: 输入:[2, 2, 3, 1] 输出:1 解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。 此例中存在两个值为 2 的数,它们都排第二。在所有不同数字中排第三大的数为 1 。 提示: 1<=nums.lengt

毛毛的博客 204

LeetCode414 找到第三大的数

通过这道题,我们不仅巩固了数组遍历、数值比较这些基础 C 语言编程技巧,还接触到了处理特殊情况、防止数据溢出的小窍门(用long long类型过渡)。拓展思考一下,若题目要求改成找第k大的数(k为任意正整数),代码架构大致不变,只需将记录最大数值的变量扩展为k个,相应调整比较更新逻辑即可。希望大家通过这篇博客,对这类找特定名次数值的算法题有了更清晰理解,往后遇到类似题目能轻松攻克。以上就是本次博客的全部内容,要是大家在代码学习、算法理解上有任何疑问,或是发现文中不足之处,欢迎留言交流。

qq_64604732的博客 2093

414. 第三大的数

414. 第三大的数 难度:简单 题目描述 本来这道题不难,但是测试用例好坑,面向测试用例编程了好久 解题思路 类似于大根堆的思想,维护一个长度为3的数组,数组里元素按照从大到小的顺序排序。初始是int型最小值,每添加一个元素,维护数组里的元素大小顺序。 要注意的细节(巨坑)有: 重复的元素不能计算,如果不足三个值要返回最大值。这里的三个值不是数组的长度,是不重复出现的数字,比如111112,就只能算1和2,应该返回2. 还有测试用例 [-2147483648,-2147483648,-2147483648

hh155715的博客 506

leetcode 414.第三大的数

leetcode 414.第三大的数 题目描述 给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2: 输入: [1, 2] 输出: 2 解释: 第三大的数不存在, 所以返回最大的数 2 . 示例 3: 输入: [2, 2, 3, 1] 输出: 1...

EngineerHe的博客 789

LeetCode414_414. 第三大的数

LeetCode414_414. 第三大的数

luoyepiaoxue2014的博客 912

414. 第三大的数-LeetCode(C++)

每遍历一个数,就将其插入有序集合,若有序集合的大小超过 3,就删除集合中的最小元素。这样可以保证有序集合的大小至多为 3,且遍历结束后,若有序集合的大小为 3,其最小值就是数组中第三大的数;若有序集合的大小不足 3,那么就返回有序集合中的最大值。对于浮点数,C++ 标准库提供了一些宏来表示浮点数类型能表示的最小正规范化值、最大值、和非规范化(非零的最小值)等。容器中的元素是唯一的,并且是自动排序的。中的元素不能重复,如果尝试插入一个已存在的元素,该元素不会被加入到。中的元素是按照升序自动排序的。

woshihlf的博客 1144

leetcode414. 第三大的数

给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。 示例 1: 输入: [3, 2, 1] 输出: 1 解释: 第三大的数是 1. 示例 2: 输入: [1, 2] 输出: 2 解释: 第三大的数不存在, 所以返回最大的数 2 . 示例 3: 输入: [2, 2, 3, 1] 输出: 1 解释: 注意,要求返回第三大的...

少说,多做。 4465

Python描述 LeetCode 414. 第三大的数

Python描述 LeetCode 414. 第三大的数   大家好,我叫亓官劼(qí guān jié ),在GitHub & 优快云中记录学习的点滴历程,时光荏苒,未来可期,加油~博主目前仅在GitHub & 优快云中写博客,唯一博客更新的地址为:亓官劼的博客 ,近期将逐渐同步刷题相关记录到GitHub:Algorithmic-learning-records,大多是本人的刷题记录,如果转载请附上原文地址,谢谢。 由于学习工作的需要,算法刷题将会逐渐由C++向Python3

一起加油 787
上一篇: 【数组-简单】605. 种花问题
下一篇: 【数组-简单】1013. 将数组分成和相等的三个部分
菜菜2022
博客等级 码龄9年 67粉丝 1033原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值