42. 接雨水

思路

  这题关键在于每个地方接的水为左边最大和右边最大的最小值减去这个地方的高度。还需要注意的一个地方在于两边作为边界的地方是不会接水的。

  这里我用动态规划的方式记录当前位置左边最大和右边最大的值。这里需要注意的一个点是如果左边没有比当前位置大的当前位置应该赋值为多少?这里直接赋值为当前高度值,因为最后会取两边大值的最小值减去当前值。(如果填了本身之后,右边也会出现两种情况,如果右边有比这个大的值,那就不影响最终值,如果右边没有比这个大的值的话,也会为其赋值为本身的高度,不影响最后结果的计算)

代码示例

go 复制代码
func trap(height []int) int {
    result:=0
    leftBig:=make([]int,len(height))
    rightBig:=make([]int,len(height))


    for i:=1;i<len(height);i++{
        leftBig[i]=max(  height[i],max(leftBig[i-1],height[i-1])  )
    }

    for i:=len(height)-2;i>=0;i--{
        rightBig[i]=max(height[i],max(rightBig[i+1],height[i+1]))
    }

    for i:=0;i<len(height);i++{
        if i==0 || i==len(height)-1{
            continue
        }
        result+=min(leftBig[i],rightBig[i])-height[i]
    }

    return result
}

func max(a,b int)int{
    if a>b{
        return a
    }
    return b
}

func min(a,b int)int{
    if a<b{
        return a
    }
    return b
} 
相关推荐
爱刷碗的苏泓舒3 小时前
PPP-AR 中的参考星选取:数学原理、评价指标与切换处理
算法·gnss·模糊度固定·ppp-ar·星间单差·参考星·卫星端偏差
烬羽6 小时前
递归老写崩?一个"退回"公式,把回溯题变成填空题
javascript·深度学习·算法
闪电悠米6 小时前
力扣hot100-41.缺失的第一个正数-原地哈希详解
数据结构·算法·哈希算法
星空露珠6 小时前
28种颜色对应名称,
开发语言·数据库·算法·游戏·lua
Java开发追求者7 小时前
Go环境开发配置
go·go环境开发配置·环境开发配置
QXWZ_IA8 小时前
桥梁数字孪生怎么落地?
人工智能·科技·算法·智能硬件·政务
Kel8 小时前
输出层与反分词(Output Layer & Detokenization)
人工智能·算法·架构
陕西企来客8 小时前
2026年7月技术好GEO优化方案:算法适配与内容策略
人工智能·算法·机器学习·技术好geo优化
风栖柳白杨8 小时前
【面试】AI算法工程师_空白自测版本
人工智能·算法·面试
闪电悠米10 小时前
力扣hot100-73.矩阵置零-标记数组详解
算法·leetcode·矩阵