题目链接:https://leetcode-cn.com/problems/third-maximum-number/
难度:简单
标签:数组(array)
给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)
。
示例 1
输入: [3, 2, 1]
输出: 1
解释: 第三大的数是 1.
示例 2:
输入: [1, 2]
输出: 2
解释: 第三大的数不存在, 所以返回最大的数 2 .
示例 3:
输入: [2, 2, 3, 1]
输出: 1
解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。
存在两个值为2的数,它们都排第二。
class Solution:
def thirdMax(self, nums: List[int]) -> int:
nums = set(nums)
nums = sorted(nums) # 对nums进行升序排序
return nums[-1] if len(nums) < 3 else nums[-3]
sort
函数sort()
函数用于对原列表进行排序,(注意关键字,只能说列表对象,而且是对原对象进行修改)如果指定参数,则使用比较函数指定的比较函数。
sort()方法语法:
list.sort( key=None, reverse=False)
reverse
– 指定排序规则,reverse = True
降序, reverse = False
升序(默认)。示例
# 列表
vowels = ['e', 'a', 'u', 'o', 'i']
# 降序
vowels.sort(reverse=True)
# 输出结果
print ( '降序输出:', vowels )
# 输出的结果:降序输出: ['u', 'o', 'i', 'e', 'a']
以下实例演示了通过指定列表中的元素排序来输出列表
# 获取列表的第二个元素
def takeSecond(elem):
return elem[1]
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
# 指定第二个元素排序
random.sort(key=takeSecond)
# 输出类别
print ('排序列表:', random)
# 输出的结果:排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]
sorted()
函数参考https://www.runoob.com/python/python-func-sorted.html
sorted()
函数对所有可迭代的对象进行排序操作。
sort
与 sorted
区别:sort 是应用在 list 上的方法,sorted 可以对所有可迭代的对象进行排序操作。
list 的 sort 方法返回的是对已经存在的列表进行操作,无返回值,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。