(LeetCode 面试经典 150 题 ) 11. 盛最多水的容器 (贪心+双指针)

题目:11. 盛最多水的容器



思路:双指针+贪心。时间复杂度0(n)。

先从最边上的两侧开始遍历:l=0,r=n-1
下一个最优解肯定是让高度小的那一侧移动产生的:if(height[l]<height[r]) l++; else r--;

C++版本:

cpp 复制代码
class Solution {
public:
    int maxArea(vector<int>& height) {
        int n=height.size();
        int l=0,r=n-1;
        int mx=0;
        while(l<r){
            mx=max(mx,min(height[l],height[r])*(r-l));
            if(height[l]<height[r]) l++;
            else r--;
        }
        return mx;
    }
};

JAVA版本:

java 复制代码
class Solution {
    public int maxArea(int[] height) {
        int n=height.length;
        int l=0,r=n-1;
        int mx=0;
        while(l<r){
            mx=Math.max(mx,Math.min(height[l],height[r])*(r-l));
            if(height[l]<height[r]) l++;
            else r--;
        }
        return mx;
    }
}

GO版本:

go 复制代码
func maxArea(height []int) int {
    n:=len(height)
    l,r:=0,n-1
    mx:=0
    for l<r {
        mx=max(mx,min(height[l],height[r])*(r-l))
        if height[l]<height[r] {
            l++
        }else {
            r--
        }
    }
    return mx
}
相关推荐
初听于你20 分钟前
缓存技术揭秘
java·运维·服务器·开发语言·spring·缓存
lypzcgf1 小时前
Coze源码分析-资源库-编辑工作流-后端源码-流程/技术/总结
go·源码分析·工作流·coze·coze源码分析·ai应用平台·agent平台
小蒜学长1 小时前
springboot多功能智能手机阅读APP设计与实现(代码+数据库+LW)
java·spring boot·后端·智能手机
charlie1145141912 小时前
精读 C++20 设计模式:行为型设计模式 — 访问者模式
c++·学习·设计模式·访问者模式·c++20
长路归期无望2 小时前
C语言小白实现多功能计算器的艰难历程
c语言·开发语言·数据结构·笔记·学习·算法
MobotStone3 小时前
AI训练的悖论:为什么越追求准确率越会产生幻觉?
算法
zizisuo4 小时前
解决在使用Lombok时maven install 找不到符号的问题
java·数据库·maven
linux kernel4 小时前
第二十三讲:特殊类和类型转换
开发语言·c++
笨蛋少年派4 小时前
JAVA基础语法
java·开发语言
渡我白衣4 小时前
深入剖析:boost::intrusive_ptr 与 std::shared_ptr 的性能边界和实现哲学
开发语言·c++·spring