Golang | Leetcode Golang题解之第42题接雨水

题目:

题解:

Go 复制代码
func trap(height []int) (ans int) {
    n := len(height)
    if n == 0 {
        return
    }

    leftMax := make([]int, n)
    leftMax[0] = height[0]
    for i := 1; i < n; i++ {
        leftMax[i] = max(leftMax[i-1], height[i])
    }

    rightMax := make([]int, n)
    rightMax[n-1] = height[n-1]
    for i := n - 2; i >= 0; i-- {
        rightMax[i] = max(rightMax[i+1], height[i])
    }

    for i, h := range height {
        ans += min(leftMax[i], rightMax[i]) - h
    }
    return
}

func min(a, b int) int {
    if a < b {
        return a
    }
    return b
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}
相关推荐
Wy_编程1 天前
go中的协程Goroutine
开发语言·golang
会编程的土豆1 天前
Go 语言中的 `new` 关键字(创建指针)
java·算法·golang
x_yeyue1 天前
2026第十七届蓝桥杯c++B组省赛题解
笔记·算法·蓝桥杯·acm·题解
老四啊laosi1 天前
[滑动窗口] 12. 将 x 减到 0 的最小操作数
算法·leetcode·将 x 减到 0 的最小操作数
喵了几个咪1 天前
Kratos 生态双定时器中间件:高精度 hptimer 与标准 cron 选型与实践
微服务·中间件·架构·golang·kratos
Achou.Wang1 天前
Concurrency patterns - Go 并发模式
开发语言·后端·golang
存在morning1 天前
【GO语言开发实践】三 GO 工程化快速上手
开发语言·后端·golang
人道领域1 天前
【LeetCode刷题日记】513.二叉树左下角值的三种解法:从常规BFS到DFS的优雅之旅
数据结构·算法·leetcode·深度优先·广度优先
Achou.Wang1 天前
Go语言并发编程中的死锁防范与破解之道
服务器·开发语言·golang
子安柠1 天前
深入理解 Go 反射:原理、实践与性能陷阱
开发语言·golang