【发布时间】:2016-12-05 07:48:11
【问题描述】:
我有这个代码:
require 'set'
N, K = gets.split().map{ |v| v.to_i }
set = Set.new
numbers = gets.split().map{ |v| v.to_i }
pairs = 0
N.times do |i|
set.add(numbers[i])
end
set.each{ |value| pairs += set.include?(value+K) ? 1 : 0 }
puts pairs
但是当我把 N 和 K 放在一起的时候,返回这个错误:
`+': nil can't be coerced into Fixnum (TypeError)
我应该转换还是其他什么?谢谢!
【问题讨论】:
-
那么,我该怎么办?对我来说没有意义
-
我认为这里的问题是
numbers[i]在某些情况下为零,所以set得到nil推送给它。然后,当您迭代集合时,value在某些情况下为零,因此value+K失败。您可以使用.compact从数组中删除 nil 元素,但我不确定这是否能解决您的问题,因为我不完全理解这段代码的目标是什么。 -
契约不起作用