赞
踩
11. 盛最多水的容器
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。
找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。
返回容器可以储存的最大水量。
说明:你不能倾斜容器。
示例 1:
输入: [1,8,6,2,5,4,8,3,7]
输出: 49
解释: 图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下,容器能够容纳水(表示为蓝色部分)的最大值为 49。
此处使用双指针进行解题,努力求得最大容量。比较左右指针,较小的一方移动寻求计算的容量最大。
代码如下:
public int maxArea(int[] height) { // 初始化左右指针及结果 int left = 0, right = height.length - 1, area = 0; while (left < right) { // 计算临时容量 左右指针宽度乘以 左右指针最小高度 int areaTemp = (right - left) * Math.min(height[left], height[right]); // 比较最大值 area = Math.max(area,areaTemp); // 左右指针哪个较小移动哪一侧 if(height[left] > height[right]){ right--; }else{ left++; } } return area; }
运行结果如下:
个人见解不喜勿喷!!!
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。