ruby - 执行超时(12000 毫秒): How can I optimize this simple kata to run faster?

标签 ruby

经过长时间的休息后,我正在练习我的编码技巧,并在 CodeWars 上遇到了这个套路

输入数组中的数字,返回其各部分的总和。例如:

def parts_sums(ls)
 sums = []
  until ls.size == 0
    sums << ls.inject(:+)
    ls.shift
  end
  sums << 0
end

######### INPUT #######
parts_sums([0, 1, 3, 6, 10])

######### EXPECTED OUTPUT ######
[20, 20, 19, 16, 10, 0]

0 + 1 + 3 + 6 + 10 = 20
1 + 6 + 3 + 10 = 20
3 + 6 + 10 = 19
6 + 10 = 16
10 = 10 
0 = 0

我的解决方案解决了型,但是一旦我达到大约 30,000+ 的数组,我的解决方案就需要很长时间才能解决。

所以我的问题是对社区来说,我什至会尝试如何让它进行得更快。我知道递归通常很慢,for 循环及其变体通常足以完成工作。失败时会发生什么?有哪些方法可以让我的代码更快?

我正在寻找一些建议和一些示例(如果有人有的话)。感谢输入。谢谢。

最佳答案

def parts_sums(ls)
  ls.each_with_object([ls.sum]) { |n,arr| arr << arr.last - n }
end

parts_sums([0, 1, 3, 6, 10])
  #=> [20, 20, 19, 16, 10, 0] 

关于ruby - 执行超时(12000 毫秒): How can I optimize this simple kata to run faster?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57047568/

相关文章:

ruby - cucumber 测试的运行顺序是什么

ruby - 在 ruby​​ 中编写一个基本的条件方法

ruby - 使用 Puppet list 自动创建 Nagios 主机组

ruby - 注销后 RVM 设置丢失

ruby-on-rails - 根据时间范围从表中获取计数的最有效方法?

ruby - 如何用 nokogiri 包裹元素?

css - 在 rails 3 中使用带有 button_to "delete"的 Bootstrap 图标

ruby-on-rails - JSON 数据在开发中正确显示,但在生产中显示不正确

ruby - 在 Ruby 中使用正则表达式提取两个标签之间的文本

ruby - 为什么常量在数组内声明,并分配给其他常量,在 Ruby 中作为类常量访问?