盛最多的水

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;
    
;

以上是关于盛最多的水的主要内容,如果未能解决你的问题,请参考以下文章

盛最多的水

盛最多水的容器

盛最多水的容器

11. 盛最多水的容器

11. 盛最多水的容器

11. 盛最多水的容器