• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
reLeetCode 热题 100-11 盛最多的谁

 

1 bu

image

 不合格答案 暴力

    // 时间超时
    int my_1(vector<int>& height){
        //  x * hign_min
        int max_=0;

        for(int i=0; i<height.size()-1;i++){
            
            for(int j=i+1; j<height.size();j++){
                
                int high_= std::min(height[i],height[j]);
                int wigth_=j-i;
                int cureent_=high_*wigth_;
                max_=std::max(cureent_,max_);

            }
        
        }

        return max_;

    }

  

官方思路

 

image

 

参考思路1

image

 

   // 参考思路自己写
    int my_2(vector<int>& height){
        int max_=0;
        int i=0;
        int j=height.size()-1;
        while(i<j){

                int high_= std::min(height[i],height[j]);
                int wigth_=j-i;
                int cureent_=high_*wigth_;
                // if(cureent_>max_){ //  完美答案 100%
                //   max_=cureent_;
                // }
                max_=std::max(cureent_,max_); // 16% 击败 每次都要执行 浪费时间
                if(height[i]>=height[j]){
                    j--; 
                }
                else{
                    i++;
                }

        }
    
        return max_;
    }

  

完善2

image

 

class Solution {
public:

    // 时间超时
    int my_1(vector<int>& height){
        //  x * hign_min
        int max_=0;

        for(int i=0; i<height.size()-1;i++){
            
            for(int j=i+1; j<height.size();j++){
                
                int high_= std::min(height[i],height[j]);
                int wigth_=j-i;
                int cureent_=high_*wigth_;
                max_=std::max(cureent_,max_);

            }
        
        }

        return max_;

    }
    
    // 参考思路自己写
    int my_2(vector<int>& height){
        int max_=0;
        int i=0;
        int j=height.size()-1;
        while(i<j){

                int high_= std::min(height[i],height[j]);
                int wigth_=j-i;
                int cureent_=high_*wigth_;
                if(cureent_>max_){ //  完美答案 100%
                  max_=cureent_;
                }
               // max_=std::max(cureent_,max_); // 16% 击败 每次都要执行 浪费时间
                if(height[i]>=height[j]){
                    j--; 
                }
                else{
                    i++;
                }

        }
    
        return max_;
    }


    int maxArea(vector<int>& height) {

        //return my_1(height);
        return my_2(height);

        //  
    }
    
};

  

posted on 2025-09-17 13:25  MKT-porter  阅读(5)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3