最外层for循环里面,像下面这样把i的条件设为i >= 0也可行呀,为什么遍历的时候要用i > 0呢

来源:5-7 最大区间(2)

慕容2486063

2019-04-02

export default (arr) => {
if (arr.length < 2) return 0
let maxNum = 0
for (let i = arr.length - 1; i >= 0; i–) {
for (let j = 0; j < i; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j + 1]
arr[j + 1] = arr[j]
arr[j] = temp
}
}
if (i < arr.length - 1) {
maxNum = arr[i + 1] - arr[i] > maxNum ? arr[i + 1] - arr[i] : maxNum
}
}
return maxNum
}

写回答

2回答

想个昵称真难

2019-04-08

其实你写 i >=0 也是可以,只不过你 i =0 的时候,第二轮循环是不会执行的。j < 0 这个条件是怎么都不会满足的,既然 i = 0 这种情况第二轮循环是不会执行那,那我为啥不省点功夫写成 i > 0 呢?毕竟既能少写一个 = 号,也能使外层循环少跑一轮循环。

1
0

快乐动起来呀

2019-04-03

我有点没理解 i>0就可以了,为什么要i>=0呢?

0
1
_Jack_Han_
如果 i >= 0, 就不用返回 Math.max(maxNum, arr[1] - arr[0]), 可以直接返回maxNum
2020-07-19
共1条回复

JavaScript版 数据结构与算法

填补前端同学的算法短板,掌握面试中最常见的算法与数据结构

2467 学习 · 395 问题

查看课程