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;
    }
};
相关推荐
西西弟10 分钟前
常见排序算法集合(数据结构)
数据结构·算法·排序算法
Yzzz-F15 分钟前
[模板]Nim博弈
算法
小龙报16 分钟前
【数据结构与算法】栈和队列的综合应用:1.用栈实现队列 2.用队列实现栈 3.设计循环队列
c语言·数据结构·数据库·c++·redis·算法·缓存
重生之我是Java开发战士22 分钟前
【广度优先搜索】队列:N叉树的层序遍历,二叉树的锯齿形层序遍历,二叉树的最大宽度,在每个树行中找最大值
数据结构·算法·leetcode·广度优先
qq_4160187234 分钟前
移动平台C++开发指南
开发语言·c++·算法
王璐WL42 分钟前
【C++】string的经典算法题
开发语言·c++·算法
闻缺陷则喜何志丹42 分钟前
【动态规划】P8591 『JROI-8』颅脑损伤 2.0|普及+
c++·算法·动态规划·洛谷
阿贵---1 小时前
C++中的工厂模式高级应用
开发语言·c++·算法
倾心琴心1 小时前
【agent辅助pcb routing coding学习】实践7 length matching 算法学习
学习·算法·agent·pcb·routing
y = xⁿ1 小时前
【LeetCodehot100】T114:二叉树展开为链表 T105:从前序与中序遍历构造二叉树
java·算法·链表