Leetcode题目:Container With Most Water
题目:
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
Note: You may not slant the container.
题目解答:
题目中要求得两个纵轴与x轴围起来的容器的最大容积。这里使用两个指针,从头尾两边向中间缩进。不断更新最值。
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | class Solution { public : int maxArea(vector< int >& height) { vector< int >::iterator vleft = height.begin(); vector< int >::iterator vright = height.end() - 1; int res = 0; while (vleft != vright) { // cout << "leftv" <<*vleft <<endl; //cout << "rightv"<<*vright <<endl; //cout << "minus" << (vright - vleft) << endl; res = max(res, min(*vleft, *vright) * (vright - vleft) ); //cout << "res" << res << endl; if (*vleft < *vright) { vector< int >::iterator tmp = vleft; while ( (tmp != vright) && (*tmp <= *vleft) ) { tmp++; } vleft = tmp; } else { vector< int >::iterator tmp = vright; while ( (tmp != vleft) && (*tmp <= *vright) ) { tmp--; } vright = tmp; } } return res; } int max( int a, int b) { return a > b ? a : b; } int min( int a, int b) { return a < b ? a : b; } }; |
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· “你见过凌晨四点的洛杉矶吗?”--《我们为什么要睡觉》
· 编程神器Trae:当我用上后,才知道自己的创造力被低估了多少
· C# 从零开始使用Layui.Wpf库开发WPF客户端
· 开发的设计和重构,为开发效率服务
· C# - 获取枚举描述 - 使用增量源生成器