2021-03-19 Leetcode-11

https://leetcode-cn.com/problems/container-with-most-water/

  1. 取双指针i,j位于两端,则此时的纵坐标为height[i]和height[j],面积公式S(i,j)=min(height[i], height[j])\times(j-i),(0\leq i<j \leq n)
  2. 从两侧向内逐个收缩。由于i++或者j--后,以横轴为边的长度总是减1,所以纵轴的变化是需要关注的地方。因为容器的纵轴长度总是取最短的,为了使得现在的长边成为之后的短边从而扩大面积,所以应当保留当前的长边,即保留 max(height[i], height[j])的结果。
    2.1 假设一种情况,height[i]为长边,所以保留,进行j--。出现的情况:
    height[j-1] > height[i], S1 = height[i] * (j-i-1)
    height[j-1] < height[i], S2 = height[j-1] * (j-i-1)
    height[i-1] > height[j], S3 = height[j] * (j-i-1)
    height[i-1] < height[j], S4 = height[i-1] * (j-i-1)
    首先底边都是(j-i-1),所以比较纵向,根据大小情况height[i]是纵向长度中最大的,所以S1是这些情况下的最大值,因此保留长边height[i],移动短边height[j]。
    2.2 假设保留短边height[j]。则剩下的以height[j]为纵向边的所有容器面积,最大值都不可能大于当前的height[j]*(j-i)。即在S(i,j), S(i+1,j)...S(j-1,j)中,无论左侧的边如何变化,最大面积都是S(i,j)。所以保留短边,移动长边对于求最大容器是毫无意义的。
  3. 根据以上的思路将i,j不断进行收缩直至相等。
class Solution {
    public int maxArea(int[] height) {
        int maxa = 0;
        int i = 0;
        int j = height.length - 1;
        while(i < j){
            maxa = maxa(minheight(height, i, j), j - i, maxa);
            if(height[i] > height[j])   j--;
            else                        i++;
        }
        return maxa;
    }
    public int maxa(int l, int r, int max_area){
        int new_area = l * r;
        if(new_area > max_area){
            max_area = new_area;
        }
        return max_area;
    }
    public int minheight(int[] height, int i, int j){
        return height[i] > height[j] ? height[j] : height[i];
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 11. 盛最多水的容器[https://leetcode-cn.com/problems/container-wi...
    troubleL阅读 3,169评论 0 0
  • 七.数组 1.给定一个整数数组 nums和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返...
    寒江_d764阅读 2,515评论 0 0
  • <center>#1 Two Sum</center> link Description:Given an arr...
    铛铛铛clark阅读 6,669评论 0 3
  • to-do:看一下别人写的题解 https://github.com/981377660LMT/algorithm...
    winter_sweetie阅读 4,231评论 1 0
  • 推荐指数: 6.0 书籍主旨关键词:特权、焦点、注意力、语言联想、情景联想 观点: 1.统计学现在叫数据分析,社会...
    Jenaral阅读 11,041评论 0 5

友情链接更多精彩内容