博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【经典】盛最多水的容器
阅读量:4094 次
发布时间:2019-05-25

本文共 1108 字,大约阅读时间需要 3 分钟。

一、题目

力扣原题:

二、暴力

class Solution {    public int maxArea(int[] height) {        if (null == height || 0 == height.length) {            return 0;        }        int max = 0;        for (int i = 0; i < height.length; i++) {            for (int j = i + 1; j < height.length; j++) {                int sum = (j - i) * Math.min(height[i], height[j]);                max = Math.max(max, sum);            }        }        return max;    }}
  • 时间复杂度:O(n^2)
  • 空间复杂度:O(1)

三、双指针

class Solution {    public int maxArea(int[] height) {        if (null == height || 0 == height.length) {            return 0;        }        // 双指针        int i = 0;        int j = height.length - 1;        // 记录最大值        int max = 0;        while (i < j) {            int left = height[i];            int right = height[j];            int sum = (j - i) * Math.min(left, right);            // 判断短板边界,移动指针            if (left <= right) {                i++;            } else {                j--;            }            max = Math.max(max, sum);        }        return max;    }}
  • 时间复杂度:O(n)
  • 空间复杂度:O(1)

四、总结

根据题意,容易想到可以通过左右指针进行边界移动,动态计算盛水量即可。

转载地址:http://nnaii.baihongyu.com/

你可能感兴趣的文章
图形学 图形渲染管线
查看>>
DirectX11 计时和动画
查看>>
DirectX11 光照与材质的相互作用
查看>>
DirectX11 法线向量
查看>>
DirectX11 兰伯特余弦定理(Lambert)
查看>>
DirectX11 漫反射光
查看>>
DirectX11 环境光
查看>>
DirectX11 镜面光
查看>>
DirectX11 三种光照组成对比
查看>>
DirectX11 指定材质
查看>>
DirectX11 平行光
查看>>
DirectX11 点光
查看>>
DirectX11 聚光灯
查看>>
DirectX11 HLSL打包(packing)格式和“pad”变量的必要性
查看>>
DirectX11 光照演示示例Demo
查看>>
漫谈一下前端的可视化技术
查看>>
VUe+webpack构建单页router应用(一)
查看>>
Vue+webpack构建单页router应用(二)
查看>>
从头开始讲Node.js——异步与事件驱动
查看>>
Node.js-模块和包
查看>>