leetcode 第三大的數

2021-09-25 23:56:36 字數 1009 閱讀 7538

這道題我沒有去追求特別高深的解法了。

給定乙個非空陣列,返回此陣列中第三大的數。如果不存在,則返回陣列中最大的數。要求演算法時間複雜度必須是o(n)。

示例 1:

輸入: [3, 2, 1]

輸出: 1

解釋: 第三大的數是 1.

示例 2:

輸入: [1, 2]

輸出: 2

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

示例 3:

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

輸出: 1

基本想法是先去重再排序。

class solution:

def thirdmax(self, nums):

myset = set(nums)

if len(myset)<3:

return max(nums)

else:

ls = sorted(myset, reverse=true)

return ls[2]

把這個**優化一下能提速不少,但基本思想不變。

class solution:

def thirdmax(self, nums):

ls = sorted(set(nums), reverse=true)

try:

return ls[2]

except:

return ls[0]

還有一種只去重不排序的方法。不排序就需要遍歷找最大值。

class solution:

def thirdmax(self, nums):

ls = list(set(nums))

if len(ls)<3:

return max(ls)

else:

ls.remove(max(ls))

ls.remove(max(ls))

return max(ls)

leetcode 第三大的數

題目描述 未完成原因 特例很多,情況考慮不周全 如果有相同的數字出現,不能妥善處理 正解 int thirdmax int nums,int numssize else cnt if cnt 2 nums i a nums i b else if nums i b else cnt if cnt 3...

LeetCode 第三大的數

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

第三大的數

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