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))

 

 

 

posted on 2019-03-01 15:14  时光游弋  阅读(245)  评论(0编辑  收藏  举报