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

11.盛最多水的容器

文章目录

  • 一、读题
  • 二、算法思路
  • 三、代码实现:

一、读题

题目来源:https://leetcode.cn/problems/container-with-most-water/description/

在这里插入图片描述
在这里插入图片描述
    但看题目的讲解其实看的很懵逼,但是搭配示例看题目就很明确了,给定一个数组,根据数据的大小和宽度构成最大的容量,其实这一道题目本质上是水桶效应。在这里插入图片描述
    结果就是将最大的容量返回

二、算法思路

    大家看到这个题目的第一想法肯定是暴力,直接来两个for循环遍历,把所有的结果都找出来,然后从中找最大值即可,但是我们仔细看,这一道题目的难度是中等,那么暴力ac的可能性就很小啊了,当然主包看到题目的第一想法也是暴力哈哈哈。
    主包的思路是双指针,我们可以通过一个两数相乘来找思路。在这里插入图片描述
    我们都知道在乘法里面,结果的大小和相乘数的大小息息相关,如果h减小w不变,那么a肯定减小,响应的w减小也是如此,唯一让a变大的可能性就是h增大,或者是w增大,当然一个增大一个减小也是有可能会导致a增大的,我们不排除这个可能性

    现在我们再来看题,看我们的暴力思路,暴力的思路是通过一个数来乘以剩下的全部数据来排除一个数,就是先用1乘以其他的数据,乘完之后就可以将1排除,继续从8开始依次往后乘,一个一个的减少数据量,知道数据量最终为0。在这里插入图片描述

    那么我们的主要思路就是减少数据量,而容积的大小和宽度高度这两个有关,那么我们可以一开始就举例最大的宽度来进行计算。在这里插入图片描述

    当我们计算完1和7的容积后,接下来我们应该是减少宽度,那么就是left++或者是rught–,那么我们应该选择那个呢?我们来思考一下,题目找的是最大的容积,那么我们计算完1和7的容积后是不是应该找大于1和7的容积呢?答案是肯定的,那么当宽度减小了,我们应该找高度增大的数据,只有在一个减小的情况下另外一个增大才有可能使得结果增大,因此我们应该left++,因为根据水桶效应,最大容积和最小的高度是直接关系,因此在1和7当中我们应该改变1,将1改变,即便我们不知道接下来是否是一定增大的,但是都有一定的概率要大于1,那么计算结果就有可能增大
在这里插入图片描述    计算完后接下来还是找高度增大的,那么就是right–;以此类推,直到两个指针相遇即可。这样子我们可以减少判断比当前两个指针的容积小的情况,只找有可能容积会增大的情况,那么在宽度减小的情况下,就只能将当前最低高度改变才会有可能增大容积在这里插入图片描述
    大家可能会觉得奇怪,这样子不会错过最大值吗?因为我们虽然是将最小的那个高度进行移动,那么会不会有可能将最大值错过,这个是肯定不会的,这个涉及到单调性,如果我们移动了最小高度了之后,碰到的仍然是比最小高度还小的,那么这个数就不可能会是最终的结果,已经比当前的容积还小了,有可能会成为最大容积吗?不现实的,而且每次移动都会保留当前的最大值,因此最终结果肯定不会错过的。

三、代码实现:

class Solution {public int maxArea(int[] height) {int i= 0;int j = height.length - 1;int ans = 0;while(i < j){int ret = (j - i) * Math.min(height[i] , height[j]);ans = Math.max(ans , ret);if(height[i] > height[j] ) {j--;} else {i++;}} return ans;}
}

    各位佬,如果有什么更加高效的算法欢迎评论区讨论,指导一下主包进步,大家一起共勉

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

相关文章:

  • 【C++】stack和queue:优先级队列的使用及底层原理
  • 兰州营销型网站建设优化游戏的软件
  • 廊坊做网站的公司专门做孕婴用品的网站
  • 3. char、字符串、字符串数组、二维字符数组、char[] 的区别与联系
  • 数据结构C语言
  • RTX5060Ti安装cuda加速的openCV
  • 金融网站建设重庆网站建设电脑版
  • 超越图像:机器学习之生成对抗网络(GAN)在时序数据增强与异常检测中的深度实践
  • C# 企业微信机器人消息推送
  • 原生日历表
  • 做网站购买服务器多少钱三亚房地产网站制作
  • 新网站的建设工作织梦软件怎么使用域名做网站
  • 暖手宝方案开发,暖手宝MCU控制方案开发设计
  • SpringCloud启动——MybatisPlus(MP)
  • 图解Java链表反转:迭代法详解
  • SOGS压缩技术
  • SQLiteStudio下载安装图解教程(附安装包)
  • 【图像超分】论文复现:轻量化超分 | RLFN的Pytorch源码复现,跑通源码,整合到EDSR-PyTorch中进行训练、测试
  • 吉利汽车携手阿里云函数计算,打造新一代 AI 座舱推理引擎
  • 基于mormot.net.async.pas实现一个纯粹的Socket Server
  • FastReport .NET 2026.1 全新发布: 统一Demo中心、全新Ribbon界面、Excel公式导出、Word图像质量设置等重磅升级!
  • 网站后台上传图片脚本错误个人博客大全
  • 郑州水晶奖杯制作wordpress加载优化
  • 【计算机网络笔记】第二章 应用层 (Application Layer)
  • 东营聊城网站建设seo门户网站建设
  • DigitalOcean Gradient™ 平台上线 fal 四款多模态 AI 模型:快速生成图像与音频
  • 5、服务器互连技术(小白入门版)
  • 我爱学算法之—— 分治-归并
  • 济南高新区 网站制作wordpress直接购买
  • 织梦网站首页幻灯片不显示新华美玉官方网站在线做