LeetCode 414 第三大的數

2022-06-13 17:42:09 字數 1884 閱讀 2616

問題描述:

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

示例 1:

輸入:[3, 2, 1]輸出:1解釋:第三大的數是 1.
示例 2:

輸入:[1, 2]輸出:2解釋:第三大的數不存在, 所以返回最大的數 2 .
示例 3:

輸入:[2, 2, 3, 1]輸出:1解釋:注意,要求返回第三大的數,是指第三大且唯一出現的數。

存在兩個值為2的數,它們都排第二。

方法1:

1

class

solution(object):

2def

thirdmax(self, nums):

3"""

4:type nums: list[int]

5:rtype: int

6"""

7nums.sort()

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

9return nums[-1]

10 nums = nums[::-1]

11 i,j,index = 0,1,0

12while i 13 j = i + 1

14while j < len(nums) and nums[i] ==nums[j]:

15 j += 1

16 index += 1 #

當相鄰兩數不相等時+1,兩次不相等即找到了第三大的數字

17 i =j

18if index == 2:

19return nums[j]

方法2:

1

class

solution(object):

2def

thirdmax(self, nums):

3"""

4:type nums: list[int]

5:rtype: int

6"""

7nums.sort()

8 new_set =set(nums)

9if len(new_set) < 3:

10return nums[-1]

11 nums = nums[::-1]

12new_set.remove(max(new_set))

13new_set.remove(max(new_set))

14return max(new_set)

方法3:

1

class

solution(object):

2def

thirdmax(self, nums):

3"""

4:type nums: list[int]

5:rtype: int

6"""

7nums =list(set(nums))

8nums.sort()

9if len(nums) <= 2:

10return nums[-1]

11else:12

return nums[-3]

2018-10-01 08:42:29

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 解釋 注...