基本的ruby代码不起作用

时间:2015-04-21 01:05:33

标签: ruby

我刚刚学习了Ruby,我正在做一些基本的练习问题来熟悉这门语言。我刚刚遇到这个问题: “编写一个采用数组的方法。如果是一对数字 在数组中总和为零,返回这两个数字的位置。 如果没有数字对总和为零,则返回nil。“

这是我的代码:

def two_sum(nums)
  i = 0
  j = 0
  while i < nums.length
    while j < nums.length
      if nums[i] + nums[j] == 0
        return [i, j]
      end
      j+= 1
    end
    i += 1
  end
  return nil
end

每次都返回nil。怎么了?

2 个答案:

答案 0 :(得分:5)

j递增时,

0应重新初始化为i

  while i < nums.length
    while j < nums.length
      if nums[i] + nums[j] == 0
        return [i, j]
      end
      j+= 1
    end
    i += 1
    j = 0   # Here
  end

答案 1 :(得分:1)

虽然余浩回答了字面上的问题,但这是一个更Rubyish的解决方案:

def two_sum(nums)
  nums.each_with_index do |x, i|
    j = nums.index(-x)
    return [i, j] if j
  end
  nil
end