随机地形装水问题
前几个月面试一个美国公司, 给了几道线上题, 说是一星期都做完就行了, 因为当时在考编制, 就没有继续做了, 其中有一道就是装水的问题:
一个使用正方体作为基础, 随机生成的地面, 下雨之后能装多少水? 如下图:
姑且认为只要前后左右都有石头的时候, 就能把水存住 :
计算逻辑可以先从找到无法存水的点开始, 其它的点就作为可存储水的点, 设置一个较大的储存水量的数值, 然后厉遍这些无法存水的点,
找到可到达的其它点(高度小于等于起始点的), 就像寻路算法的厉遍逻辑, 将所有到达点的可存储水量设置到不高于当前点的最小值, 即可.
这里如何找到无法存水的点, 可以先看二维的情况:
显而易见, 图中的0点都是无法存水的, 要找到这些点只需要找到第一个最高点, 然后往左右继续找最高点, 直到末尾.
用这个方法从横向上来一遍, 再从纵向上来一遍, 就能大致找到地表无法储存水的点了. 然后厉遍就是了.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了