写一个方法,传入数字x,从一个一维数组里找到两个数字符合“n1 + n2 = x”

在前端开发中,你可以使用JavaScript来编写这个方法。下面是一个简单的实现,它接受一个数字x和一个一维数组arr作为参数,并尝试在数组中找到两个数字,使它们的和等于x。如果找到了这样的两个数字,它会返回一个包含这两个数字的数组;如果没有找到,它会返回null

function findTwoNumbersThatSumToX(x, arr) {
    const numMap = new Map();

    for (let i = 0; i < arr.length; i++) {
        const complement = x - arr[i];
        if (numMap.has(complement)) {
            return [complement, arr[i]]; // 找到了一对数字,它们的和等于x
        }
        numMap.set(arr[i], i); // 将当前数字添加到map中,以便后续查找其补数
    }

    return null; // 没有找到符合条件的数字对
}

// 示例用法:
const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const x = 10;
const result = findTwoNumbersThatSumToX(x, arr);
console.log(result); // 输出:[1, 9] 或 [2, 8] 或 [3, 7] 或 [4, 6] 中的任意一对(取决于数组遍历的顺序)

这个方法使用了哈希表(在JavaScript中是Map对象)来存储已经遍历过的数字,以便在常数时间内查找某个数字的补数(即x减去当前数字的结果)。这使得整个算法的时间复杂度为O(n),其中n是数组的长度。

posted @ 2025-01-20 15:03  王铁柱6  阅读(2)  评论(0编辑  收藏  举报