找出一个数组中和为 n 的两个数

来源:2-18 找出一个数组中和为 n 的两个数-嵌套循环不是最优解

慕斯卡7246137

2022-03-08

两数之和为n的问题,面试这样写能行吗
var arr = [1, 2, 4, 7, 11, 15]
function searchTwo(arr, n) {
let len = arr.length;
let map = new Map()
for (let i = 0; i < len; i++) {
if (map.has(arr[i])) {
return [arr[map.get(arr[i])], arr[i]]
} else {
map.set(n - arr[i], i)
}
}
}
searchTwo(arr, 15)

写回答

2回答

Charles_So_网页开发

2022-04-04

这方法我做了性能测试比对,比较慢。

我猜是map哈希表的读取、写入和访问比较慢,所以拖了性能的后腿。

0
0

双越

2022-03-08

首先,你要能跑通单元测试,跑通了就没问题。

然后,你这样写会导致空间复杂度为 O(n) ,要知道这一点。

0
0

2周刷完100道前端优质面试真题 双越最新力作

『前端面试真题100道』视频详解

1509 学习 · 642 问题

查看课程