当前位置: 首页 > news >正文

双指针(4)——盛水最多的容器

题目:

这题可以暴力枚举,但会超时,所以我们要用其他方法。

我们就用示例1的数组为例,我们先取出一部分研究。

虽然我们不能用暴力枚举,但可以借用其思想。

对于6和4组成的容器,它可以储存24个单位的水。

如果我们此时让“4”去向内遍历(只看每一个数和4遍历的比较),根据木桶原理,这个容器的高不变,宽度会越来越小,即蓄水量越来越少。

那么我们就可以认为,在这几个数遍历到4时,从左到右是越来越小的。也就是我们就没必要再去遍历4(把4删除),因为我们是要求储水量最大值,接着在(6,2,5)之间遍历。

总结就是,我们先计算数组收尾构成的容积,然后比首尾,谁小谁就被删除。然后在新的数组重复此操作,直到首尾重合,然后比较所有的容积求最大值。

这里首尾比较去小的原理是,在某数组中,我们能确定在该容器宽度变化时,数组的高不变,去宽度最大作为该组的最大值,然后缩短数组(去小)继续重复此操作。 本质是在比较都是“最宽”的情况下谁最多。

 

int Max(vector<int>& height)
{int left=0,right=height.size()-1,ret=0;while(left<height){int value =(height[left])*(height[right])*(right-left);ret=max(ret,value);if(height[left]<height[right]) left++;else right--;}return ret;}

http://www.dtcms.com/a/166628.html

相关文章:

  • Vcpkg C++库管理工具安装
  • Depth Anything V2:深度万象 V2
  • 前端js学算法-实践
  • 可编辑25页PPT | 企业数字底座:数据中台构建路径、方法和实践
  • Vue3源码学习3-结合vitetest来实现mini-vue
  • Java ResourceBundle 资源绑定详解
  • linux find命令妙用
  • Kettle下载安装教程
  • Set系列之HashSet源码分析:原理剖析与实战对比
  • Ubuntu 24.04 终端美化
  • 强化学习之基于无模型的算法之基于值函数的深度强化学习算法
  • 望获实时Linux系统荣获人形机器人技术突破奖
  • 得物可观测平台架构升级:基于GreptimeDB的全新监控体系实践
  • 多通道经颅电刺激器的主流厂家介绍
  • 柯希霍夫积分法偏移成像中数据分布不均匀的处理方法
  • 【题解】Codeforces Round 1019 (Div. 2) B.Binary Typewriter ~ E.Keep the Sum
  • 【赵渝强老师】使用TiDB的审计日志
  • Learning vtkjs之ImageStreamline
  • URP - 公告牌的效果实现
  • 运维仙途 第2章 日志深渊识异常
  • 《多端统一的终极答案:X5内核增强版的渲染优化全解析》
  • AI赋能烟草工艺革命:虫情监测步入智能化时代
  • 栈与队列 Part 6
  • AI HR新范式:易路iBuilder如何通过“技术隐身,价值凸显”,成为HR身份转型的好帮手
  • 消防岗位技能竞赛流程方案策划
  • 【CUDA pytorch】
  • 基于连接感知的实时困倦分类图神经网络
  • kibana重建es索引
  • ShardingSphere5详细笔记
  • OpenCV-Python (官方)中文教程(部分一)_Day20