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

盛水最多的容器

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

解题思路:

这道题,刚开始看不懂题意,但是,官方视频讲解后,发现,原来,就是很简单的东西,就是一个贪心算法,其实,说得有点高大上了,就是,如何,找出两个数组里面的两个高度最小*(right-left)得出最大的面积,关键点就是两个:

1、求面积留最大的,留最大的

2、遍历高度时,留最高的

import java.util.*;


public class Solution {
    /**
     *
     * @param height int整型一维数组
     * @return int整型
     */
    public int maxArea (int[] height) {
        if(height.length < 1) {
            return 0;
        }
        int res = 0;
        int left =0, right = height.length-1; 
        while(left < right) {
            // 就是计算,两个高度最小的height *(right-left)得到的面积最大
            int capacity = Math.min(height[left], height[right])*(right-left);
            // 留下面积最大的
            res = Math.max(res, capacity);
            // 留下高度最高的
            if(height[left] > height[right]) {
                right--;
            } else {
                left++;
            }
        }
        return res;

    }
}
全部评论

相关推荐

喜欢疯狂星期四的猫头鹰在研究求职打法:短作业优先
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务