# 问
给定一个整数数组 nums 和一个整数目标值 target;在该数组中找出和为目标值target的那两个整数;返回它们的数组下标;
# 答
# 思路1:暴力破解
双循环遍历找出两个数。
- 时间复杂度:O(n²)
- 空间复杂度:O(1)
# 思路2:空间换时间
定义一个对象,记录数组每一项所需要的目标值。
- 时间复杂度:O(n)
- 空间复杂度:O(n)
var twoSum = function (nums, target) {
var obj = {}
for (var i = 0; i < nums.length; i++) {
var num = nums[i]
var needNum = target - num
// in运算符用于检测指定的属性是否在指定的对象或其原型链上
if (num in obj) {
return [i, obj[num]]
} else {
obj[needNum] = i
}
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13