首页 > 学院 > 开发设计 > 正文

LeetCode_container-with-most-water

2019-11-08 01:32:51
字体:
来源:转载
供稿:网友

链接:https://www.nowcoder.com/PRactice/c97c1400a425438fb130f54fdcef0c57?tpId=46&tqId=29167&tPage=1&rp=1&ru=/ta/leetcode&qru=/ta/leetcode/question-ranking 来源:牛客网

题目描述: 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 area, max=0; int i=0, j=height.size()-1; while (i<j) { area = (j-i)*min(height[i], height[j]); if (area>max) max = area; else if (height[i]<height[j]) ++i; else --j; } return max; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表