LeetCode 热题100——11.盛最多水的容器
题目给定一个长度为n的整数数组height。有n条垂线第i条线的两个端点是(i, 0)和(i, height[i])。找出其中的两条线使得它们与x轴共同构成的容器可以容纳最多的水。返回容器可以储存的最大水量。说明你不能倾斜容器。示例 1输入[1,8,6,2,5,4,8,3,7]输出49解释图中垂直线代表输入数组 [1,8,6,2,5,4,8,3,7]。在此情况下容器能够容纳水表示为蓝色部分的最大值为 49。示例 2输入height [1,1]输出1提示n height.length2 n 10^50 height[i] 10^4题解1.核心思想初始化两个指针i 0左端j n-1右端。每次计算当前 (i, j) 形成的容器面积并更新最大值。然后移动高度较小的那个指针。2.为什么移动较短边木桶效应一个木桶能装多少水取决于木桶最短的边。如果移动较长的那条边宽度减小但高度最多还是原来的短边不会变高所以面积只会更小。如果移动较短的那条边虽然宽度也减小但可能遇到更高的边让高度增加从而有机会获得更大的面积。因此每次移动当前较短的边是唯一可能让面积变大的做法。答案class Solution { public: int maxArea(vectorint height) { int i0,jheight.size()-1;//i为左指针j为右指针 int ans0; while(ij){ int areamin(height[i],height[j])*(j-i); //移动高度较小的那个指针 if(height[i]height[j]) i; else j--; ansmax(ans,area); } return ans; } };
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2477053.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!