题解 | #两数之和#

两数之和

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 [];
}

#算法题解#
全部评论

相关推荐

01-15 13:45
门头沟学院 Java
牛客92772631...:boss招聘挂岗位是要花钱的,花了钱不挂白不挂,别那么焦虑,但是也要做好跳槽的准备
找实习记录
点赞 评论 收藏
分享
合适才能收到offe...:项目岗是什么岗?我看你有段好像跟策划运营相关,如果找运营的话第三段经历写详细点儿。 个人建议是把自我评价删了换成专业技能放在工作经验上或者下面。学生会那个也可以删,把第一个包装成店铺运营,写4-6给点。第三个也是写4-6个点。注意工作内容➕部分数据。 投递的时候BOS招呼用语改一下,换成我有xx工作经验,熟练掌握xx技能样式,也可以简历截图然后直接发送。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务