在数组中查找最小值和最大值

在数组中查找最小值和最大值
问题

给定一个数组,找到:

  1. 最小值
  2. 最大值
    代码
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]

逐行解释

  1. 初始化最小值和最大值
    min_val = arr[0]
    max_val = arr[0]

    为什么?

我们假设第一个元素既是最小值也是最大值
避免使用额外的比较或无穷大值
适用于所有数组(包括负数)

    1. 遍历数组
      for num in arr:
      为什么?

      检查每个元素
      需要找到最小值和最大值

检查最小值
if num < min_val:
min_val = num

为什么?

如果当前数字更小 → 更新最小值
确保我们始终保持最小的值

 

  • 检查最大值
    elif num > max_val:
    max_val = num

    为什么?

    如果当前数字更大 → 更新最大值
    elif 避免了不必要的检查,如果已经更小

  • 返回结果
    return [min_val, max_val]
    为什么?

    将两个值作为列表一起返回

 

为什么这种方法更好

  1. 单次循环(高效)
  1. 仅需一次遍历
  2. 时间复杂度 → O(n)
  1. 不占用额外空间

仅使用两个变量
空间复杂度为 O(1)

  1. 优化的比较

    使用 elif 避免额外比较
    减少总操作次数

  2. 简单且清晰

    易于理解
    适用于所有类型的数字

示例
arr = [3, 5, 1, 8, 2]

输出:

[1, 8]

重要点

  1. 用第一个元素初始化
  2. 仅遍历一次
  3. 动态更新最小值和最大值
  4. 使用 elif 提高效率

更多