LeetCode Container With Most Water 区间贪心
You are given an integer array height
of length n
. There are n
vertical lines drawn such that the two endpoints of the ith line are (i, 0)
and (i, height[i])
.
Find two lines that together with the x-axis form a container, such that the container contains the most water.
Return the maximum amount of water a container can store.
Solution
很容易知道答案是 ,如果遍历 ,则复杂度为 。但是可以贪心的去选择 (),我们只需要每次移动高度较小的一端:
点击查看代码
class Solution { private: int ans = -1; public: int maxArea(vector<int>& height) { int n = height.size(); if(n==2)return min(height[0],height[1]); int st = 0, ed = n-1; ans = (ed-st)*min(height[ed], height[st]); while(st<ed){ if(height[st]<=height[ed]){ st+=1; } else ed-=1; ans = max(ans, (ed-st)*min(height[ed], height[st])); } return ans; } };
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人