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

JavaScript中的‘auxiliary variable’是什么?在原地算法中如何使用?

什么是辅助变量(Auxiliary Variables)?以及在原地算法中的用法

定义

辅助变量就是算法执行过程中临时用来存储数据的变量,说白了就是个"临时中转站"。在原地(in-place)算法里,我们不能开辟额外的大存储空间(比如新数组、新哈希表),但可以用少量这类单个变量来临时存数据,避免操作时覆盖掉需要保留的原始值。

为什么原地算法离不开它?

原地算法的核心是在原数据结构上直接修改,不额外占用太多内存。但很多操作(比如交换、移位)如果直接做,会把原来的数据覆盖掉,这时候就需要辅助变量先把要保留的值存起来,再完成后续操作。

具体用法示例

1. 交换两个变量

最基础的场景,交换两个数如果不用辅助变量,在很多语言里会丢失原始值:

a = 5
b = 10

# 用辅助变量temp中转
temp = a  # 先把a的原始值存到temp里
a = b     # 把b的值赋给a
b = temp  # 再把temp里的原始a值赋给b
# 现在a=10,b=5,完成交换

2. 原地反转数组

反转数组时,需要交换首尾元素,辅助变量用来临时存储其中一个元素的值:

def reverse_in_place(arr):
    left = 0
    right = len(arr) - 1
    while left < right:
        # 用temp存左边元素,避免被覆盖
        temp = arr[left]
        arr[left] = arr[right]
        arr[right] = temp
        left += 1
        right -= 1

# 测试
my_arr = [1,2,3,4,5]
reverse_in_place(my_arr)
print(my_arr)  # 输出 [5,4,3,2,1]

这里的temp就是辅助变量,它只占用固定大小的内存(O(1)空间复杂度),完全符合原地算法的要求。

注意区分:辅助变量 vs 辅助数据结构

原地算法允许用辅助变量,但绝对不能用额外的大的数据结构(比如新数组、链表)。比如反转数组时如果新建一个数组存结果,那就不是原地算法了——但用单个temp变量是完全没问题的。

内容的提问来源于stack exchange,提问作者wraytheon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 07:48:27