当青训营遇上码上掘金——攒青豆

50 阅读2分钟

当青训营遇上码上掘金——主题4:攒青豆


1.题目

现有 n 个宽度为 1 的柱子,给出 n 个非负整数依次表示柱子的高度,排列后如下图所示,此时均匀从上空向下撒青豆,计算按此排列的柱子能接住多少青豆。(不考虑边角堆积)

image.png


2.思路

首先我们要搞懂题目要求我们求的是什么?
我们可以阅读题目可以知道是求方块所组成的面积,即多少单位的青豆!我们可以按照每一列来求青豆的面积,去循环遍历每一列,遍历的同时去看当前列是否可以装青豆,关注左边最高的列以及右边最高的列。我们也只要看左边最高的列和右边最高的列中的最矮一个列即可。可以有多少的青豆,,我们可以知道最两端的列是不会有青豆的,数组的个数就会减去2,也是数组下标从1到数组的长度减去2,然后去利用for循环去遍历每一列,去看遍历的当前列与左右两边的最高列进行比较,也只有较小的列大于当前列才会有青豆。


3.总结

其实这道题目类似力扣上的接雨水,可以有许多的方法可以解答这道题目,但我觉得最重要的还是解题的思路,思路对于我们来说是很重要的,我们在解这道类型题目的时候是否也应该去考虑这个方法的时间复杂度以及它的空间复杂度?这么多方法中哪个方法可以说是最优的呢?

我还是需要多去思考多去练这一系列的题目,让自己可以在今后的学习或者工作中有着一种发散的思维,去多角度去考虑问题,去解决一系列的问题,我想这道题目对于我来说是很有帮助的。