zoukankan      html  css  js  c++  java
  • leetcode题解||Container With Most Water问题

    problem:

    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.

    X轴为底,两个纵轴为变,求容器的容积,短边是瓶颈。


    thinking:

    (1)短边决定水箱的有效高,底要尽可能的宽。

    (2)典型的双指针求解的题型。

    (3)贪心的策略,哪条边短,往里收缩寻找下一条边。

    code:

    class Solution {
    public:
        int maxArea(vector<int> &height) {
            // Start typing your C/C++ solution below
            // DO NOT write int main() function
            int i = 0;
            int j = height.size() - 1;
            
            int ret = 0;
            while(i < j)
            {
                int area = (j - i) * min(height[i], height[j]);
                ret = max(ret, area);
                
                if (height[i] <= height[j])
                    i++;
                else
                    j--;
            }
            
            return ret;
        }
    };

    时间复杂度为O(n)



    暴力破解法:时间复杂度为O(n*n)

    int area(vector<int>::iterator &a,vector<int>::iterator &b)
    {
        return (b-a)*(*a>*b?*b:*a);
    
    }
    
    class Solution {
    public:
        int maxArea(vector<int> &height) {
            int max_area=0;
            for(vector<int>::iterator i=height.begin()+1;i!=height.end();i++)
            {
                for(vector<int>::iterator j=height.begin();j!=i;j++)
                {
                    max_area=max(max_area,area(j,i));
                }
            }
            return max_area;
    
    
        }
    };


  • 相关阅读:
    vue Can't resolve 图片
    TP-LINK WR740N中继设置,AP设置,设置后不能上网,亲测有效
    vue VSCode 开发设置(html自动补全、eslint保存时格式化、vetur 格式化html)
    不再手写import
    vscode vuter的快捷键 关键字
    prototype是什么?
    真有效值与有效值概念
    现代文经典
    古文经典
    最后,我想对你说一句:我爱你
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6863733.html
Copyright © 2011-2022 走看看