题解 | #两数之和#
两数之和
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 []; }#算法题解#