1.两数之和
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
// 暴力解法,时间复杂度O(n^2)
// var twoSum = function (nums, target) {
// for (var i = 0; i < nums.length; i++) {
// for (var j = i + 1; j < nums.length; j++) {
// if (nums[i] + nums[j] === target) {
// return [i, j]
// }
// }
// }
// };
// 使用哈希表,时间复杂度O(n)
var twoSum = function (nums, target) {
// 维护 target - x 的值
var map = {}
for (var i = 0; i < nums.length; i++) {
if (map[nums[i]] !== undefined) {
return [map[nums[i]], i]
}
map[target - nums[i]] = i
}
};
// 示例 1:
// 输入:nums = [2,7,11,15], target = 9
// 输出:[0,1]
// 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。
console.log(twoSum([2, 7, 11, 15], 9));
// 示例 2:
// 输入:nums = [3,2,4], target = 6
// 输出:[1,2]
console.log(twoSum([3, 2, 4], 6));
// 示例 3:
// 输入:nums = [3,3], target = 6
// 输出:[0,1]
console.log(twoSum([3, 3], 6));