题解 | #两数之和#
两数之和
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 [];
}
#算法题解#
海康威视公司福利 1158人发布