每日一练python21

题目:(第三大的数)给你一个非空数组,返回此数组中 第三大的数 。如果不存在,则返回数组中最大的数。

示例 1:

输入:[3, 2, 1] 输出:1 解释:第三大的数是 1 。
示例 2:

输入:[1, 2] 输出:2
解释:第三大的数不存在, 所以返回最大的数 2 。
示例 3:

输入:[2, 2, 3, 1] 输出:1
解释:注意,要求返回第三大的数,是指在所有不同数字中排第三大的数。 此例中存在两个值为 2的数,它们都排第二。在所有不同数字中排第三大的数为 1 。

程序说明:
1、方法一用了set和sorted函数对数组进行去重,排序的操作,然后直接判断数组长度是否大于3,若大于3则输出倒数第三给数
2、方法二是将数组进行从大到小的操作,判断相邻的元素是否相同,若发现第三个不同的数,则返回它

全部代码:
方法一:

class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        y=list(set(nums))
        x=sorted(y)
        if len(x)<3:
            return x[len(x)-1]
        elif len(x)>=3:
            return x[len(x)-3]

方法二:

class Solution:
    def thirdMax(self, nums: List[int]) -> int:
        nums.sort(reverse=True)
        diff = 1
        for i in range(1, len(nums)):
            if nums[i] != nums[i - 1]:
                diff += 1
                if diff == 3:  # 此时 nums[i] 就是第三大的数
                    return nums[i]
        return nums[0]

题目来源:力扣(LeetCode)

Guess you like

Origin blog.csdn.net/qq_52669357/article/details/121583234