当前位置: 首页 > 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.jsqmd.com/news/1098632/

相关文章:

  • 规约驱动开发(SDD)——让规约成为人与 AI 之间的“合同“
  • Pytest+BDD+Playwright:构建现代化Web自动化测试框架的完整指南
  • VS Code 通义灵码报错:调用异常 code=403 解决方案
  • 6.28[a]
  • 基于 Simulink 的双向 DC-DC 变换器在低电压大电流下的同步整流(SR)驱动仿真实战教程
  • 150cm也能双脚掌着地!(小个子女生自动挡巡航)选购全攻略
  • 学 Simulink——光伏‑风电混合发电系统的多输入 DC‑DC 变换器(MIC)仿真
  • MySQL 9.7.1 安装方法及安装要点
  • Junit5+Mockito实现已投票事件的测试策略
  • 告别标签通信:用Network Configurator搞定欧姆龙PLC与第三方设备的EIP连接
  • 影视摄影行业数据恢复经典案例全解_东方护航数据恢复深圳店
  • 2026年深度测评:10款好用的降AI率网站,部分无限免费降AI!必备收藏
  • 基于HarmonyOS的选择困难抽签助手应用开发实战
  • SSL/TLS客户端证书认证失败排查:从原理到AI智能修复实践
  • 数据结构基础——第三板块:树与二叉树(Trees Binary Trees)
  • 【亲测释放150多G系统盘空间】Win10 / Win11 系统深度清理教程:如果常规清理方式都无效,看这篇就对了
  • 5分钟快速上手Sunshine:打造免费的个人游戏串流服务器终极指南
  • Zabbix多GPU智能监控解决方案:告别手动运维,实现企业级NVIDIA显卡自动化管理
  • 安全组网供应商前五推荐
  • Jetson边缘嵌入式实战课程第七讲:GStreamer到底是什么,它在Jetson上怎么用
  • 基于 Simulink 的基于 GaN 器件的 MHz 级高频 DC-DC 变换器建模与仿真实战教程
  • 5M风力发电机塔架结构设计与有限元分析
  • 明日方舟素材资源库:一站式获取高清游戏美术资源的完整指南
  • 3分钟完成GTNH汉化:让格雷科技新视野彻底变中文
  • IntelliJ IDEA 提交代码时,不想让 IDE 自动分析代码
  • Kotlin--2--list
  • 智能审计系统(Intelligent Audit System)深度解析:构建基于自动化规则与数据风控的企业级合规检测平台
  • 3个核心功能解析:OCAT如何简化OpenCore配置流程
  • State 深度解析:Reducer、Schema 与多状态设计——从零开始学 LangGraph(二)
  • 第七章-动态规划和遗传算法