昨天参加LeetCode的周赛的时候,写代码的过程中遇到了需要获取遍历过程中出现的最小值和次小值的场景。
由于之前没有认真思考过这个逻辑,导致当时浪费了不少时间。
现在把这个逻辑好好梳理一下。
下面以最小值和次小值为例。
首先需要声明两个变量
first_min, second_min = float('inf'), float('inf')
如果当前元素n小于first_min
, 说明n是目前已知的最小值,但是不能直接更新最小值,因为还需要维持次小值,因此,需要先把当前最小值赋值给次小值,然后再把当前元素赋值给最小值。
如果当前元素n不小于first_min
,但是小于second_min
,那么就只需要更新次小值。
"""
在遍历数组的过程中
保存最大值, 次大值, 最小值, 次小值
"""
from typing import List
def find_min_and_second_min(nums: List[