zoukankan      html  css  js  c++  java
  • Container With Most Water

    Given n non-negative integers a1a2, ..., an, where each represents a point at coordinate (iai). n vertical lines are drawn such that the two endpoints of line i is at (iai) 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.

    思路:这道题就是求最大矩形面积。当长度减少时,高度必须增加才能增大面积。使用两个指针——首指针和尾指针,取min(ai,aj)*(j-i).如果头指针指向的结点小于尾指针指向的结点,这头指针向前移动,否则尾指针向前移动,再继续求解矩形面积。感觉就像贪心算法,如果距离减小,必须通过增加高度来弥补。

    class Solution {
    public:
        int maxArea(vector<int> &height) {
            int nSize=height.size();
            if(nSize==0)
                return 0;
            int Area=0;
            int mostWater=0;
            vector<int>::iterator iter1=height.begin();
            vector<int>::iterator iter2=height.end()-1;
            while(iter1<iter2)
            {
                Area=min(*iter1,*iter2)*(iter2-iter1);
                if(mostWater<Area)
                    mostWater=Area;
                if(*iter1<*iter2)
                    iter1++;
                else
                    iter2--;
            }
            return mostWater;
        }
    };
  • 相关阅读:
    6.Dump域内用户Hash姿势集合
    4.浅谈跨域劫持
    7. Smali基础语法总结
    7.linux安全基线加固
    12. git常用语法总结
    5.内网渗透之PTH&PTT&PTK
    4. 内网渗透之IPC$入侵
    1.我所了解的内网渗透
    34.不安全的HTTP
    2.内网渗透之端口转发
  • 原文地址:https://www.cnblogs.com/awy-blog/p/3619989.html
Copyright © 2011-2022 走看看