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));
        }
    
    }
  • 相关阅读:
    【转载】$.ajax()方法详解
    【转载】"从客户端中检测到有潜在危险的 Request.Form 值"的解决方案汇总
    jQuery获取select的选中项value和text
    AIDL
    SAX
    AsyncTask
    Handler
    ViewSwitch
    TabActivity
    AlarmManager
  • 原文地址:https://www.cnblogs.com/null00/p/5075536.html
Copyright © 2011-2022 走看看