当前位置:首页 > 话题广场 > 攻略专题 > 单机攻略

关于0号元素我想说程序员面试题之“接雨水”

最近的大雨总是牵动着人们的心。

郑州的大雨淹了好多地方,上海因为台风而建议周一在家办公。作为一名软件工程师,没有技能去冲在第一线抗灾,那么我们就在大后方好好地修炼内功,提升自我吧。

今天我们就来看一道和“雨水”相关的题目。

题目

输入:[1,2,3,1,3]

输出:9

可以想象每一个数字是一个挡板,每个数字可保证大于0。

释义:样例中每一格可接的雨水分别为1,2,3,3,故输出为1+2+3+3 = 9

题目讨论

这道题目本身还是蛮有意思的,属于使用代码去模拟现实世界并解决其问题。这类题目首先要认真分析题目,多看一下例子,总结其规律,然后再解决即可。

我们以每一格为立足点,来看哪些因素会影响其接水量。

对于第一格来说,它的接水量是1,即左边的挡板高度为1,右边的挡板高度为2。因此可以得出结论:接水量取决于左右挡板中较矮的那一个。

对于现实世界,我们应该能比较容易想到另一种情况,即输入是3,1,3时,第一格中的接水量应该为3,而不是取两个挡板的最小值1。因为如果两侧有更高的挡板,那么此时会“淹掉”较矮的挡板,而接水量取决于左右两侧最高的挡板。所以这里需要修改一下上面的结论。修改成什么样呢?这里建议读者可以自己先想一下。

。。。。。。。。。。

。。自行思考地带。。

。。。。。。。。。。

好了,我们来说结论:接水量取决于左边的最大值和右边的最大值中的最小值

接水量结论

好了到这里基本的思路是清晰的,建议读者可以自己动动手实践一下。

我们知道,代码是“练”会的,不是“看”会的。

。。。。。。。。。。

。。自行实践地带。。

。。。。。。。。。。

完整版代码

接雨水

可以注意一下数组方法slice的使用,用以分割数组。

用法:

[1,2,3,4].slice(0,2)返回 [1,2],即从0号下标元素开始(包含),到2号下标结束(不包含)的数组

[1,2,3,4].slice(1)返回 [2,3,4],即从0号下标素开始(包含),到结尾的数组

总结

上述方法的复杂度分析如下:

时间复杂度O(n2):一层循环内,每次取最大值也是O(n)的复杂度,因此相当于两层循环

空间复杂度O(n):使用了一个新数组来存每一格的接水量

读者朋友,你能想到其他更高效或更有趣的解决方法么?

欢迎留言讨论

1.《关于0号元素我想说程序员面试题之“接雨水”》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《关于0号元素我想说程序员面试题之“接雨水”》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/gl/2077688.html

上一篇

11 2 1看这里!安全漏洞被修复!苹果发布iOS 11.2.1更新:续航修复已经无望!

下一篇

007传奇攻略看这里!007无暇赴死已落幕,不死特工完结传奇一生,是否会有继任者?

【0号元素】铝元素简介

【0号元素】铝元素简介

0号元素相关介绍,铝(Aluminium)是元素符号为Al的金属元素,是银白色轻金属。 有延展性。商品常制成棒状、片状、箔状、粉状、带状和丝状。在潮湿空气中能形成一层防止金属腐蚀的氧化膜。铝粉在空气中加热能猛烈燃烧,并...

【0号元素】专题基本粒子12|β衰变能量丢失之谜,中微子是如何被发现的?

【0号元素】专题基本粒子12|β衰变能量丢失之谜,中微子是如何被发现的?

0号元素相关介绍,现在伸出手掌,每秒种会数以百亿计的中微子穿过你的手掌,但是你完全感觉不到它们的存在,这是为啥,因为它们像幽灵一样,从来不会和你的手掌发生任何形式的相互作用。 达到当天最大量API KEY 超过次数限制...

关于0号元素我想说氖元素简介

关于0号元素我想说氖元素简介

0号元素相关介绍,Neon(以前的翻译,瓦爵)是化学元素,化学符号是ne,其原子序数是10,是无色稀有气体,放电时呈橙色。 氖最常用在霓虹灯之中。空气中含有少量氖。属零族元素,化学性质极不活泼,为稀有气体的成员之一。 ...

0号元素,干货看这篇!钠元素简介

0号元素,干货看这篇!钠元素简介

0号元素相关介绍,钠(Natrium)是金属元素,元素符号是Na,英文名sodium。周期表中位于第三周期、I A族的碱金属元素的代表,质地柔软,与水反应生成氢氧化钠,释放氢气,化学性质活跃。 钠元素以盐的形式广泛的分...

【0号元素】冷知识之你知道世界上竟然还有0元纸币吗?

【0号元素】冷知识之你知道世界上竟然还有0元纸币吗?

0号元素相关介绍,你知道,世界上居然有0元纸币! 2015年4月,欧洲央行批准以欧元货币为标准印制无金额、可以廉价出售的欧元纪念钞,纪念了具有重大意义的建筑物、场所、历史文化事件和伟大的历史人物。 最初只在法国的各大博...

0号元素专题之镁元素简介

0号元素专题之镁元素简介

0号元素相关介绍,镁(magnesium)是金属元素,元素符号是Mg。英国戴维在1808年用钾还原氧化镁,制成了金属镁。 它是一种银白色的轻质碱土金属,化学性质活泼,能与酸反应生成氢气,具有一定的延展性和热消散性。镁元...

【0号元素】专题钠元素简介

【0号元素】专题钠元素简介

0号元素相关介绍,钠(Natrium)是金属元素,元素符号是Na,英文名sodium。周期表中位于第三周期、I A族的碱金属元素的代表,质地柔软,与水反应生成氢氧化钠,释放氢气,化学性质活跃。 钠元素以盐的形式广泛的分...

【0号元素】CUDA加速——基于规约思想的数组元素求和

【0号元素】CUDA加速——基于规约思想的数组元素求和

0号元素相关介绍,数组元素的总和顾名思义就是数组中所有元素的总和。例如,阵列X。 x的所有元素如下: 如果按串行顺序上升,请按照step1到stepn的步骤进行操作,如下图所示:S0、S1、S2、Sn-1,结果Sn-1...