小学生都能看懂的题解 | #盛水最多的容器#

问题解释

想象你有一个装水的容器,容器的两边是高高的墙(数组中的高度),水只能在这两堵墙之间装。你要找到能装最多水的两个墙。

方案步骤

  1. 两个指针:我们用两个指针,一个指向左边的墙(左指针),一个指向右边的墙(右指针)。
  2. 计算容量:每次我们计算这两堵墙之间能装多少水。装水的高度是两堵墙中较矮的那一堵,因为水不能超过这堵墙的高度。宽度就是两堵墙之间的距离。
  3. 更新最大容量:如果这个容量比之前的最大容量大,就更新最大容量。
  4. 移动指针:为了找到更大的容量,我们要移动指针。我们总是移动较矮的那一堵墙的指针,这样有可能找到更高的墙来增加容量。
  5. 重复:一直重复这个过程,直到两个指针碰到为止。

代码解释

public class ContainerWithMostWater {
    public int maxArea(int[] height) {
        if (height.length < 2) return 0; // 如果墙的数量少于2,返回0

        int left = 0; // 左指针
        int right = height.length - 1; // 右指针
        int maxArea = 0; // 初始化最大容量为0

        while (left < right) { // 当左指针在右指针左边时
            // 计算当前的容量
            int currentHeight = Math.min(height[left], height[right]); // 取较矮的墙
            int currentWidth = right - left; // 计算宽度
            int currentArea = currentHeight * currentWidth; // 计算容量

            maxArea = Math.max(maxArea, currentArea); // 更新最大容量

            // 移动较矮的墙的指针
            if (height[left] < height[right]) {
                left++; // 如果左边的墙矮,移动左指针
            } else {
                right--; // 否则移动右指针
            }
        }

        return maxArea; // 返回找到的最大容量
    }

}

代码简要:

  • maxArea 方法:这是计算能装多少水的主要方法。
  • if 判断:检查是否有足够的墙来装水,如果没有,直接返回0。
  • while 循环:持续计算直到指针碰到。
  • Math.min:找出两边墙的较矮者。
  • Math.max:更新最大容量。

希望这篇文章对你有帮助👍。

#牛客创作赏金赛##题解#
小学生都能看懂的算法 文章被收录于专栏

主要面向小白的算法文章。以小学生都能看懂为目标而编写,顺便巩固下自己。

全部评论

相关推荐

牛客37185681...:马德,我感觉这是我面过最恶心的公司,一面是两个女hr,说什么实习前几个月属于试用期,试用期过了才能转成正式实习生,我***笑了,问待遇就是不说,问能不能接受全栈,沙币公司
如果可以选,你最想去哪家...
点赞 评论 收藏
分享
09-16 14:43
已编辑
华南农业大学 游戏后端
背景&nbsp;双一流本硕&nbsp;双非大圆满&nbsp;只找游戏开发相关的岗位。&nbsp;8&nbsp;月初开始秋招到现在&nbsp;投了四五十家吧,&nbsp;目前两&nbsp;offer,&nbsp;不打算继续投了,把剩下的流程走完就开始沉淀了。目前两&nbsp;offer&nbsp;一个是网易互娱测开&nbsp;base&nbsp;广州,一个是江娱互动客户端开发&nbsp;base&nbsp;北京。应该确定网易这个了,说实话北京这个我挺想去的,这家的产品和工作氛围我了解了也不错,是那种踏实做事的,可惜我是广东人。网易的测开是调剂的二志愿,看了下有内部转岗机会,所以打算后面找个时间提前实习,沉淀下再做一个&nbsp;demo&nbsp;作品,写一些&nbsp;shader,增强下图形学渲染的能力,再学点编辑器开发。看到时候内部转岗或者春招继续投客户端开发这样。后面还能再动摇的话应该就灵犀或者腾子了吧(假如这两家确认的是客户端开发岗的话)。-----------------------补下timeline网易互娱&nbsp;测开&nbsp;8.2笔试&nbsp;&nbsp;8.21&nbsp;技术面&nbsp;&nbsp;8.29&nbsp;leader&amp;HRBP面(终面)&nbsp;9.8&nbsp;录用审核(之前一直显示面试中)9.14&nbsp;oc江娱互动&nbsp;客户端开发&nbsp;8.29主程面&nbsp;9.3&nbsp;制作人面&nbsp;9.5&nbsp;BOSS面&nbsp;9.11&nbsp;口头OC&nbsp;9.15&nbsp;正式offer后面考虑了一下&nbsp;&nbsp;感觉还是能走开发就开发吧,测开不太感兴趣,要内部活水转岗还要满1年才能申请。。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务