【发布时间】:2017-10-16 12:44:24
【问题描述】:
有一个由 N 个整数组成的数组。我们将从数组中取出两个数字并将这个数组分成三部分。准确地说,我们将在索引 P 和 Q 处获取元素。子数组的索引将是 [0, P-1], [P+1, Q-1], [Q+1, N-1]。显然,0 1。我们要求两个数之和的最小。
例如,我们可以通过三种方式从数组 [5, 2, 4, 6, 3, 7] 中获取两个数字。
- 索引 1 和 3。总和为 8
- 索引 1 和 4。总和为 5。
- 指数 2 和 4。总和为 7。
所以最小总和是 5。
我已经尝试并编写了以下函数来实现此效果。显然它非常慢。但我想不出写出更快算法的方法。
const arrayOne = [5, 2, 4, 6, 3, 7]
console.log(arrayOne)
const breakChain = (arr) => {
let lowest = 2000000000
for (let open = 1; open < arr.length - 3; open ++) {
for (let close = open + 2; close < arr.length - 1; close ++) {
const low = arr[open] + arr[close]
if (low < lowest) {
lowest = low
}
}
}
console.log(lowest)
}
breakChain(arrayOne)
【问题讨论】:
-
这是一个家庭作业。自己试试
-
请展示您尝试过的内容。 Stackoverflow 不是免费的代码编写或教程服务。目标是帮助您修复您的代码
-
@charlietfl 我自己试过了。显然它不是世界上最快的算法。
-
这样有效吗?具体是什么问题?
-
并不是说这会影响运行速度,但是您可以使用
Number.MAX_VALUE或Number.MAX_SAFE_INTEGER而不是硬编码的2000000000,并且其意图更加清晰。
标签: javascript arrays algorithm