概述
题目:对非负序列a1,a2,……,an,在数轴上做垂线连接点(i,0)和(i,ai)。选择这样的两条线和x轴可以形成一个容器,我们以面积代表所装的水,求以这种方式构成的容器能装的最大面积。比如选择a2=3,a5=6,则所装的面积为9.
思路分析:
从两端逼近,求最大面积。
代码:
package 华为机试题;
import java.util.LinkedList;
/**
* @author Hutongling
*
* @time:2017年4月24日 下午1:58:21
*/
public class 求容器最大面积 {
static int maxArea(int[] height) {
int water = 0;
int i = 0, j = height.length - 1;
while (i < j) {
int h = height[i] > height[j] ? height[j] : height[i];
water = water > (j - i) * h ? water : (j - i) * h;
while (height[i] <= h && i < j)
i++;
while (height[j] <= h && i < j)
j--;
}
return water;
}
public static void main(String[] args) {
int height[]={1,2,5,3,1,5,3,9};
System.out.print("最大的面积为:" + maxArea(height));
}
}
代码结果:
最大的面积为:25
最后
以上就是爱笑悟空为你收集整理的求最大面积的全部内容,希望文章能够帮你解决求最大面积所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复