ruby - 定义方法 `sum_to_n?`

标签 ruby arrays

我有下面的代码。方法 sum_to_n? 接受一个整数数组 arr 和一个整数 n 作为参数,如果有任何两个元素则返回 true arr 总和为 n。对于 n 为零的空 arr,它应该返回 true,但一直返回 false

def sum_to_n?(arr, n)
  hash = Hash.new(0)
  arr.each do |val|
    if hash.key? val
      return true
    else
      hash[n-val] = val
    end
  end
  return false
end

我做错了什么?

最佳答案

较短的版本:

def sum_to_n?(arr, n)
  (arr.empty? && n.zero?) || arr.permutation(2).any? { |a, b| a + b == n }
end

关于ruby - 定义方法 `sum_to_n?`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19351337/

相关文章:

ruby - 无法加载 'active_record/connection_adapters/mysql2_adapter'

ruby - Linux 使用重定向运行子进程而不产生新进程

c++ - 如何用 if 检查字符串数组的第一个元素第一个符号?

php - 动态数组再次覆盖

javascript - 更新本地存储中数组中的项目

ruby - 通过 IntelliJ 在 sdk 中找不到 Rspec gem

ruby 正则表达式

php - PHP 5.3 或更低版本中的数组不区分大小写的键排序

ruby-on-rails - Prawn 不会画横线

javascript - 获取数组中值的总和