• 【Container With Most Water】cpp


    题目:

    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.

    代码:

    class Solution {
    public:
        int maxArea(vector<int>& height) {
                if ( height.size()<2 ) return 0;
                int max_area = 0;
                int left = 0;
                int right = height.size()-1;
                while ( left<right )
                {
                    if ( height[left]<=height[right] )
                    {
                        max_area = std::max(max_area, (right-left)*height[left]);
                        left++;
                    }
                    else
                    {
                        max_area =  std::max(max_area, (right-left)*height[right]);
                        right--;
                    }
                }
                return max_area;
        }
    };

    tips:

    试图用DP去做,但是没想出来;最后无奈落入了Greedy的俗套solution。

    这个greedy的思路也是蛮巧的:从两头开始往中间greedy,头尾两个greedy一起变化才得到greedy的条件。

    =======================================

    第二次过这道题,这道题题意不清晰:如果选了某两个板子,就当其他板子不存在。

    class Solution {
    public:
        int maxArea(vector<int>& height) {
                int l = 0;
                int r = height.size()-1;
                int ret = 0;
                while ( l<r )
                {
                    if ( height[l]<=height[r] ) 
                    {
                        ret = max(ret, (r-l)*height[l]);
                        l++;
                    }
                    else
                    {    
                        ret = max(ret, (r-l)*height[r]);
                        r--;
                    }
                }
                return ret;
        }
    };
  • 相关阅读:
    BaseDao
    url中文参数解决方案
    Ajax实现步骤和原理
    在服务器端使用文件时的路径解决方案
    用户验证登录拦截器
    jenkins环境搭建
    gitlab环境搭建
    nexus3.X环境搭建
    base64文件大小计算
    JVM远程调试功能
  • 原文地址:https://www.cnblogs.com/xbf9xbf/p/4540412.html
Copyright © 2020-2023  润新知