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

java练习(40)

ps:题目来自力扣

盛最多水的容器

给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。

找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。

返回容器可以储存的最大水量。

说明:你不能倾斜容器。

class Solution {
    public int maxArea(int[] height) {
        // 初始化两个指针,left 指向数组的起始位置,right 指向数组的末尾位置
        int left = 0;
        int right = height.length - 1;
        // 初始化最大水量为 0
        int maxWater = 0;

        // 只要 left 小于 right,就继续循环
        while (left < right) {
            // 计算当前两条垂线与 x 轴构成的容器的宽度
            int width = right - left;
            // 计算当前两条垂线中较短的那条垂线的高度
            int currentHeight = Math.min(height[left], height[right]);
            // 计算当前容器的水量
            int currentWater = width * currentHeight;
            // 更新最大水量
            maxWater = Math.max(maxWater, currentWater);

            // 移动指针:较短的垂线对应的指针向内移动
            if (height[left] < height[right]) {
                left++;
            } else {
                right--;
            }
        }

        return maxWater;
    }
}

代码解释

本题要求在给定的整数数组 height 中找出两条垂线,使得它们与 x 轴共同构成的容器可以容纳最多的水。我们可以使用双指针法来解决这个问题。

具体步骤

  1. 初始化指针和最大水量
    • 定义两个指针 left 和 right,分别初始化为数组的起始位置和末尾位置。
    • 定义一个变量 maxWater 用于存储最大水量,初始值为 0。
  2. 循环计算水量并移动指针
    • 使用 while 循环,只要 left 小于 right,就继续循环。
    • 在每次循环中:
      • 计算当前容器的宽度 width,即 right - left
      • 计算当前两条垂线中较短的那条垂线的高度 currentHeight,使用 Math.min(height[left], height[right])
      • 计算当前容器的水量 currentWater,即 width * currentHeight
      • 更新 maxWater,使用 Math.max(maxWater, currentWater)
      • 移动指针:如果 height[left] < height[right],将 left 指针向右移动一位;否则,将 right 指针向左移动一位。
  3. 返回结果
    • 当循环结束后,maxWater 中存储的就是最大水量,将其返回。

http://www.kler.cn/a/560491.html

相关文章:

  • Fetch API 与 XMLHttpRequest:深入剖析异步请求的利器
  • Python实现GO鹅优化算法优化XGBoost回归模型项目实战
  • 【Linux探索学习】第二十七弹——信号(上):Linux 信号基础详解
  • 【Http和Https区别】
  • 【信息系统项目管理师-案例真题】2009上半年案例分析答案和详解
  • 【C++】模板初阶和STL简介
  • 通过恒定带宽服务器调度改进时间敏感网络(TSN)流量整形
  • 使用Uni-app实现语音视频聊天(Android、iOS)
  • your HTTP request connection start duration too long
  • 内网网络安全的解决之道
  • 无人机实战系列(三)本地摄像头+远程GPU转换深度图
  • 基于PSO-LSTM长短期记忆神经网络的多分类预测【MATLAB】
  • 力扣hot100——岛屿数量 岛屿问题经典dfs总结
  • 简单封装一个websocket构造函数
  • Python 工程中如何构架合理的log体系
  • css特异性,继承性
  • 最新版IDEA下载安装教程
  • 科普:HTTP端口80和HTTPS端口443
  • 谈谈 ES 6.8 到 7.10 的功能变迁(3)- 查询方法篇
  • Hadoop--Secondary NameNode工作机制,作用及与NameNode HA的区别