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

如何对降序数字数组实现相邻元素前减后并保留末位的运算?

实现方案

核心逻辑很明确:遍历数组的前n-1个元素,每个元素减去它的下一个元素,把这些差值收集起来后,再追加原数组的最后一个元素即可。以下是几种常用编程语言的实现示例:

Python 实现

基础循环写法

original = [40, 23, 15, 8]
result = []
# 遍历前n-1个元素(索引0到length-2)
for i in range(len(original) - 1):
    result.append(original[i] - original[i+1])
# 添加原数组最后一个元素
result.append(original[-1])
print(result)  # 输出: [17, 8, 7, 8]

简洁列表推导式

original = [40, 23, 15, 8]
result = [original[i] - original[i+1] for i in range(len(original)-1)] + [original[-1]]
print(result)

JavaScript 实现

基础循环写法

const original = [40, 23, 15, 8];
const result = [];
for (let i = 0; i < original.length - 1; i++) {
    result.push(original[i] - original[i + 1]);
}
result.push(original[original.length - 1]);
console.log(result); // 输出: [17, 8, 7, 8]

函数式写法

const original = [40, 23, 15, 8];
// 取前n-1个元素,每个元素和下一个做减法,再拼接最后一个元素
const result = original.slice(0, -1).map((val, idx) => val - original[idx + 1]).concat(original.slice(-1));
console.log(result);

Java 实现

import java.util.ArrayList;
import java.util.List;

public class ArrayTransform {
    public static void main(String[] args) {
        int[] original = {40, 23, 15, 8};
        List<Integer> result = new ArrayList<>();
        
        for (int i = 0; i < original.length - 1; i++) {
            result.add(original[i] - original[i + 1]);
        }
        result.add(original[original.length - 1]);
        
        System.out.println(result); // 输出: [17, 8, 7, 8]
    }
}

内容的提问来源于stack exchange,提问作者Emiliano Bermúdez Silva

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 07:38:31