这题其实不难,就是有点烦,做法为模拟实际情况,从左到右遍历数组,找出一个“桶”,然后计算盛水量。寻找桶的方式为寻找它的左右边界。 为了逻辑清晰,这里使用了状态机,整体分为三个状态: 寻找左边界状态 寻找右边界状态 寻找最优右边界状态 于是上述三个状态下的行为分别是: 向右寻找第一个降序点 向右寻找第一个升序点 向右寻找更高的右边界 在状态 3 时,成桶的条件有两个: 找到了一个比左边界更高的右边界。(不可能更高了,更高就向左边溢出了) 没找到最优的右边界,但数组结束了。此时我们取记录下来的右边界计算水,然后把遍历指针回退到这个右边界上。 public long maxWat...