题目
找出一个数组中第2大的数,要求不能排序或使用库函数
思路
只扫描一遍数组即可实现:
设置2个变量max1
,max2
,分别记录最大值
和次大值
,初始值均设为-∞
遍历数组,对当前元素num
:
- 若
max2 < num < max1
,说明num
是当前序列中的次大值
,更新max2=num
- 若
num > max1
,说明num是当前序列中的最大值,将max1
的值转移给max2
,更新max1=num
代码
def top2(nums):
if len(nums) < 2:
return False
max1, max2 = float('-inf'), float('-inf')
for num in nums:
if max2 < num < max1:
max2 = num
elif num > max1:
max2 = max1
max1 = num
return max2