479.数组第二大数
题目
描述
在数组中找到第二大的数。
注意:可以假定至少有两个数字,第二大的数是指降序数组中第二个数字。
样例
example 1:
input: [1,3,2,4]
output: 3
example 2:
input: [1,1,2,2]
output: 2
题解
思路
- 方法1:直接利用
list.sort()
排列数组,返回结果中第二个数; - 方法2:遍历整个数组,不断更新最大和次大数值;
步骤
- 方法一:从略,仅是对
list.sort()
的应用; - 方法二:
i. 首先确定数组的最大和次大(nums[0],nums[1]
);
ii. 然后遍历数组 :- 若数值大于最大,则次大为此时最大,最大等于该数值;
- 若数值仅大于次大,则仅更新最大;
iii. 返回次大;
程序
def secondMax(nums:list):
# method 1
nums.sort(reverse = True)
return nums[1]
# method 2
fmax,smax = nums[0],nums[1]
lens = len(nums)
for i in range(1,lens):
#数值大于最大值,需同时更新最大和次大
if nums[i] >= fmax:
smax = fmax
fmax = nums[i]
#数值仅大于次大值,仅需更新次大
elif nums[i] > smax:
smax = nums[i]
return smax