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[Array]: Trapping Rain Water

Given n non-negative integers representing an elevation map where the width of each bar is 1, comput...

Array(10) -- Insert Interval, Merge Intervals, Trapping Rain Water, Next Permutation

Insert Interval, Merge Intervals, Trapping Rain Water, Next Permutation

LeetCode Trapping Rain Water等雨水的凹槽容量

最后黑体字的Thanks Marcos的意思是让我们放大我们的想象力,因为上图很容易误导我们的。如果只有上图的情况的话,我们可以很好用贪心法解决,但是,用贪心法是会出错的,因为如果我们计算当前最低点,...

leetcode || 42、 Trapping Rain Water

problem: Given n non-negative integers representing an elevation map where the width of each...

[leetcode]42. Trapping Rain Water(Java)

https://leetcode.com/problems/trapping-rain-water/#/description Given n non-negative inte...

Leetcode-42 Trapping in Rain Water

题目:             示例输入:                     &#...

leetcode学习笔记:Trapping Rain Water

Trapping Rain Water  Total Accepted: 8785 Total Submissions: 31229My Submissions Given n...

Trapping Rain Water [hard]

以 下 题 目 网 址 来 源 https://leetcode.com/ 42. Trapping Rain Water  Given n non-negative intege...

[Leetcode] Trapping Rain Water (Java)

Given n non-negative integers representing an elevation map where the width of each bar is 1, comput...

[Leetcode] 42. Trapping Rain Water 解题报告

题目: Given n non-negative integers representing an elevation map where the width of each bar is 1, ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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