[Codewars]-Pyramid Slide Down
2018-03-24 17:11
120 查看
[Codewars]-Pyramid Slide Down(2018/3/31更新)
题目:
从金字塔顶端到底部,寻找一条最长的路径。思路:
动态规划就行了这里我简单解释一下动态规划方法,从底部开始,把倒数第二层每个元素,分别加上下一层的相邻元素(可以选的下一步),,把最大的一个(最优的下一步)作为这层(倒数第二层)的新元素。
比如:
3 7 4 2 4 6 8 5 9 3
最底下的一层是
8 5 9 3,倒数第二层是
2 4 6
2可以选择下一层的8或者5作为下一步,而2+8>2+5,故把2+8=10,取代2,
4可以选择下一层的5和9作为下一步,而4+9>4+5,故把4+9=13,取代4的位置
同理6+9>6+3,倒数第二层变成了
10 13 15,去掉(无视)最后一层,把倒数第二层最为新的最后一层。
金字塔变成
3 7 4 10 13 15
然后,金字塔变成
3 20 19
到最后只剩下一层,就是23,这个就是最优解了
解答:
function longestSlideDown (pyramid) { var res = pyramid.pop() while (pyramid){ var cur = pyramid.pop() if(!cur){break ;return ;} var arr = [] cur.forEach(function(ele,index){ arr.push( cur[index]+Math.max( res[index],res[index+1] ) ) }) res = arr } return res.pop() }
大神写法:
function longestSlideDown (pyramid) { return pyramid.reduceRight((last,current)=>current.map( (v,i)=>v+Math.max(last[i],last[i+1]) ))[0]; }
大神总是那么让人折服。
相关文章推荐
- 【Codewars-Pyramid Slide Down】(下三角矩阵求最长路径)
- jquery slideup\slidedown
- 基于jquery的slideDown和slideUp做手风琴
- 工作日志 jquery slideDown slideUp
- Jquery+SlideDown+在IE7和IE6中的bug
- jQuery中slidedown与slideup方法用法示例
- JQury中设置元素滑动(slideUp/slideDown/slideToggle)方法
- 微信小程序之实现slideUp和slideDown效果和点击空白隐藏
- JQ之slideDown, slideUp, slideToggle, toggle演示笔记
- 点击显示或隐藏 slideDown/slideUp
- jQuery 滑动方法slideDown向下滑动元素
- jquery基础教程六(滑动效果函数之slideDown,slideToggle和slideUp)
- [jQuery教程]jquery基础教程六(滑动效果函数之slideDown,slideToggle和slideUp)
- jQuery动画效果-slideUp slideDown上下滑动示例代码
- jquery 动画函数animate/show/slideDown/fadeIn/toggle
- jQuery动画效果-slideUp slideDown上下滑动示例代码
- JQuery slidedown slideup方法
- jQuery 滑动方法slideDown向下滑动元素
- 利用转场动画实现slide down menu
- 纯CSS实现滑动效果(Slide Up & Slide Down)