美文网首页
leetcode11 盛最多水的容器

leetcode11 盛最多水的容器

作者: justonemoretry | 来源:发表于2020-01-08 21:52 被阅读0次

这个题的解题思路为,使用左右两根指针往中间移动去计算面积,在移动过程中,宽度是逐渐减小的,只有高度高于之前点的高度,才有可能产生更大的面积。

先贴出自己的解法,时间复杂度为O(N),空间复杂度为O(1)

class Solution {

    public int maxArea(int[] height) {

        int maxNum = 0;

        int start = 0;

        int end = height.length - 1;

        while (start < end) {

            if (height[start] >= height[end]) {

                int h = height[end];

                int area = (end - start) * h;

                if (area > maxNum) {

                    maxNum = area;

                }

                while (h >= height[end] && start < end) {

                    end--;

                }                       

            } else {

                int h = height[start];

                int area = (end - start) * h;

                if (area > maxNum) {

                    maxNum = area;

                }

                while (h >= height[start] && start < end) {

                    start++;

                }         

            }

        }

        return maxNum;        

    }

}

再贴官方解法,官方解法更简洁,但是每移一步,都比较了一次是否是最大值,比较浪费,应该先比较高有没有变高,没变高就一直移动。

class Solution {

    public int maxArea(int[] height) {

        int maxarea = 0, l = 0, r = height.length - 1;

        while (l < r) {

            maxarea = Math.max(maxarea, Math.min(height[l], height[r]) * (r - l));

            if (height[l] < height[r])

                l++;

            else

                r--;

        }

        return maxarea;        

    }

}

相关文章

  • 双指针解法问题

    LeetCode11 盛最多水的容器 算法流程:设置双指针i,j位于数组两端代表容器壁,每次让数字较小(高端较低)...

  • leetcode11 盛最多水的容器

    这个题的解题思路为,使用左右两根指针往中间移动去计算面积,在移动过程中,宽度是逐渐减小的,只有高度高于之前点的高度...

  • 图解leetcode11:盛最多水的容器

    这次的题目比较简单而且有意思哦~ leetcode11: 盛最多水的容器 题目描述:给你 n 个非负整数 a1,a...

  • 盛最多水的容器

    给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直...

  • 盛最多水的容器

    盛最多水的容器 给定n个非负整数a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。画n条垂直线,使...

  • 盛最多水的容器

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/cont...

  • 盛最多水的容器

    题目描述 思路 题解代码

  • 盛最多水的容器

    盛最多水的容器 难度中等1826 收藏 分享 切换为英文 关注 反馈 给你 n 个非负整数 a1,a2,...,a...

  • 盛最多水的容器

    题目描述:  给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内...

  • 盛最多水的容器

    给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直...

网友评论

      本文标题:leetcode11 盛最多水的容器

      本文链接:https://www.haomeiwen.com/subject/xjasactx.html