当前位置: 首页 > 知识库问答 >
问题:

了解leet代码大多数水问题的代码片段

葛景龙
2023-03-14

我在做关于Leetcode上大多数水问题的容器

问题:

给定n个非负整数a1,a2。。。,an,其中每个代表坐标(i,ai)处的一个点。绘制n条垂直线,使线i的两个endpoint位于(i,ai)和(i,0)。找到两条线,这两条线与x轴一起构成一个容器,使容器包含最多的水。

注意:容器不能倾斜,n至少为2。

问题链接:https://leetcode.com/problems/container-with-most-water

在那里,我偶然发现了这个解决方案

var maxArea = function(height) {
    let res = l = 0, r = height.length - 1, cur;
    while (l < r){
        cur = Math.min(height[l], height[r]) * (r - l);
        if (cur > res){
            res = cur;
        } 
        height[l] <= height[r] ? l += 1: r -= 1;
    }
    return res;
};

在上面的代码中,我无法理解这两行

<代码>cur=数学。最小值(高度[l]、高度[r])*(r-l)

<代码>高度[l]

就像他们为什么要做高度(r)和高度(l)一样

共有1个答案

岳凯康
2023-03-14

这是因为难题在于找到含水量最多的容器。如果容器的两侧高度不同,则水的面积将被限制在较小的高度,因此,cur(面积)=最小值(左高、右高)*长度。

下一步是遍历点的其余部分以找到更大的区域。因此,你必须保持较高的一面,跳过较短的一面,希望下一个会更高,以最大限度地扩大面积。因此<代码>高度[l]

通过这样做,此人正在寻找一对最高的高度,当x轴穿过时,您将存储最大的区域。

 类似资料:
  • 我一直在纠结这件事。 最大子数组简单给定一个整数数组数,找到总和最大的相邻子数组(至少包含一个数字)并返回其总和。 子数组是数组的连续部分。 示例1: 输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:[4,-1,2,1]的和最大= 6。示例2: 输入:nums=[1]输出:1示例3: 输入: 数字 = [5,4,-1,7,8] 输出: 23 我不明白迭代逻辑,视频中

  • 当从SVN中提取iOS代码时,我有一个问题。我的代码在我的MAC上运行良好,但当我将它上传到SVN并尝试构建我的项目时,它一遍又一遍地显示相同的错误。 Apple Mach-O链接器(id)错误 ld:找不到-lzbar命令/developer/platforms/iphonesimulator的库。platform/developer/usr/bin/clang失败,退出代码为1 这个问题很烦人

  • 我正在构建一个grails应用程序,groovy控制器抛出了一个错误——“方法代码太大” 代码: if中的整个代码将重复15次,因为有15个度量(params.metric),因此会出现错误。查找错误后,唯一的选择是拆分代码。 所以我在grails中使用“重定向”操作拆分它,并将为每个if-fe语句使用不同的方法,以防止方法代码太大 新代码: 但是,这不起作用,甚至没有抛出错误。为什么重定向不起作

  • 问题内容: 这段代码什么也没给我返回,您能帮我为什么不收回价值吗? 问题答案: 你是那个意思吗 还是真的是t1.wid = t2.wid?在这种情况下,您需要左联接。 编辑 好的,所以您已修复它。除非t2中有行的wid与t1中具有相同wid的行匹配的wid,否则不会显示任何结果。 如果需要结果,请将其更改为: 下一步编辑 如果目标是使用t2中尚未存在的t1中的值更新t2,则可能是这样的: 缺少的步

  • 我有一个可搜索的术语数组,我想使用Lucene基本上CTRL-F通过这个文档堆栈,找到并存储所有这些术语在该文档堆栈中的位置。例如: 术语:“A”、“B”、“C” null 差不多吧。我怎么能这么做?到目前为止,我只是使用一个StandardAnalyzer,如下所示: Lucene最初会生成很多文档,但后来删除了除。cfs文件以外的所有文档。我如何保留其他文件来执行我的查询?

  • 了解如何使用 Dreamweaver的“代码片段”面板创建代码片段并在不同的 Dreamweaver 站点上重用代码。 如果您发现自己多次重复代码块,可以使用代码片段加快编写代码的过程。写入该代码一次,将其保存为一个代码片段,然后在“代码片段”面板中双击它,以将它插入到多个位置。 使用“代码片段”面板创建的代码片段不是针对特定站点的,因此可以跨站点重用它们。您还可以使用同步设置跨不同设备、Drea