盛最多的水
Posted 氵冫丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了盛最多的水相关的知识,希望对你有一定的参考价值。
1.题目
2. 暴力
遍历所有可能
class Solution
public:
int maxArea(vector<int>& A)
int res = -1;
int m = A.size();
for (int i= 0; i< m; i++)
for (int j = i+1; j < m; j++)
int tmp = (j - i) * min(A[i], A[j]);
res = max(res, tmp);
return res;
;
2. 优化
面积= 间距 * 最小的高度
定义两个指针分别向内移动,由于,每次都是移动一步,相对两个指针而言,无论移动哪个指针,间距始终再减小并且减小的值始终为1;
为了保障面积最大,只有找出高度大的哪个指针向内部移动,这样可以保证面积最大;
class Solution
public:
int maxArea(vector<int>& A)
int res = -1;
int m = A.size();
int i = 0, j = m - 1;
while (i < j)
int tmp = (j - i) * min(A[i], A[j]);
if (A[i] < A[j])
i++;
else
j--;
res = max(res, tmp);
return res;
;
以上是关于盛最多的水的主要内容,如果未能解决你的问题,请参考以下文章