<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>力扣刷题---两数之和</title>
</head>
<body>
</body>
<script>
let nums = [2, 8, 11, 1]
let target = 9
/*
* 两数之和:第一种解法
* 双重for 循环 相加得到值
*/
let twoSum = function(nums, target) {
for (let i = 0; i < nums.length; i++) {
for (let j = i + 1; j < nums.length; j++) {
if (nums[i] + nums[j] === target) {
return [i, j]
}
}
}
};
console.log('第一种解法:' + twoSum(nums, target))
/*
* 两数之和:第二种解法
* 先存值再对比
*/
var sumOfTwo = function(nums, target) {
const map = {}
for (let i = 0; i < nums.length; i++) {
if (map[target - nums[i]] >= 0) {
return [map[target - nums[i]], i]
}
map[nums[i]] = i;
}
}
console.log('第二种解法:' + sumOfTwo(nums, target))
/*
* 两数之和:第三种解法
* Map
*/
var sumOfThree = function(nums, target) {
const map = new Map()
for (let i = 0; i < nums.length; i++) {
//当前值目标值- 当前索引值能否匹配到map中的值
const otherIndex = map.get(target - nums[i])
if (otherIndex !== undefined) {
//能匹配到返回当前map 中的value,及其当前的下标
return [otherIndex, i]
}
//先存起来
map.set(nums[i], i)
}
}
console.log('第三种解法:' + sumOfThree(nums, target))
</script>
</html>
第一种方法的耗时:
第二种方式
第三种方式
方法还有很多,都需要自己去摸索,冲呀,比特币(BTC) 冲破10w U (跌破3000U)