今天敲代码的时候被基础给击倒了(难受
while (i < j) {
res = height[j] > height[i] ?
Math.max(res, height[i++] * (j - i)):
Math.max(res, height[j++] * (j - i));
}
上面是我写的代码节选,但是这个地方的计算结果总是出错。搞得我非常郁闷。。。
我苦思冥想觉得代码没问题啊!错出在哪呢?
最后发现就出在这个j++、i++。。。
原本我的预想是在while循环中使i和j各自自增,结果我忽略了j++和i++并不是循环之后才生效。。。它立马就生效了,而且是同一行代码。。。
也就是说假设j=4
那么按照我的代码,height[j++] 就等价于 height[4]
但是随后的 (j - i)就变成了 (5 - i)。。。(天呐,我居然犯了这种错误
与其类似的还有--i和--j。。。假设j = 4;
那么height[--j] 就等价于 height[3]。。。(基础还是得打牢啊,不然debug到死