`
wudixiaotie
  • 浏览: 138268 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

leetcode的一道题--Trapping Rain Water

 
阅读更多

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!

 ====================================================================================================

我的答案

a = [0,1,0,2,1,0,1,3,2,1,2,1]
b = [0,0,0,0,0,7,0,0,0,0,0,0]

def trap(data_arr)
  total_trap = 0

  data_arr.each_with_index do |item, index|
    left_edge, right_edge = item, item
    # find left bigest edge
    (0..(index - 1)).reverse_each do |left_index|
      left_item = data_arr[left_index]
      if left_item > left_edge
        left_edge = left_item
      end
    end

    # find right bigest edge
    ((index + 1)..(data_arr.length - 1)).each do |right_index|
      right_item = data_arr[right_index]
      if right_item > right_edge
        right_edge = right_item
      end
    end

    # this point traped water
    increment = left_edge >= right_edge ? right_edge - item : left_edge - item

    total_trap += increment
  end

  total_trap
end

p trap(a) == 6
p trap(b) == 0

  

分享到:
评论

相关推荐

    C语言-leetcode题解之42-trapping-rain-water.c

    c语言入门 C语言_leetcode题解之42-trapping-rain-water.c

    js-leetcode题解之42-trapping-rain-water.js

    js js_leetcode题解之42-trapping-rain-water.js

    leetcode不会-3D-Trapping-Rain-Water-System:该repo包含复杂3D雨水收集系统的解决方案,该系统在Lee

    leetcode 不会3D 捕集雨水系统 该 repo 包含复杂 3D 雨水收集系统的解决方案,该系统在 Leetcode Problem No. 407 和 Google Interview Round 中提出。 此外,它将“0”视为系统的排水。 (查看自述文件以获得详细...

    多线程leetcode-leetcode-java:leetcode上的题解,基于java语言

    多线程 leetcode 前言 每天刷点leetcode,基于java语言实现。 leetcode上难度分三档:easy,medium,hard. 如下: easy medium Remove Nth Node From End of List Swap Nodes ...Trapping Rain Water

    leetcode1004-leetcode:leetcode删号重练个人记录:)

    leetcode 1004 leetcode NEXT:42 Trapping Rain Water 刷题顺序 刷题内容总的来说包括数据结构、算法和技巧 按照tag分类别进行刷题,跳过like<200>like的题目 按Acceptance由高到低进行,每个tag所刷题目大于20...

    leetcode卡-LeetCode:我的LeetCode解决方案

    记录一下再LeetCode上刷的题,坚持每天刷一道吧 2017.06.12 打卡[LeetCode 2. Add Two Numbers], Linked list 2017.06.13 打卡[LeetCode 200. Number of Islands], BFS 2017.06.14 打卡[LeetCode 3. Longest ...

    LeetCode最全代码

    # [LeetCode](https://leetcode.com/problemset/algorithms/) ![Language](https://img.shields.io/badge/language-Python%20%2F%20C++%2011-orange.svg) [![License]...

    leetcode-cpp刷题

    - **2.1.15 Trapping Rain Water** - 计算雨水能够困住的水量。 - 实现思路:使用动态规划方法,记录每条柱子左侧最高值和右侧最高值,然后计算水量。 - **2.1.16 Rotate Image** - 将一个正方形矩阵顺时针旋转...

    _leetcode-python.pdf

    - Trapping Rain Water: 给定一个数组,其中每个元素代表一个宽度为1的柱子高度,计算能接多少雨水。 - Multiply Strings: 给定两个非负整数字符串形式的数,要求进行乘法运算。 - Wildcard Matching: 实现支持'?'和...

    javalruleetcode-LeetCode:LeetCode算法问题

    记录找工作期间搬运的题,全部使用Java实现,本人C++鶸 1 双指针 编号 题目 LeetCode 11 Container With Most Water LeetCode 19 Remove Nth Node From End of List LeetCode 42 Trapping Rain Water LeetCode 61 ...

    Leetcode-Solutions:JavaScript 语言的 Leetcode 解决方案

    力码解决方案 Leetcode是一个网站,人们——...├── Trapping Rain Water │ ├── Readme.md │ └── solution.js ├── Wildcard Matching │ ├── Readme.md │ └── solution.js ├── Valid Number │

    leetcode添加元素使和等于-leetcode:力码

    trapping-rain-water 滑动窗口 通过窗口的大小不断调整来找到合适的值,或者窗口大小不变,通过左右移动来找到相应的结果 \ \ 其他 非 LeetCode 题,单纯在别人面试中看到的 \ 链表 \ swap-nodes-in-pairs linked-...

    leetcode跳跃-leetcode:leetcode解题之路

    接雨水](./Array/trapping-rain-water.md) [0048 旋转图像](./Array/rotate-image.md) Heap 堆 [0023 合并K个排序链表](./Heap/merge-k-sorted-lists.md) String 字符串 [0006 Z字形变换](./String/zigzag-...

    python-leetcode面试题解之第42题接雨水-题解.zip

    在本压缩包中,我们关注的是一个Python编程相关的学习资源,特别针对LeetCode平台上的第42题“接雨水”(Trapping Rain Water)的面试题解。LeetCode是一个广泛被程序员用来提升算法技能和准备面试的在线平台,其中...

    leetcode答案-Algorithms:算法

    leetcode 答案 Algorithms 一、three sum 三数相加问题 问题描述 在一个由 number 组成的数组中,找到所有的 3 个数组成的数组,使得这三个数字的和等于给定的数字 解答 考虑到时间复杂度肯定大于等于 O(n²) 可以先...

    C语言入门-leetcode练习之第42题接雨水.zip

    接下来,我们转向LeetCode的第42题“接雨水”(Trapping Rain Water)。这是一道典型的二维数组问题,考察的是动态规划和双指针技巧。 题目描述:给定一个高度不一的数组代表地面,雨水会积累在低点。求能容纳的...

    收集面试中提出的一些重要问题。-C/C++开发

    收集面试中提出的一些重要问题。 数据结构算法面试问题面试中提出的一些重要问题的集合。...数组https://leetcode.com/problems/3sum/ [解决方案] https://leetcode.com/problems/trapping-rain-water/ [解决方案] ...

    leetcode答案-leetcode:leetcode.com问题的答案

    leetcode 答案leetcode leetcode.com 问题的答案 跑步 python -m venv .venv source .venv/bin/activate pip install -r requirements.txt pytest <question>/tests.py ...lc42_trapping_rain_water/tests.py

    erlang入门级练习:LeetCode OJ问题的部分erlang 源码

    我自己在新学erlang,在LeetCode OJ上找了题目练习,题目很适合新手... "three_sum.erl","trapping_rain_water.erl", "valid_palindrome.erl" 个人认为dungeon_game这个题目解题逻辑很体现erlang的函数式的思维逻辑

    leetcode添加元素使和等于-leetcode:我的leetcode解决方案

    leetcode添加元素使和等于 经验教训 一定要吧功能尽量细化为函数,这样一者做题思路比较清晰,二者可以在某些情况下直接return值。 如果输入的形式是一个序列,则可以想想:分治、动规、贪婪,一般不建议搜索,因为...

Global site tag (gtag.js) - Google Analytics