美文网首页Swift刷算法
Swift刷算法:接雨水

Swift刷算法:接雨水

作者: JonorZhang | 来源:发表于2022-06-21 22:11 被阅读0次

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。
LeetCode: https://leetcode.cn/problems/trapping-rain-water/submissions/

image.png
class Solution {
    func trap(_ height: [Int]) -> Int {
        guard height.count > 2 else { return 0 }
        
        // 左右做高点
        var maxL = height.first!
        var maxR = height.last!
        
        // 左右指针
        // 双指针从左右分别向中间移动,遇到高点更新高点,遇到低点更新水量
        var L = 0
        var R = height.count - 1
        
        // 结果
        var res = 0

        while L < R {
            if maxL <= maxR {
                // 左边高点比右边矮,则左边指针右移
                L += 1
                
                if height[L] >= maxL {
                    // 遇到左侧新高
                    maxL = height[L]
                } else {
                    // 遇到左侧低点,则形成洼地,储水增加
                    res += maxL - height[L]
                }
            } else {
                // 右边高点比左边矮,则右边指针左移
                R -= 1
                if height[R] >= maxR {
                    // 遇到右侧新高
                    maxR = height[R]
                } else {
                    // 遇到右侧低点,则形成洼地,储水增加
                    res += maxR - height[R]
                }
            } 
        }

        return res
    }
}
image.png

相关文章

  • Swift刷算法:接雨水

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。LeetCode...

  • iOS 接雨水算法Swift

    题目描述: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上...

  • 算法:接雨水

    问题 Given n non-negative integers representing an elevatio...

  • Java算法(3):接雨水

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 输入:heig...

  • 接雨水的算法题

    前几天看到一个算法题就写了一下如下: 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,...

  • Swift 算法刷题

    目标一周刷2道题也不知道能坚持几天,这玩意在leetcode做完怎么保存啊 给一个有序的数组,数组中有重复数字,输...

  • 删除排序数组中的重复项(LeetCode-26)

    写在前面:看到很多程序员朋友都在刷LeetCode,刚好最近在学习swift以及数据结构算法,所以用swift刷L...

  • 接雨水

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 ...

  • 接雨水

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/trap...

  • 接雨水

    给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 上面是由数组 ...

网友评论

    本文标题:Swift刷算法:接雨水

    本文链接:https://www.haomeiwen.com/subject/ncsdvrtx.html