Javascript已经排好序的数组,如何能快速找出a+b=8的所有组合的下标
使用哈希表实现,可以降时间复杂度降到O(n)
1 function twoSum(arr, target) { 2 let mapObj = {} 3 let result = [] 4 arr.forEach((v, i) => mapObj[v] = i) 5 for (let i =0 ; i < arr.length; i++) { 6 let j = mapObj[target - arr[i]] 7 if (j && j > i) { 8 result.push([i, j]) 9 } 10 } 11 return result 12 } 13 let arr = [1, 3, 5, 7, 9, 10] 14 console.log(twoSum(arr, 8))