LeetCode Container With Most Water 区间贪心
2022/7/10 23:53:15
本文主要是介绍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
很容易知道答案是 \(\max_{i,j}(|i-j|\times \min(h[i],h[j]))\),如果遍历 \(i,j\),则复杂度为 \(O(n^2)\)。但是可以贪心的去选择 (\(O(n)\)),我们只需要每次移动高度较小的一端:
点击查看代码
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; } };
这篇关于LeetCode Container With Most Water 区间贪心的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23增量更新怎么做?-icode9专业技术文章分享
- 2024-11-23压缩包加密方案有哪些?-icode9专业技术文章分享
- 2024-11-23用shell怎么写一个开机时自动同步远程仓库的代码?-icode9专业技术文章分享
- 2024-11-23webman可以同步自己的仓库吗?-icode9专业技术文章分享
- 2024-11-23在 Webman 中怎么判断是否有某命令进程正在运行?-icode9专业技术文章分享
- 2024-11-23如何重置new Swiper?-icode9专业技术文章分享
- 2024-11-23oss直传有什么好处?-icode9专业技术文章分享
- 2024-11-23如何将oss直传封装成一个组件在其他页面调用时都可以使用?-icode9专业技术文章分享
- 2024-11-23怎么使用laravel 11在代码里获取路由列表?-icode9专业技术文章分享
- 2024-11-22怎么实现ansible playbook 备份代码中命名包含时间戳功能?-icode9专业技术文章分享