TrappingRainWater问题

蓄水问题

输入:一个序列
输出:总共蓄水量
用例:[0,1,0,2,1,0,1,3,2,1,2,1] ===> 6


蓄水量示意图

分析

这个东西跟之前做过的一个蓄水问题很像。之前好像只是让求最大蓄水量。这个题目让求总共的。

思路

求每个位置的蓄水量,遍历加和。
Brute Force.
每个位置左右求蓄水边界。从而求出该位置的蓄水量

代码

package day_10;

// 求总的蓄水量问题
// Brute Force  求出每个位置的蓄水量最后加和。
public class TrappingRainWater {
    public int trap(int[] height){
        int sum = 0;
        for(int i=1;i<height.length-1;i++){
            int left = 0;
            int right = 0;
            int res = 0;
            for(int j=i;j>=0;j--){
                left = height[j]>=left ? height[j]:left;
            }
            for(int j=i;j<height.length;j++){
                right = height[j]>=right ? height[j]:right;
            }
            res = left<=right?left:right;
            res = res-height[i];
            System.out.println(res);
            sum = sum+res;
        }
        return sum;
    }

    public static void main(String[] args){
        int[] a={0,1,0,2,1,0,1,3,2,1,2,1} ;
        TrappingRainWater t = new TrappingRainWater();
        System.out.println(t.trap(a));
    }
}

说实话是比较蠢的解法。还没看牛逼的解法。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在C语言中,五种基本数据类型存储空间长度的排列顺序是: A)char B)char=int<=float C)ch...
    夏天再来阅读 3,417评论 0 2
  • 带着儿子去朋友家串门,中午留在她家吃午饭,儿子一直吃他面前的肉片炒胡萝卜,吃了又加,加了就吃。 看他吃得很香,朋友...
    酸叶草阅读 152评论 0 0
  • 准备了两个多月,七月二十九号我们终于要成行了。 我们是凌晨两点从西安咸阳国际机场起飞,直飞巴黎戴高乐机场。经过十多...
    千年老妖婆阅读 1,836评论 75 39
  • 今天有两件事儿值得记录。
    卷发飘飘阅读 306评论 0 0
  • 前言 本文是关于OpenGL ES的系统性学习过程,记录了自己在学习OpenGL ES时的收获。这篇文章的目标是学...
    秦明Qinmin阅读 4,405评论 0 24