You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:将递归求数组最小值函数转为无栈迭代(O(1)辅助空间)

将分治递归找最小值转换为O(1)空间的迭代实现

原递归函数通过分治法拆分数组区间查找最小值,但要实现O(1)辅助空间且不使用栈,完全不需要模拟递归的分治调用栈——直接遍历指定的[low, high]区间,维护当前最小值即可,这是最简洁高效的实现方式。

迭代实现代码

int minNumber(int a[], int low, int high) {
    int current_min = a[low];
    for (int i = low + 1; i <= high; i++) {
        if (a[i] < current_min) {
            current_min = a[i];
        }
    }
    return current_min;
}

说明

  • 这个版本仅用一个变量current_min存储当前最小值,没有依赖任何额外数据结构,严格满足O(1)辅助空间要求。
  • 时间复杂度与原递归一致为O(n)(n为区间元素个数),空间复杂度从递归的O(logn)(递归调用栈深度)降至O(1)。
  • 相比模拟分治的迭代逻辑,直接遍历的实现更直观且效率无损耗,完全覆盖原递归函数的功能:返回数组a中[low, high]区间内的最小值。

内容的提问来源于stack exchange,提问作者Prashant Kumar Singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 12:50:57