Trapping Rain Water Array+技巧

原创 2015年07月10日 22:24:09

思路:

数组+技巧。时间复杂度O(N),空间复杂度O(1)。

找到最高的柱子的位置(可能不止一个,选任意一个都行),这样,将array分成左右两部分:
(1)遍历左部分,保存一个当前认为的最高的柱子的高度h,如果所经过的柱子高度 h'h 小,那么,h-h' 一定是被trap住的;时刻更新当前认为的最高柱子。
(2)对于右半部分也是一样。

class Solution {
public:
    int trap(vector<int>& height) {
        int n = height.size();
        //find max height to split the array
        int max = 0;
        for(int i = 0; i < n; ++i) {
            if(height[i] > height[max]) {
                max = i;
            }
        }
        //calculate sum from left to max
        int sum = 0, peak = 0;
        for(int i = 0; i < max; ++i) {
            if(height[i] > peak) {
                peak = height[i];
            }else {
                sum += peak - height[i];
            }
        }
        peak = 0;
        //calculate sum from right to max
        for(int i = n - 1; i > max; --i) {
            if(height[i] > peak) {
                peak = height[i];
            }else {
                sum += peak - height[i];
            }
        }
        return sum;
    }
};

LeetCode------42. Trapping Rain Water(捕获雨水量)

Given n non-negative integers representing an elevation map where the width of each bar is 1, comput...
  • nameix
  • nameix
  • 2016年10月13日 13:25
  • 485

[C++]LeetCode: 131 Trapping Rain Water (双边扫描)

题目: Given n non-negative integers representing an elevation map where the width of each bar is 1, c...
  • cinderella_niu
  • cinderella_niu
  • 2015年02月04日 10:30
  • 778

Trapping Rain Water -- LeetCode

原题链接: http://oj.leetcode.com/problems/trapping-rain-water/  这道题比较直接的做法类似Longest Palindromic Substri...
  • linhuanmars
  • linhuanmars
  • 2014年03月10日 03:50
  • 16882

[leetcode] 407. Trapping Rain Water II 解题报告

题目链接:https://leetcode.com/problems/trapping-rain-water-ii/ Given an m x n matrix of positive integ...
  • qq508618087
  • qq508618087
  • 2016年09月29日 06:25
  • 2390

[LeetCode]42.Trapping Rain Water

【题目】 Given n non-negative integers representing an elevation map where the width of each bar is 1,...
  • SunnyYoona
  • SunnyYoona
  • 2014年01月20日 16:45
  • 2411

Leetcode 407. Trapping Rain Water II 收集雨水2 解题报告

留坑还木有来得及做,还要赶明天的东西,这个Hard应该很费时间,所以保持队形。。这个问题其实之前也有过: Leetcode #42. Trapping Rain Water 雨水收集 解题报告 只不...
  • MebiuW
  • MebiuW
  • 2016年09月25日 21:54
  • 3395

【LeetCode】Trapping Rain Water解题报告

【题目】 Given n non-negative integers representing an elevation map where the width of each bar is...
  • ljiabin
  • ljiabin
  • 2014年12月08日 15:19
  • 4262

【LeetCode with Python】 Trapping Rain Water

Given n non-negative integers representing an elevation map where the width of each bar is 1, comput...
  • nerv3x3
  • nerv3x3
  • 2014年07月06日 15:38
  • 5699

leetCode 42.Trapping Rain Water(凹槽的雨水) 解题思路和方法

Trapping Rain Water Given n non-negative integers representing an elevation map where the width o...
  • xygy8860
  • xygy8860
  • 2015年07月11日 14:04
  • 728

Leetcode: Trapping Rain Water

Given n non-negative integers representing an elevation map where the width of each bar is 1, comput...
  • doc_sgl
  • doc_sgl
  • 2013年10月05日 12:07
  • 7257
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Trapping Rain Water Array+技巧
举报原因:
原因补充:

(最多只允许输入30个字)