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

如何实现array升序与对应降序索引元素相加生成新数组?

数组对称位求和生成新数组的实现方案

首先明确索引对应规则:
如果使用1基索引,原数组为arr[1]~arr[50],新数组第k位(1≤k≤50)的计算逻辑为arr[51 -k] + arr[k];如果使用编程常用的0基索引,原数组为arr[0]~arr[49],新数组第k位(0≤k≤49)的计算逻辑为arr[49 -k] + arr[k]。

以下是不同场景下的可行实现方案:

通用基础循环实现

全语言通用,逻辑最直观,无任何依赖:

# Python 0基索引示例
original_arr = list(range(1, 51)) # 模拟长度为50的原数组
new_arr = []
arr_len = len(original_arr)
for i in range(arr_len):
    new_arr.append(original_arr[arr_len - 1 - i] + original_arr[i])
  • 优势:逻辑清晰易调试,可随时修改运算规则(比如将加法替换为乘法、拼接等其他操作)
  • 劣势:代码量稍长,需要手动维护索引计算

内置API简化实现

利用语言自带的数组反转、配对语法精简代码,避免索引计算错误:

# Python 示例
original_arr = list(range(1, 51))
new_arr = [a + b for a, b in zip(reversed(original_arr), original_arr)]
  • 优势:代码简洁可读性高,不需要手动计算索引,出错概率低
  • 劣势:依赖语言内置的反转、配对API,部分小众编程语言可能无对应实现

性能优化实现

观察规则可知新数组为完全对称结构,第k位与第50-k+1位的计算结果完全一致,可仅计算半段数据完成数组生成:

original_arr = list(range(1, 51))
arr_len = len(original_arr)
new_arr = [0] * arr_len
# 仅遍历半段即可完成全数组赋值
for i in range((arr_len + 1) // 2):
    res = original_arr[arr_len - 1 - i] + original_arr[i]
    new_arr[i] = res
    new_arr[arr_len - 1 - i] = res
  • 优势:计算量减少一半,适合超大数组的性能优化场景
  • 劣势:仅适用于对称运算场景,若后续需要修改为非对称运算需要完全重构

内容的提问来源于stack exchange,提问作者A Mohamed Sakeel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 01:51:04