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;
    }
};
相关推荐
m0_51801948几秒前
C++代码混淆与保护
开发语言·c++·算法
m0_569881473 分钟前
C++中的智能指针详解
开发语言·c++·算法
blackicexs6 分钟前
第九周第三天
算法
自信1504130575915 分钟前
选择排序算法
c语言·数据结构·算法·排序算法
2401_8735449216 分钟前
基于C++的游戏引擎开发
开发语言·c++·算法
add45a17 分钟前
C++中的组合模式
开发语言·c++·算法
無限進步D19 分钟前
简单贪心算法 cpp
c++·算法·贪心算法·蓝桥杯·入门·竞赛
2501_9454235421 分钟前
模板编程中的SFINAE技巧
开发语言·c++·算法
AMoon丶21 分钟前
Golang--垃圾回收
java·linux·开发语言·jvm·后端·算法·golang
承渊政道23 分钟前
【优选算法】(实战感悟二分查找算法的思想原理)
c++·笔记·学习·算法·leetcode·visual studio code