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

[hot100]盛最多水的容器

盛最多水的容器

题目的大概意思就是输入一个数组 然后把这个数组抽象为一个坐标系,横坐标是数组索引,纵坐标是值

比如输入:4 2 1 8 -> (0,4) (1,2) (2,1) (3,8)这几个离散点 然后题目要求求出开这几个离散点的横坐标与纵坐标围成面积的最大值

这个题目可能比较两极分化,想到思路的可能会觉得比较简单,想不到的就觉得比较抽象

其实算法题嘛 五分钟内想不到思路就可以看题解了或者问ai了 看了思路之后自己写一遍,积累一下这种算法的思维

这题最简单的思路就是双指针了

结合这个图来看

比如这样一个示例 让一个指针指向数组最左边 一个指针指向数组最右边

然后比较高度来让这个范围逐渐逼近 定义一个全局maxArea变量来记录逼近过程中最大的面积

我要求最大嘛 所以我们肯定是想寻求一个高度更大的柱子对不对

所以就是左边如果比右边小 我们就让left++(右移) 否则就让right--(左移)

终止条件就算两个指针重合 这个时候面积就是最小的 其实都已经不存在

如果输入时上面的例子 就算right指向8可以一直不动 指向left的一直往右移动,每移动一次就记录面积,最后只返回最大的面积

这个地方一定要认为height[left]>height[right]去left++,你要想,你想保证水最多 是不是要线最高 ,那比较两边的线的高度 ,那肯定时低的那一边动啊 如果高的东的话 就不一定是最大的面积了

所以移动的原则肯定是:比较两条边,哪边小,哪边就往中间靠

import java.util.Scanner; ​ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.nextLine(); String[] split = s.split(" "); int [] arr=new int[split.length]; for(int i=0;i<split.length;i++){ arr[i]=Integer.parseInt(split[i]); } int i = maxArea(arr); System.out.println(i); } public static int maxArea(int[] height) { //定义两个指针 分别指向数组的两端 int left=0; int right=height.length-1; int maxArea=0; while(left<right){ maxArea = Math.max(maxArea, (right - left) * Math.min(height[left], height[right])); if(height[left]<height[right]){ left++; }else{ right--; } } return maxArea; } }
http://www.gsyq.cn/news/1610596.html

相关文章:

  • 规约驱动开发(SDD)——让规约成为人与 AI 之间的“合同“
  • Pytest+BDD+Playwright:构建现代化Web自动化测试框架的完整指南
  • 6.28[a]
  • 5分钟快速上手Sunshine:打造免费的个人游戏串流服务器终极指南
  • 【亲测释放150多G系统盘空间】Win10 / Win11 系统深度清理教程:如果常规清理方式都无效,看这篇就对了
  • 基于HarmonyOS的选择困难抽签助手应用开发实战
  • Zabbix多GPU智能监控解决方案:告别手动运维,实现企业级NVIDIA显卡自动化管理
  • 安全组网供应商前五推荐
  • 3分钟完成GTNH汉化:让格雷科技新视野彻底变中文
  • 明日方舟素材资源库:一站式获取高清游戏美术资源的完整指南
  • IntelliJ IDEA 提交代码时,不想让 IDE 自动分析代码
  • 普通投资者做策略复盘时应该记录哪些技术字段
  • C++课后习题训练记录Day144
  • 股票因子组合怎么避免回测过拟合
  • 【毕业设计】师生健康信息管理系统 SpringBoot+Vue 完整源码(含论文+数据库,可运行)
  • 4步构建企业级质量保障体系:Vue.Draggable项目集成Git Hooks自动化检查实战指南
  • DeepSeek联合北大最新文章DSpark: 如何让大模型推理速度提升 85%?
  • 深入 Claude Code 源码(六):多智能体——Coordinator 与 AgentTool 深度解析
  • 9大网盘直链下载助手:浏览器一键解锁高速下载新体验
  • B站视频下载神器:3分钟掌握BiliDownloader高效下载技巧
  • Go语言的runtime.ReadMemStats内存统计与实时监控指标的导出方法
  • YOLO实例分割工业圆形仪表指针读数识别数据集|电力电表电流电压表深度学习视觉实战仓库
  • 06.28.每日总结
  • 安全组网前五品牌推荐
  • 导师放养没人带?笔墨 AI 全程逻辑引导,相当于半个指导老师
  • APK Installer深度解析:Windows平台上的Android应用部署技术内幕
  • 基于Basler相机的同步软件触发二次开发程序
  • Java的java.lang.StackWalker分布式
  • 2026国内GEO公司排名前十深度盘点!行业格局+实力拆解(企业选型必看)
  • LangGraph 中的 add_messages