在数组中查找最小值和最大值
问题
给定一个数组,找到:
- 最小值
- 最大值
代码
class Solution:
def getMinMax(self, arr):
min_val = arr[0]
max_val = arr[0]
for num in arr:
if num < min_val:
min_val = num
elif num > max_val:
max_val = num
return [min_val, max_val]
逐行解释
- 初始化最小值和最大值
min_val = arr[0]
max_val = arr[0]
为什么?
我们假设第一个元素既是最小值也是最大值
避免使用额外的比较或无穷大值
适用于所有数组(包括负数)
-
- 遍历数组
for num in arr:
为什么?检查每个元素
需要找到最小值和最大值
- 遍历数组
检查最小值
if num < min_val:
min_val = num
为什么?
如果当前数字更小 → 更新最小值
确保我们始终保持最小的值
- 检查最大值
elif num > max_val:
max_val = num
为什么?如果当前数字更大 → 更新最大值
elif 避免了不必要的检查,如果已经更小 - 返回结果
return [min_val, max_val]
为什么?将两个值作为列表一起返回
为什么这种方法更好
- 单次循环(高效)
- 仅需一次遍历
- 时间复杂度 → O(n)
- 不占用额外空间
仅使用两个变量
空间复杂度为 O(1)
- 优化的比较
使用 elif 避免额外比较
减少总操作次数 - 简单且清晰
易于理解
适用于所有类型的数字
示例
arr = [3, 5, 1, 8, 2]
输出:
[1, 8]
重要点
- 用第一个元素初始化
- 仅遍历一次
- 动态更新最小值和最大值
- 使用 elif 提高效率