当青训营遇上码上掘金
概述
这是参加青训营的24天,小组也开始动工大程序了,很庆幸自己能来到青训营,学到了很多,结识到了很多朋友。然后这是我参加「青训营 X 码上掘金」主题创作活动入营版的文章介绍。我选择的是主题三和主题四。
主题 4:攒青豆
现有 n 个宽度为 1 的柱子,给出 n 个非负整数依次表示柱子的高度,排列后如下图所示,此时均匀从上空向下撒青豆,计算按此排列的柱子能接住多少青豆。(不考虑边角堆积)
以下为上图例子的解析:
输入:height = [5,0,2,1,4,0,1,0,3]
输出:17
解析:上面是由数组 [5,0,2,1,4,0,1,0,3] 表示的柱子高度,在这种情况下,可以接17个单位的青豆。
作者:青训营官方账号
链接:juejin.cn/post/718775…
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
代码
解释
用c++语言在键盘上获取数组后,带入work在定义函数中。work函数的原理如下:
先遍历每个的高度,前三个入栈,此时保存的是元素的下标,然后栈顶元素小于新加入的元素 栈顶元素出栈。
底:当前遍历到的i - 现在栈顶元素-1。
高:首先新来的元素与当前栈的元素取最小 得出h1 (其实是为了知道A和B 二者中的最小) 然后h1与第一步出栈的元素相减 得出H。
面积就是 底* H
答案要累加起来 当栈顶元素大于新来的元素时 栈里面添加元素,最后输出答案。
总结
最后很感谢,字节跳动这次青训营,让自己成长了很多。