这题使用双指针来做很快就能实现,但是一般我们很难想到使用双指针来解决这个问题,我一开始想的就是用dp问题解法,因为之前是遇到过类似的问题42. 接雨水 - 力扣LeetCode,这个也是类似的数组,求面积最大的问题,而且那题确实是用dp问题方法求解的,但是在这题要使用双指针很轻松就能解答出,看官方解答很快,主要的思想就是如果我们不移动短的那个边界,而是只移动长的边界会导致最终结果不会得到更新,所以我们不能固定短的边界,我们需要更新短的边界只有更新掉短的地方才有可能有进步class Solution { public int maxArea(int[] height) { int l 0; int r height.length - 1; int ans 0; while (l r) { int area (r - l) * Math.min(height[l], height[r]); ans Math.max(ans, area); if (height[l] height[r]) { l; }else { r--; } } return ans; } }