编写一个带有数字数组的方法。您的方法应该#返回数组中第三个最大的数字

时间:2015-12-25 18:50:56

标签: arrays ruby

我有:

def third_greatest(nums)
  highest_num_array = []
  highest_num = 0
  i = 0

  while highest_num_array.length < 3
    while i < nums.length
      if nums[i] > highest_num
        highest_num = nums[i]
      end
      i = i + 1
    end
    nums.delete(highest_num)
    highest_num_array.push(highest_num)
  end

  return highest_num_array[2]
end

我一直得到最高的数字。我做错了什么?

1 个答案:

答案 0 :(得分:1)

在每个外部循环之后,

highest_num不会被重新整理。因此它将保持列表中的最高数字,并且将被推入阵列三次。

如果你把

highest_num = 0

while highest_num_array.length < 3

它应该有用。

<小时/> 即使这样,您的代码也存在很多问题:

  • 它看起来不像Ruby。
  • 您正在改变作为参数传递的列表。
  • 当值可以重复时,您不处理这种情况。
  • 您假设数字为> = 0

你想要的只是

numbers.max(3).last