如何对降序数字数组实现相邻元素前减后并保留末位的运算?
实现方案
核心逻辑很明确:遍历数组的前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
相关产品推荐
相关产品推荐

