(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
}
相关推荐
回家路上绕了弯2 分钟前
解锁异步编程新姿势:CompletableFuture 全方位指南
java·后端
一个儒雅随和的男子4 分钟前
Spring Security 框架深度集成与开发指南
java·后端·spring
এ᭄画画的北北5 分钟前
力扣-11.盛最多水的容器
算法·leetcode
MrSkye9 分钟前
🔥前端小白到高手之路必学:渲染过程与回流重绘详解🔥
前端·面试·浏览器
John_ToDebug12 分钟前
浏览器冷启动与热启动机制全解析:原理、案例与性能优化实战
c++·chrome·性能优化
木尧大兄弟22 分钟前
linux创建虚拟内存
java·linux·服务器
啊阿狸不会拉杆30 分钟前
《算法导论》第 7 章 - 快速排序
开发语言·数据结构·c++·算法·排序算法
丶小鱼丶36 分钟前
Spring之【初识AOP】
java·spring
亲爱的非洲野猪39 分钟前
如何定位一个高并发场景下API响应时间从200ms突增到2s的问题
java·性能优化·线上问题
冬夜戏雪1 小时前
java学习 73矩阵置零 54螺旋矩阵 148排序链表
数据结构·算法·矩阵