LeetCode 414. 第三大的数 (Third Maximum Number)[简单]

lework · 2020年06月10日 · 最后由 lework 回复于 2020年06月10日 · 142 次阅读

给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是 O(n)。

示例 1:

输入: [3, 2, 1]

输出: 1

解释: 第三大的数是 1.

示例 2:

输入: [1, 2]

输出: 2

解释: 第三大的数不存在, 所以返回最大的数 2 .

示例 3:

输入: [2, 2, 3, 1]

输出: 1

解释: 注意,要求返回第三大的数,是指第三大且唯一出现的数。

存在两个值为 2 的数,它们都排第二。

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/third-maximum-number 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        a = b = c = float('-inf')

        for num in nums:
            if a < num:
                a , b , c = num , a , b 
            elif b < num < a:
                b , c = num , b
            elif c < num < b:
                c = num
        return a if c == float('-inf') else c
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册