414.|414. Third Maximum Number
文章图片
题目:给定一个非空的整数数组,返回这个数组当中第三大的数字,如果不存在,则返回最大的数字,时间复杂度为O(n)。
解法1:先对这个数组进行排序,可以用python当中的sorted()函数对数组进行从小到大的排序,然后在循环中进行判断。用count来计数当前是第几大的数字。由于数组当中如果只有<=2个不同的数字,那么返回的则是最大的那个数字;而如果有>=3个不同的数字,则返回的是第三大的。从排序后数组的后往前进行判别,如果在i=1之前,就有三个不同的数字,则返回第三个数字;如果i=1的时候只有一个不同的数字,那么也是返回nums1[l-1];如果已经存在了两个不同的数字,那么就要判断i=0与i=1的时候是否相等,如果相等则说明整个数组只有两个不同的数字,那么返回最大的nums1[l-1],如果不等,则说明i=0是第三大的数字,那么返回nums1[0]。
class Solution(object):
def thirdMax(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
l=len(nums)
count=0
nums1=sorted(nums)
for i in range(l-1,-1,-1):
if i!=1:
if nums1[i-1]==nums1[i]:
continue
else:
count=count+1
if count==2:
return nums1[i-1]
break
else:
if nums1[i-1]==nums1[i]:
return nums1[l-1]
else:
count=count+1
if count==2:
return nums1[0]
else:
return nums1[l-1]
【414.|414. Third Maximum Number】解法2:利用sorted()和set()函数,sorted()对数组进行排序,set()可以删除数组中重复的数据。
class Solution(object):
def thirdMax(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
nums1=sorted(set(nums))
l=len(nums1)
if l<=2:
return nums1[l-1]
else:
return nums1[l-3]
推荐阅读
- Maximum|Maximum Subsequence Sum
- Maximum execution time of 30 seconds exceeded解决办法
- [codeforces 1365E] Maximum Subsequence Value 或运算+为什么选三个元素对应最大值
- MaximumGap的思想
- [cf]|[cf] 1401 D.Maximum Distributed Tree
- DEDE 织梦cms出现Fatal error: Maximum execution time of 30 seconds exceeded in解决办法
- Maximum|Maximum execution time of 30 seconds exceeded
- 处理PHP|处理PHP mysql_query执行超时 【Fatal error: Maximum execution time of 300 seconds exceeded in……】...
- PHP中超时提示Fatal error: Maximum execution time of 30 seconds exceeded的解决方案
- 解决Fatal error: Maximum execution time of 30 seconds exceeded in...的问题