zoukankan      html  css  js  c++  java
  • leetcode笔记--水箱问题

    类型的引用:Solution *s=new Solution();

    1.Container With Most Water

    Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.

    Note: You may not slant the container and n is at least 2.

    给定一个vector作为纵线的高度输入,选择两条纵线使得他们和X轴一起构成的容器能够盛更多水。

    参考:http://blog.csdn.net/patkritlee/article/details/52453417

    解析:假设最大容器两条纵线为i,j,那么:a.在j的右端没有一条线会比它高!

    b.在i的左端也不会有比它高的线!

    c.所以我们从两头向中间靠拢,同时更新候选值;在收拢区间的时候优先从x,y中较小的边开始收缩;

    代码:

    class Solution {
    public:
        int maxArea(vector<int>& height) {
            int l=0;
        int r=height.size()-1;
        int area=0;
        while(l<r){
            area=max(area,(r-l)*min(height[r],height[l]));

    //查找l,r之间较小的h,从较小的一端开始逼近,找中间比它高的数值。
            if(height[l]<height[r]){
                int k=l;
                while(height[k]<=height[l])
                    k++;
                l=k;
            }
            else{
                int k=r;
                while(height[k]<=height[r])
                    k--;
                r=k;
            }
        }
     
        return area;
        }
    };

  • 相关阅读:
    在网页中实现截屏粘贴的功能
    CSS3 @font-face 做自定义图标
    Visual Studio报错一箩筐(持续更新)
    Axure实现vcg官网首页原型图
    Axure实现bootstrap首页线框图
    Web第一天——准备篇
    vue动态加载组件
    组件封装之将代码放到npm上
    node连接mysql生成接口,vue通过接口实现数据的增删改查(二)
    autoCAD2007 快捷键 标注
  • 原文地址:https://www.cnblogs.com/bananaa/p/7146226.html
Copyright © 2011-2022 走看看