zoukankan      html  css  js  c++  java
  • LeetCode

    题目:

    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.

    For example,
    Given [0,1,0,2,1,0,1,3,2,1,2,1], return 6.


    The above elevation map is represented by array [0,1,0,2,1,0,1,3,2,1,2,1]. In this case, 6 units of rain water (blue section) are being trapped. Thanks Marcos for contributing this image!

    思路:

    1. 找到最高的点index

    2. 计算(0, index)和(index, n-1)之间各点的面积

    package area;
    
    public class TrappingRainWater {
    
        public int trap(int[] height) {
            int n;
            if (height == null || (n = height.length) == 0) return 0;
            int area = 0;
            int maxHeight = height[0];
            int maxHeightIndex = 0;
            for (int i = 1; i < n; ++i) {
                if (height[i] > maxHeight) {
                    maxHeight = height[i];
                    maxHeightIndex = i;
                }
            }
            
            int leftMax = height[0];
            for (int i = 1; i < maxHeightIndex; ++i) {
                if (height[i] > leftMax)
                    leftMax = height[i];
                area += (leftMax - height[i]);
            }
            
            int rightMax = height[n - 1];
            for (int i = n - 2; i > maxHeightIndex; --i) {
                if (height[i] > rightMax) 
                    rightMax = height[i];
                area += rightMax - height[i];
            }
            
            return area;
        }
        
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            int[] height = { /*0,1,0,2,1,0,1,3,2,1,2,1*/ 5,2,1,2,1,5 };
            TrappingRainWater t = new TrappingRainWater();
            System.out.println(t.trap(height));
        }
    
    }
  • 相关阅读:
    HDU 2098 分拆素数和
    HDU 2034 *人见人爱A-B
    HDU 1236 排名(Microsoft_zzt)
    HDU 5702 Solving Order
    HDU 2033 人见人爱A+B
    HDU 2029 Palindromes _easy version
    HDU 2021 发工资咯:)
    HDU 2071 Max Num
    HDU 2039 三角形
    页面使用element-tree
  • 原文地址:https://www.cnblogs.com/null00/p/5075536.html
Copyright © 2011-2022 走看看