首页 > 其他分享 >计算机低能儿从0刷leetcode | 11.盛最多水的容器

计算机低能儿从0刷leetcode | 11.盛最多水的容器

时间:2024-09-22 22:54:41浏览次数:14  
标签:11 遍历 int height 端点 最多水 低能儿 maxarea 指针

题目:11. 盛最多水的容器

解答:

不想暴力遍历,于是让右端点j从最右侧开始遍历,每次寻找离j最远、且高度不小于height[j]的左端点i,结果发现错误,比如[1,2]的情况。

于是又打补丁,按同样思路左端点i从0开始遍历,每次寻找离i最远、且高度不小于height[i]的右端点j,结果正确,然而时间复杂度并没有比暴力遍历少。

class Solution {
public:
    int maxArea(vector<int>& height) {
    int maxarea=-1;
        int i=0,j=0;
        for(j=height.size()-1;j>=0;j--){    
            i=0;
            while (i<j&&height[i]<height[j]){
                i++;
            }
            int area=(j-i)*height[j];
            maxarea=max(maxarea,area);   
        } 

          for(i=0;i<height.size();i++){
            j=height.size()-1;
           while (j>i&&height[j]<height[i]){
                j--;
            }
            int area=(j-i)*height[i];
            maxarea=max(maxarea,area);   
        } 
        return maxarea;
    }
};

于是看了题解,使用双指针的方法,这里需要明确两个要点:

1、每次选择height[i]和height[j]中最小的那个,然后计算容量=(i-j) x 这个最小的高度。这一点很好理解。

2、关键在于,接下来i和j该如何移动。

如果选择将高度更大的指针向内移动,那么下一次计算min(height[i], height[j])的时候,这个最小值只会减小或不变,那么计算出的面积一定是在减小的(因为向内移动,宽度一定减小)。

如果选择将高度更小的指针向内移动,那么下一次计算min(height[i], height[j])的时候,这个最小值可能增大、可能减小。

因此我们得出结论:一定将高度更小的指针向内移动。代码如下:

class Solution {
public:
    int maxArea(vector<int>& height) {
     int maxarea=-1;
        int i=0,j=height.size()-1;
        int area=-1;
        while(i<j){
            if(height[i]<height[j]){
                area=(j-i)*height[i];
                i++;
            }
            else if(height[i]>=height[j]){
                area=(j-i)*height[j];
                j--;
            }
            maxarea=max(maxarea,area);
        }return maxarea;
    }
};

标签:11,遍历,int,height,端点,最多水,低能儿,maxarea,指针
From: https://blog.csdn.net/weixin_74314153/article/details/142368923

相关文章

  • Win11系统提示找不到schedprov.dll文件的解决办法
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个schedprov.dll文件(挑选合适的版本文件)把它......
  • Win11系统提示找不到SDDS.dll文件的解决办法
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个SDDS.dll文件(挑选合适的版本文件)把它放入......
  • Win11系统提示找不到ScreenClipping.dll文件的解决办法
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个ScreenClipping.dll文件(挑选合适的版本文件......
  • Win11系统提示找不到Search.Core.dll文件的解决办法
    其实很多用户玩单机游戏或者安装软件的时候就出现过这种问题,如果是新手第一时间会认为是软件或游戏出错了,其实并不是这样,其主要原因就是你电脑系统的该dll文件丢失了或没有安装一些系统软件平台所需要的动态链接库,这时你可以下载这个Search.Core.dll文件(挑选合适的版本文件)把......
  • 408算法题leetcode--第11天
    3.无重复字符的最长子串3.无重复字符的最长子串思路:滑动窗口时间:O(n);空间:O(字符种类数)classSolution{public:intlengthOfLongestSubstring(strings){//滑动窗口:如果没有出现相同的字符,那么右指针一直向右intret=0,size=s.size();......
  • Blazor开发框架Known-V2.0.11
    Known今天发布了V2.0.11版本,本次版本添加了系统WebApi在线测试,系统菜单样式配置,表格支持用户设置栏位显隐和顺序,系统上下文支持静态组件与后端交互,以及对PgSQL进行了详细的测试,修复了一些BUG,网站支持微信扫码注册登录,文档和交流互动板块也更新了一部分。Known框架的功能和文档一直......
  • 学习011-01 Why We Recommend EF Core over XPO for New Development(为什么我们推荐在
    WhyWeRecommendEFCoreoverXPOforNewDevelopment(为什么我们推荐在新开发中使用EFCore而不是XPO)XAFsupportstwoObject-RelationalMappingtools:EntityFrameworkCoreandDevExpressXPO.Asyoumightexpect,weoftenreceivecomparisonrequestsfr......
  • 【2024潇湘夜雨】WIN 11_Pro_24H2.26120.1843软件选装纯净特别版9.22
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_24H2.26120.1843.2.全程离线精简、无人值守调用优化处理制作。部分优化适配系统可能要重启几次,即使显示适配失败也不要在意,可能部分优化不适用。3.OS版本号为26120.1843。......
  • 这些211,二战也要上岸!
    这些211学校,实力雄厚,就业领先,211中的佼佼者,二战也要上岸的好学校,搭配历年数据,供大家参考~目录①西安电子科技大学②南京理工大学③南京航空航天大学①西安电子科技大学复试线+招生人数Top级211,复试分数线低,“华为后花园”,就业无压力校招薪酬待遇情况......
  • 游戏中的状态控制 适合于全部游戏 scratch 20240922_111017
    完整的游戏游戏封面游戏进行游戏暂停游戏结束预设状态值0欢迎界面1游戏进行2游戏暂停3游戏结束需要定义变量来适时的改变他们变量使用英文stat背景代码在背景的代码里定义了【欢迎画面】的自制积木实现游戏的状态值的初始化等待玩家输入如果玩家输入了1那么......