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

Leetcode#11用水最多的容器:为什么必须使用“其他”

邢硕
2023-03-14

Leetcode#11盛水的容器

https://leetcode.com/problems/container-with-most-water/

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

请注意,容器不能倾斜。

我的代码是:

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

然而正确的答案是:

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

它们之间唯一的不同是我使用if(height[l]

但是用我的代码,输入:[1,8,6,2,5,4,8,3,7]输出:40预期:49

我不知道为什么,他们之间有什么区别。

共有1个答案

万知
2023-03-14

请注意,如果第一个条件有效,则在计算第二个条件之前,变量l将增加,这意味着您将比较两个条件中的不同数组项。因此,在某些情况下,这两种情况都是正确的

 类似资料:
  • 问题内容: 我使用以下Dockerfile创建了一个Docker容器(已截断): 等等。 所有这些都可以,但是我的问题是软件包的安装方式/位置。 如果我仅使用rvm运行rvm,则会显示“无法找到rvm”,但是如果运行,它会起作用。(我在网上找到了“ -l -c”选项,但不知道它们的作用,也找不到令人满意的解释!) 这不是一个docker问题-这是一个bash / * nix问题-我认为存在一些关于

  • 我正在研究中等水平的leetcode问题11。盛水的容器。除了O(n^2)的蛮力解外,还有一个复杂度为O(n)的最优解,它使用容器左右两侧的两个指针。我有点困惑,为什么这个“双指针”方法必须包含最优解。有人知道如何从数学上证明这个算法的正确性吗?这是一个我不知道的算法。非常感谢。 最初的问题是: 给定一个长度为n的整数数组高度。绘制了n条垂直线,使得第i条线的两个endpoint是(i,0)和(i

  • 我正在看下面关于极客的问题 给定n个非负整数a_1,a_2,...,a_n其中每个表示坐标(i,a_i)处的一个点。'n'画垂直线,使得线i的两个endpoint在(i,a_i)和(i,0)处。找到两条线,它们与x轴一起构成一个容器,使得容器含有最多的水。 程序应该返回一个整数,该整数对应于可以容纳的水的最大面积(最大面积而不是最大体积听起来很奇怪,但为了简单起见,我们使用的是2D平面)。 问题链

  • 问题内容: 即使等待1的linux手册页很好地说明了您需要让子进程不使其变成僵尸,但它根本无法说明原因。 我围绕一个Ever 循环计划了我的程序(这是我的第一个多线程程序,所以请原谅我的天真),该循环启动子进程,该子进程被ed淘汰,并确保自行终止。 我无法使用,因为这使并行计算变得不可能,因此我可能不得不添加一个存储子pid的进程表,并且不得不使用-不是立即执行,而是经过一段时间- 这是一个问题,

  • 关于在最新版本的GCC和Clang中编译有几个问题:实验::filessystems链接器错误 但是现在< code>filesystem已经被c 17接受,所以不再需要< code>experimental或< code>-lstdc fs标志,对吗? 错了,我甚至不能 只给了我< code >实验版本,我怎么能包括正式接受的版本呢?

  • 本文向大家介绍为什么必须使用Twitter进行联网,包括了为什么必须使用Twitter进行联网的使用技巧和注意事项,需要的朋友参考一下 如果我们能够在线开发有价值的业务网络,那真是太棒了? 是的,通过“ Twitter”可以实现–实时通信枢纽成为一个出色的业务网络平台。通过在这种快节奏的环境中改进和实施我们的社交网络技能,Twitter可以用作构建强大的业务网络的起点。 对于Twitter的网络,