枚举
遍历两次,时间复杂度:O(N^2),空间复杂度O(1)
var 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]}}}};
数组方法
数组的方法好像都是通过遍历的,时间复杂度更高了
var twoSum = function(nums, target) {for(let i = 0; i <= nums.length; i++){if(nums.includes(target - nums[i], i+1)){return [i, nums.indexOf(target - nums[i], i+1)]}}};
哈希表
使用map集合,时间复杂度是O(n),空间复杂度O(n),hash解构时间复杂度O(1),空间复杂度O(n)
var twoSum = function(nums, target) {const map = new Map()for(let i = 0; i < nums.length; i++){if(map.has(target -nums[i])){return [map.get(target -nums[i]) ,i]}map.set(nums[i], i)}};
拓展
上面的只能输出一组结果,如果要输出所有的,以枚举方式为例可参考下面的
var twoSum = function (nums, target) {const arr = []for (let i = 0; i <= nums.length; i++) {for (let j = i + 1; j <= nums.length; j++) {if (nums[i] + nums[j] === target) {arr.push([i, j])}}}return arr}
