首页 > 代码库 > LeetCode--Container With Most Water
LeetCode--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.
解题思路:影响蓄水量的因素包括容器的宽度以及容器的最短的挡板的高度,因此我们可以先将容器的宽度设为最大宽度,如此即可得到此时的最大值,为了让容器的体积增大,只有将最短的边变高才可能在容器宽度减小的情况下增大容器的容量。因此即可得到如下的代码
class Solution { public: int maxArea(vector<int> &height) { int n = height.size(); if(n<=1) return 0; vector<int> h = height; int start=0; int end = n-1; int res = 0; while(start<end) { int temp = end - start; if(h[start] > h[end]) { temp = temp*h[end]; end--; } else { temp = temp*h[start]; start++; } if(temp > res) res = temp; } return res; } };
LeetCode--Container With Most Water
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。