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

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



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

先从最边上的两侧开始遍历:l=0,r=n-1
下一个最优解肯定是让高度小的那一侧移动产生的:if(heightl<heightr) 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
}
相关推荐
yaoxin5211233 小时前
434. Java 日期时间 API - Period 基于日期的时间段
java·开发语言·python
凡人叶枫3 小时前
Effective C++ 条款30:透彻了解 inlining 的里里外外
linux·开发语言·c++·嵌入式开发·effective c++
noipp3 小时前
推荐题目:洛谷 P10907 [蓝桥杯 2024 国 B] 蚂蚁开会
c语言·c++·算法·编程·洛谷
学逆向的4 小时前
C++纯虚函数
开发语言·c++·网络安全
kyriewen4 小时前
Git Commit 前自动修复代码风格?配置 Husky + lint-staged,从此 CR 只聊逻辑
前端·git·面试
何极光4 小时前
IDEA集成Maven
java·maven·intellij-idea
程序员二叉4 小时前
【JUC】ThreadLocal底层原理|内存泄漏|弱引用|跨线程传递方案
java·开发语言·面试·职场和发展·juc
程序员二叉4 小时前
【JUC】线程池全套深度详解|参数|流程|拒绝策略|调优|异常处理
java·开发语言·jvm·算法·面试·juc
老马识途2.04 小时前
在AI的帮助下理解spring的启动过程
java·前端·spring
青山木4 小时前
Hot 100 --- 轮转数组
java·数据结构·算法