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

盛水最多的容器

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param height int整型一维数组 
     * @return int整型
     */
    public int maxArea (int[] height) {
        // write code here
        //暴力枚举,超时
        // int ret = 0;
        // int v = 0;
        // for(int i=0;i<height.length;i++){
        //     for(int j=i+1;j<height.length;j++){
        //         v = Math.abs(j-i) *Math.min(height[j],height[i]);

        //         ret = Math.max(ret,v);
        //     }
        // }
        // return ret;

        //双指针:从两边开始利用单调性.高度减少时向里缩进,宽度也在减少。规律进行。
        int ret =0;
        int left=0;
        int right = height.length-1;
        while(left<right){
            int v = Math.min(height[left],height[right]) * (right-left);
            ret = Math.max(ret,v);

            //移动,移动高度小的
            if(height[left]<height[right]) left++;
            else right--;
        }

        return ret;
    }
}

全部评论

相关推荐

自来熟的放鸽子能手面...:这个不一定,找hr跟进一下
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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