# 11、盛最多水的容器

11、盛最多水的容器

  • 暴力 for 循环,使用双层for循环,枚举对应长度
for(int i=0;i<heights.length-1;i++){
    for(int j = i+1;j<height.length;j++){
        area = (j-i) * Math.min(height(i),height(j));
        max = Math.max(max,area);
    }
}
return max
  • 中间夹逼法,根据题目特性,我们可以根据两侧的夹板,两个夹板中相对低的那边往中间移动。
while(i < j){
    area = (j-i) * Math.min(height[i],height[j]);
    max = Math.max(max,area);
    if(height[i]<height[j]){
        i++;
    }else{
        j--;
    }
}
return max;

总结方法:

要跳出线性思考的逻辑,跳出一维运行观念

主要优化思想,升维+ 空间换时间。注意把题目化繁为简。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容