LeetCode 11

双指针解法:

首先分析题目,盛水的容量其于宽度与小的高度,先初始化两个指针分别在第一个与最后一个数(i,j)

如下:

我们可以分析发现,当heigthi为3时,我们移动j只会让宽度变小,所以i++,同理当i=1时,需要j--,当i=j时,遍历结束。

这样我们就省略了固定一个指针遍历其他指针的时间,时间复杂度降低到O(n)。

同时,记录每次的面积,最终取最大值。

代码:

cpp 复制代码
class Solution {
public:
    int maxArea(vector<int>& height) {
       int res=0;
       int i=0;
       int j=height.size()-1;
       while(i<j)
       {
        int area=(j-i)*min(height[i],height[j]);
        res=max(res,area);
        if(height[i]<height[j])
        {
            i++;
        }else{
            j--;
        }
       }
       return res;
    }
};
相关推荐
大熊背15 分钟前
ISP图像处理中大数乘法溢出处理(一)
人工智能·python·算法·溢出处理
wabs66639 分钟前
关于栈【力扣1047. 删除字符串中的所有相邻重复项的思考】
数据结构·c++·算法·leetcode··代码随想录
疯狂打码的少年1 小时前
【数据结构】选择类排序:简单选择与堆排序
java·数据结构·笔记·算法
晚风醉蝶2 小时前
1-16-计数排序-CountingSort
python·算法·排序算法
疯狂打码的少年2 小时前
【数据结构】排序算法:归并排序与基数排序
数据结构·笔记·算法·排序算法
ychqsq2 小时前
122.收网
经验分享·职场和发展
fb_123452 小时前
Shell 脚本从 0 到精通|脚本规范 + 变量 + 数值运算 + 条件测试(可直接复制,面试必备)
chrome·面试·职场和发展
吃旺旺雪饼的小男孩2 小时前
U-Net 语义分割详解:原论文、PyTorch 实现与真实消融实
人工智能·pytorch·python·算法
lucas_AI2 小时前
35 种开源文档抽取配置,只有 4 个跨过 F1 0.5
人工智能·算法·llm
YSoup2 小时前
2026 安卓面试助手APP(安卓八股、题库)
android·面试·职场和发展