题解 | #盛水最多的容器#

盛水最多的容器

http://www.nowcoder.com/practice/3d8d6a8e516e4633a2244d2934e5aa47

java版——双指针
容量是由最小的那个边决定的,即

area = min(height[legt], height[right]) * (right - left)

然后我们每次移动较小的边,比如, height[left] < height[right] ,那我们就让 left++
为什么呢? 因为如果我们移动较大的边,那么移动后得到的容量一定会比现在小。即使较大边移动后遇到更大的边,但是容量是由较小边决定的,即容器的高度还是 height[left] ,但是宽度却变小了。所以移动较大边必不可能得到一个更大的容器,而移动较小边是有可能得到一个更大的容器的。



public class Solution {

    public int maxArea (int[] height) {
        int left = 0;
        int right = height.length - 1;
        int maxVal = 0;
        while(left < right){
            int area = Math.min(height[left], height[right]) * (right - left);
            maxVal = Math.max(maxVal, area);
            if(height[left] < height[right]){
                left++;
            }else{
                right--;
            }
        }
        return maxVal;
    }
}
全部评论

相关推荐

暴杀流调参工作者:春招又试了一些岗位,现在投递很有意思,不仅要精心准备简历,投递官网还得把自己写的东西一条一条复制上去,阿里更是各个bu都有自己的官网,重复操作无数次,投完简历卡完学历了,又该写性格测评、能力测评,写完了又要写专业笔试,最近还有些公司搞了AI辅助编程笔试,有些还有AI面试,对着机器人话也听不明白录屏硬说,终于到了人工面试又要一二三四面,小组成员面主管面部门主管面hr面,次次都没出错机会,稍有不慎就是挂。 卡学历卡项目卡论文卡实习什么都卡,没有不卡的😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务