zoukankan      html  css  js  c++  java
  • [LeetCode] 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.

    Hide Tags
     Array Two Pointers
     
        这题想明白题目之后不难,其实就是首尾指针向中间靠弄。
    #include <iostream>
    #include <vector>
    using namespace std;
    
    #define MIN(l,r) ((l)<(r)?(l):(r))
    class Solution {
    public:
        int maxArea(vector<int> &height) {
            int n = height.size();
            if(n<2) return 0;
            if(n==2)    return MIN(height[0],height[1]);
            int lidx=0,ridx=n-1,sum=0;
            while(lidx<ridx){
                if(sum<(ridx-lidx)*MIN(height[lidx],height[ridx]))
                    sum = (ridx-lidx)*MIN(height[lidx],height[ridx]);
                if(height[lidx]<height[ridx])
                    lidx++;
                else
                    ridx--;
            }
            return sum;
        }
    };
    
    int main()
    {
        vector<int > h{1,2,1};
        Solution sol;
        cout<<sol.maxArea(h)<<endl;
        return 0;
    }
  • 相关阅读:
    第九周作业
    第八周作业
    第七周作业
    作业2
    作业1
    2019春总结作业
    第十四周总结
    十二周编程总结
    十一周编程总结
    第十周作业
  • 原文地址:https://www.cnblogs.com/Azhu/p/4355052.html
Copyright © 2011-2022 走看看