题解 | #两数之和#

两数之和

https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f

/**
 * 给定一个整型数组和一个目标值,在数组中找出两个数的下标,使它们的和等于目标值。
 *
 * @param numbers int整型一维数组,输入的整型数组
 * @param target int整型,目标值
 * @return int整型一维数组,包含两个数的下标,如果找不到匹配的组合,则返回一个空数组
 */
export function twoSum(numbers: number[], target: number): number[] {
    const numberMap = new Map(); // 创建一个 Map 用于存储数字和它们的下标

    for (let i = 0; i < numbers.length; i++) {
        const current = numbers[i]; // 获取当前元素的值
        const needNumber = target - current; // 计算需要的另一个数

        if (numberMap.has(needNumber)) {
            // 如果 Map 中已经存在需要的另一个数,说明找到了满足条件的两个数
            const numberFirstIndex = i + 1; // 第一个数的下标
            const numberLastIndex = numberMap.get(needNumber) + 1; // 第二个数的下标
            return [numberFirstIndex, numberLastIndex].sort((a, b) => a - b); // 返回两个下标,并按升序排序
        } else {
            // 如果没有找到匹配的数,将当前元素和它的下标存储在 Map 中,以备后续查找
            numberMap.set(current, i);
        }
    }

    // 如果在循循环结束后没有找到满足条件的两个数,返回一个空数组
    return [];
}

#算法题解#
全部评论

相关推荐

找到实习就改名4月17日下午更改:1600一个月?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务