LeetCode 11. Container With Most Water 单调队列
题意
Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). n vertical lines are drawn such that the two endpoints of line i is at (i, ai) and (i, 0). Find two lines, which together with x-axis forms a container, such that the container contains the most water.
Note: You may not slant the container.
思路
假如有容器如下图:

那么他装满水之后一定是这个样子:

可以看出,其从中间到两边一定是呈阶梯状下降的,中间的空缺一定会被水填上的。所以我们只需要枚举上图中由蓝色组成的矩形即可。
开始做的时候竟然不会做了。然后问了下学妹,说是单调队列,发现不会写…… 真是忧伤。
代码
public class Solution {
    public int maxArea(int[] height) {
        int l = 0;
        int r = height.length - 1;
        int rlt = calcArea(l, r, height);
        while (l < r) {
            if (height[l] < height[r]) {
                l = nextLeftBoard(l, r, height);
            } else {
                r = nextRightBoard(l, r, height);
            }
            rlt = Math.max(calcArea(l, r, height), rlt);
        }
        return rlt;
    }
    private int nextLeftBoard(int l, int r, int[] height) {
        int rlt = l;
        while (rlt < r && height[rlt] <= height[l])
            rlt ++;
        return rlt;
    }
    private int nextRightBoard(int l, int r, int[] height) {
        int rlt = r;
        while (l < rlt && height[rlt] <= height[r])
            rlt --;
        return rlt;
    }
    private int calcArea(int l, int r, int[] height) {
        int h = Math.min(height[l], height[r]);
        return (r-l) * h;
    }
}
LeetCode 11. Container With Most Water 单调队列的更多相关文章
- leetcode 11. Container With Most Water 、42. Trapping Rain Water 、238. Product of Array Except Self 、407. Trapping Rain Water II
		11. Container With Most Water https://www.cnblogs.com/grandyang/p/4455109.html 用双指针向中间滑动,较小的高度就作为当前情 ... 
- Leetcode  11.  Container With Most Water(逼近法)
		11. Container With Most Water Medium Given n non-negative integers a1, a2, ..., an , where each repr ... 
- 如何装最多的水? — leetcode 11. Container With Most Water
		炎炎夏日,还是呆在空调房里切切题吧. Container With Most Water,题意其实有点噱头,简化下就是,给一个数组,恩,就叫 height 吧,从中任选两项 i 和 j(i <= ... 
- LeetCode 11. Container With Most Water (装最多水的容器)
		Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). ... 
- [LeetCode] 11. Container With Most Water 装最多水的容器
		Given n non-negative integers a1, a2, ..., an , where each represents a point at coordinate (i, ai). ... 
- LeetCode#11. Container With Most Water
		问题描述 Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ... 
- Java [leetcode 11] Container With Most Water
		问题描述: Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ... 
- C#解leetcode 11. Container With Most Water
		Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). ... 
- [LeetCode] 11. Container With Most Water My Submissions Question 解题思路
		Given n non-negative integers a1, a2, ..., an, where each represents a point at coordinate (i, ai). ... 
随机推荐
- Java启动问题-Application Server was not connected before run configuration stop, reason: Unable to ping server at localhost:1099
			环境一直跑的挺好的,突然报这么一个错误,百思不得其解. 网上查询之后才想起来,自己当时为了IE能运行浪潮服务器的远程console,将环境变量里面的java换成了32位版本的. 修改jre版本与环境变 ... 
- query ajax总是进入error回调函数
			query ajax总是进入error回调函数今天纠结了1小时,ajax总是进入了error函数中.平时使用从来没有出现过这种现象,纠结了半小时. 最后稍微总结出了点: 1.以前使用都是服务器端输出S ... 
- HDU 2521
			了解反素数的定义: 反素数是指[1,n]内,比n小的数的约数个数都比n的约数个数要少.注意n其实是最后一个.而在区间内,[a,b]是明显无法满足条件的. 注意了最大才5000.所以,不妨使用枚举. # ... 
- iOS CoreImage图片处理动态渲染(滤镜)
			// // ViewController.m // CoreImageOfDong // // Created by Dong on 15/6/30. // Copyright (c) 201 ... 
- angularjs1-过滤器
			<!DOCTYPE html> <html> <body> <header> <meta http-equiv="Content-Typ ... 
- Java-MyBatis:MyBatis 3 | SQL 语句构建器类
			ylbtech-Java-MyBatis:MyBatis 3 | SQL 语句构建器类 1.返回顶部 1. SQL语句构建器类 问题 Java程序员面对的最痛苦的事情之一就是在Java代码中嵌入SQL ... 
- Jquery validform
			一.validform是什么? validform是一款智能的表单验证js插件,它是基于jQuery库与css,我们只需要把表单对象放入, 就可以对整个表 ... 
- python之--初始面向对象
			阅读目录 楔子 面向过程vs面向对象 初识面向对象 类的相关知识 对象的相关知识 对象之间的交互 类命名空间与对象.实例的命名空间 类的组合用法 初识面向对象小结 面向对象的三大特性 继承 多态 封装 ... 
- ROS-turtlesim
			前言:turtlesim是ros自带的一个功能包,应该是用于基础教学的功能包,帮助新手入门的一个实例,包括:节点,主题,服务以及参数的应用.通过学习使用turtlesim功能包可以了解ros的一些基础 ... 
- POJ 3660 Floyd传递闭包
			题意:牛有强弱,给出一些牛的强弱的胜负关系,问可以确定几头牛的排名. 思路: Floyd传递闭包 // by SiriusRen #include <bitset> #include &l ... 
