LeetCode 414 第三大的數

2021-09-26 01:45:50 字數 1395 閱讀 1990

給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是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:

if len(list(set(nums)))<3:

return max(nums)

else:

result = list(set(nums))

result.remove(max(result))

result.remove(max(result))

return max(result)

因為題意有要求o(n),因此還有種符合要求的解法:

class solution:

def thirdmax(self, nums: list[int]) -> int:

first, second, third = -float('inf'),-float('inf'),-float('inf')

for i in nums:

if i in [first, second, third]:

continue

elif i>first:

first, second, third = i, first, second

elif i >second:

second, third = i, second

elif i>third:

third = i

if second == -float('inf') or third == -float('inf'):

return first

return third

思路很直接,設定最大,第二,第三的值,然後依次更新即可。

LeetCode 414 第三大的數

隨機一題 給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 ...

LeetCode 414 第三大的數

給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2 示例 3 輸入 2,2,3,1 輸出 1 解釋 ...

LeetCode 414 第三大的數

給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o n 示例 1 輸入 3,2,1 輸出 1 解釋 第三大的數是 1.示例 2 輸入 1,2 輸出 2 解釋 第三大的數不存在,所以返回最大的數 2示例 3 輸入 2,2,3,1 輸出 1 解釋 注...