欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 【Python3】【力扣题】414. 第三大的数

【Python3】【力扣题】414. 第三大的数

2025/4/24 21:28:40 来源:https://blog.csdn.net/yannan20190313/article/details/143615564  浏览:    关键词:【Python3】【力扣题】414. 第三大的数

【力扣题】题目描述:

【Python3】代码:

1、解题思路:使用集合去重,再转为列表。列表从大到小排列。

若列表长度超过3则有第三大值,返回下标为2的第三大值,若列表长度小于3则没有第三大值,返回下标为0的最大值。

知识点:set(...):转为集合。集合:无序、元素唯一、可变的序列。

              list(...):转为列表。列表:有序、元素可重复、可变的序列。

             列表.sort(reverse=True):列表降序排列(从大到小)。

class Solution:def thirdMax(self, nums: List[int]) -> int:# 使用集合去重,再转为列表s = list(set(nums))# 新列表降序排列s.sort(reverse=True)# 若新列表长度超过3,则返回第3大元素(从0开始,下标为2)if len(s) >= 3: return s[2]# 否则,返回最大元素(下标为0)else: return s[0]

2、解题思路:一个变量d用于统计不同元素个数。列表从大到小排列。

遍历列表,依次将当前元素与前一个元素比较,若两元素不同,d+1,若d等于3,则为第三大值返回当前元素。

遍历完列表,没有第三大值,则返回下标为0的最大值。

class Solution:def thirdMax(self, nums: List[int]) -> int:nums.sort(reverse=True)      # 列表降序排列n = len(nums)                # 列表长度    d = 1                        # 统计不同元素的个数# 遍历列表,依次比较2个元素,若不同,d+1,若d为3,返回该元素for i in range(1, n):if nums[i] != nums[i-1]:d += 1if d == 3:return nums[i]# 没有第三大元素,返回最大元素return nums[0]

3、解题思路:三个变量依次为最大值、次大值、第三大值,初始均为无穷小。

遍历列表,判断当前元素:

  • 若当前元素大于最大值,则当前元素为最大值,原最大值为次大值,原次大值为第三大值,
  • 若当前元素小于最大值大于次大值,则当前元素为次大值,原次大值为第三大值,
  • 若当前元素小于次大值大于第三大值,则当前元素为第三大值。

遍历完列表,若第三大值与初始值相同还是无穷小,则没有第三大值,返回最大值,否则返回第三大值。

知识点:float('-inf'):无穷小。

class Solution:def thirdMax(self, nums: List[int]) -> int:# a,b,c 分别为最大值、次大值、第三大值,初始为无穷小a, b, c = float('-inf'), float('-inf'), float('-inf')# 遍历列表每个元素for i in nums: if i > a:          # 当前元素比最大值还大a, b, c = i, a, belif a > i > b:    # 当前元素比次大值大,次大值和第三大值都替换新值b, c = i, belif b > i > c:    # 当前元素比第三大值大,替换第三大值c = i# 若第三大值为初始值则没有第三大值,返回最大值,否则返回第三大值return a if c == float('-inf') else c

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词