📅  最后修改于: 2023-12-03 15:12:46.288000             🧑  作者: Mango
本题为门|门 IT 2005比赛中的第49题,其难度为中等,需要一定的编程基础和思维能力。
给出一组整数,要求找出其中两个数之和等于给定的目标值。假设每组输入只有一个满足条件的解,并且同一个元素不能使用两次。
函数签名如下:
/**
* @param {number[]} nums - 整数数组
* @param {number} target - 目标和
* @return {number[]} - 数组中两个数的下标,使其对应的值之和等于目标值
*/
function twoSum(nums, target) {
// your code here
}
输入:
twoSum([2, 7, 11, 15], 9)
输出:
[0, 1]
解释:
2 + 7 = 9,因此下标为0和1的元素之和为目标值。
输入:
twoSum([3, 2, 4], 6)
输出:
[1, 2]
解释:
2 + 4 = 6,因此下标为1和2的元素之和为目标值。
可以考虑使用哈希表来解决此问题。具体思路如下:
具体实现请参考下方的代码片段。
function twoSum(nums, target) {
const map = new Map();
for (let i = 0; i < nums.length; i++) {
map.set(nums[i], i);
}
for (let i = 0; i < nums.length; i++) {
const diff = target - nums[i];
if (map.has(diff) && map.get(diff) !== i) {
return [i, map.get(diff)];
}
}
return [];
}
本题考察了哈希表的基本思路和操作,同时也需要一定的编程基础和思维能力。在实现过程中需要注意边界条件和特殊情况的处理,例如同一个元素不能使用两次等。