LeetCode 11.盛最多水的容器

LeetCode 11.盛最多水的容器

思路🧐:

可以用对撞指针的方式,左右两边分别定义一个变量,都往中间走,相遇停止,中间不断更新最大容积,而选出来的最大值就是最大容积。

这里容积的计算方式为,左右两个边选出更短的边乘底边(下标相减) 。我们用对撞指针判断哪个边更短哪边移动,原理是当指针向中间走时,底边一定是越来越短的,而更短的那个边容积一定更小,所以需要淘汰,每次都更新最大容积,直到左右指针相遇,所选出来的容积就是最大值。

代码🔎:

c++ 复制代码
class Solution {
public:
    int maxArea(vector<int>& height) {
        int left = 0;
        int right = height.size() - 1;
        int MaxV = 0;
        while(left < right)
        {
            int v = min(height[left], height[right]) * (right - left); //计算容积
            MaxV = max(v,MaxV); //判断是否需要更新
            if(height[left] > height[right]) //哪边小哪边动
                right--;
            else
                left++;
        }
        return MaxV;
    }
};
相关推荐
六义义1 小时前
java基础十二
java·数据结构·算法
四维碎片1 小时前
QSettings + INI 笔记
笔记·qt·算法
Tansmjs1 小时前
C++与GPU计算(CUDA)
开发语言·c++·算法
独自破碎E2 小时前
【优先级队列】主持人调度(二)
算法
weixin_445476682 小时前
leetCode每日一题——边反转的最小成本
算法·leetcode·职场和发展
打工的小王2 小时前
LeetCode Hot100(一)二分查找
算法·leetcode·职场和发展
Swift社区2 小时前
LeetCode 385 迷你语法分析器
算法·leetcode·职场和发展
sonadorje3 小时前
svd在图像处理中的应用
算法
挖矿大亨3 小时前
c++中的函数模版
java·c++·算法
海天一色y3 小时前
普利姆算法(Prim)和克鲁斯卡尔算法(Kruskal)
windows·算法