LintCode:接雨水

5人阅读 评论(0) 收藏 举报

题目描述:

Given n non-negative integers representing an elevation map where the width of each bar is 1, compute how much water it is able to trap after raining.


样例

如上图所示,海拔分别为 [0,1,0,2,1,0,1,3,2,1,2,1], 返回 6.

分析:双指针操作,只要注意处理好细节就可以了

public class Solution {
    /**
     * @param heights: a list of integers
     * @return: a integer
     */
    public int trapRainWater(int[] heights) {
        int i=0;
        int area=0;
        while(i<heights.length-1){
        	if(heights[i]==0){
        		i++;
        	}
        	else{
        		int j=i+1;
        		int max=i+1;
        		while(j<heights.length && heights[j]<heights[i]){       			
        			if(max<heights.length && heights[j]>heights[max]){
        				max=j;
        			}
        			j++;
        		}
        		if(j<heights.length){
        			int sum=0;
        			for(int k=i+1; k<j; k++){
        				sum+=heights[k];
        			}
        			area+=(j-i-1)*Math.min(heights[i], heights[j])-sum;
            		i=j;
        		}
        		else{
        			int sum=0;
        			for(int k=i+1; k<max; k++){
        				sum+=heights[k];
        			}
        			area+=(max-i-1)*Math.min(heights[i], heights[max])-sum;
    				i=max;
        		}       		
        	}
        }
        return area;
    }
}

查看评论

接雨水 II-LintCode

Given n x m non-negative integers representing an elevation map 2d where the area of each cell is 1 ...
  • zhaohengchuan
  • zhaohengchuan
  • 2017年09月25日 20:57
  • 485

接雨水 lintcode

这道题可以有两种做法。 做法一:扫两遍。 对某个值A[i]来说,能trapped的最多的water取决于在i之前左边的最高值和在i右边的最高的值,然后取当中较小的一个。 所以可以根据上面的分...
  • u014470581
  • u014470581
  • 2016年10月13日 17:09
  • 360

LintCode:接雨水

给出 n 个非负整数,代表一张X轴上每个区域宽度为 1 的海拔图, 计算这个海拔图最多能接住多少(面积)雨水。 接雨水 您在真实的面试中是否遇到过这个题? Yes ...
  • cumt_cx
  • cumt_cx
  • 2015年11月05日 09:29
  • 607

接雨水问题(C++)

Given n non-negative integers representing an elevation map where the width of each bar is 1, compu...
  • ak0960
  • ak0960
  • 2016年12月08日 16:59
  • 179

LintCode-接雨水

给出 n 个非负整数,代表一张X轴上每个区域宽度为 1 的海拔图, 计算这个海拔图最多能接住多少(面积)雨水。 样例 如上图所示,海拔分别为 [0,1,0,2,1,0,1,3,...
  • wangyuquanliuli
  • wangyuquanliuli
  • 2015年05月15日 12:13
  • 2590

LintCode:搜索旋转排序数组

假设有一个排序的按未知的旋转轴旋转的数组(比如,0 1 2 4 5 6 7 可能成为4 5 6 7 0 1 2)。给定一个目标值进行搜索,如果在数组中找到目标值返回数组中的索引位置,否则返回-1。 ...
  • cumt_cx
  • cumt_cx
  • 2015年11月05日 09:30
  • 163

lintcode[363]:接雨水

描述:Given n non-negative integers representing an elevation map where the width of each bar is 1, com...
  • qq_18190893
  • qq_18190893
  • 2017年05月19日 14:03
  • 73

LintCode:M-接雨水

LintCode链接 Given n non-negative integers representing an elevation map where the width of eac...
  • iyangdi
  • iyangdi
  • 2017年08月31日 10:27
  • 178

接雨水-LintCode

给出 n 个非负整数,代表一张X轴上每个区域宽度为 1 的海拔图, 计算这个海拔图最多能接住多少(面积)雨水。 示例: 如上图所示,海拔分别为 [0,1,0,2,1,0,1,3,2,1,2,1...
  • zhaohengchuan
  • zhaohengchuan
  • 2017年09月25日 17:28
  • 51

LintCode:接雨水

LintCode:接雨水做法一:扫两遍。 对某个值A[i]来说,能trapped的最多的water取决于在i之前左边的最高值和在i右边的最高的值,然后取当中较小的一个。 所以可以根据上面的分析先从左到...
  • u012225151
  • u012225151
  • 2016年07月14日 00:11
  • 237
    个人资料
    持之以恒
    等级:
    访问量: 766
    积分: 248
    排名: 26万+
    文章分类