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

算法4.0

11. 盛最多水的容器 - 力扣(LeetCode)

想简单了 审题时候补药着急  慢慢来 多试试几个例子

算法原理

解法1:暴力枚举    双层for循环  算出所有值然后找最大值(肯定超时的)

public class Solution {public int maxArea(int[] height){int maxArea = 0;for (int i = 0; i <height.length ; i++) {for (int j = i+1; j <height.length; j++) {//j从j+1开始 避免重复计算int h = Math.min(height[i],height[j] );int w = j-i;  //宽度int area = h*w;if(area >maxArea){maxArea = area;//更新最大值}}}return maxArea;}
}

解法2:  单调性  双指针

先找一个小区间研究

选择最边的两个   然后逐级向内  发现宽度一直在减小(永远都在减小)

如果拿6 和 4计算完成之后  接下来用4和2计算 4和5计算 宽度永远在减小(向内枚举)

高度变化:如果向内枚举的时候 碰到了比我小的数   高度也减小  宽度也在减小(向内枚举) 

                  这个时候最终结果一定减小

                  如果向内枚举的时候  碰到了比我大的数  高度不变(最小的为水桶高度)  宽度在减小

                  这个时候最终结果一定减小

如果你的总体积是减小的  我要的是盛水最多的容器  那么中间2 和 5  就不需要枚举了

因为这个时候 最边的6和4就是记录的最大的容器   所以干掉4

规律扩大 

直接用题目给的数组开干  

用最左边和最右边先计算   计算完记录结果V1之后干掉左面(上面研究的那个例子证明一定减小)

第二部分直接干掉7   循环往复 慢慢干掉所有  下面是图片展示过程

定义两个箭头   就是抽象成了双指针  

利用单调性 使用双指针 遍历数组一遍就找到最终结果(时间复杂度从n的平方直接变成n)

下面是效果图和代码:

class Solution {public int maxArea(int[] height) {int maxArea =0;int behind = 0 ,back=height.length-1;while(behind != back) {if(height[behind]<height[back]){int area = height[behind]*(back-behind);if(area>maxArea){maxArea = area ;}behind++;}else{int area = height[back]*(back-behind);if(area>maxArea){maxArea = area ;}back--;}}return maxArea;}
}//xiyu251010&1#1*4

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

相关文章:

  • 云网智安一体:中国电信数字安全创新的技术破局与生态构建
  • 制作音乐网站实验报告佛山做外贸网站渠道
  • 企业级数据库实操手册:从架构部署到安全运维的落地指南
  • 网络安全认证培训机构的痛点
  • 网站搜索引擎推广方案做网页设计的网站
  • 国内坚持做正品的网站女人学ui有前途吗
  • centos如何做的时间同步
  • CentOS 7 环境下 RabbitMQ 的部署与 Web 管理界面基本使用指南
  • 【AT指令解析】TencentOS Tiny AT指令解析源码分析1-简介
  • centos/cuos如何开启软件源
  • Java常见业务场景之批处理优化:从稳定性、性能、数据一致性、健壮性、可观测性五大维度,系统提供批处理优化方案
  • 网站建设拟采用的技术路线深圳互联网公司招聘
  • 人工智能学习:逻辑回归
  • 23种设计模式——命令模式(Command Pattern)
  • 网站空间用万网的 域名不在万网gta5 网站正在建设中
  • 枚举单例模式:Java单例实现的终极方案解析
  • 1.单例模式有哪几种常见的实现方式?
  • 安蓉建设总公司网站服装设计官网
  • PyTorch的安装与使用
  • 解决办法:win11连接蓝牙的时候每次连接都是100%的音量
  • foundry创建项目
  • 网站整体地图怎么做招设计师在哪里找
  • C#学习小笔记(完整版)—— Patience
  • 解决MySQL8.0及其更高版本的两个安全问题——及其配置MySQL实现SSL/TLS加密通信、caching_sha2_password通信
  • Node.js性能优化:从事件循环到内存管理
  • Node.js核心模块:fs、path与http详解
  • 企业级UDP文件传输工具如何重塑数据交换格局
  • 在JavaScript / Node.js中,Web服务器参数处理与编码指南
  • 佛山新网站建设服务网站中文域名好吗
  • Python打包成exe(windows)或者app(mac)