在Ruby,我想pop
的元件(最小)关闭的阵列,并且push
该相同的到一个新的数组元素。我需要将它与得到push
'd的元素相同,因为我想递归地做到这一点,而不会发生这种情况:
a = [1,4,2,3,5,7,8,6]
b = []
b.push(a.min) #=> b = [1]
b.push(a.min) #=> b = [1,1]
b.push(a.min) #=> b = [1,1,1]
而不是
b.push(a.min) #=> b = [1]
b.push(a.min) #=> b = [1,2]
b.push(a.min) #=> b = [1,2,3]
编辑:
应该提到,我尽量不使用sort
,谢谢!
该问题要求使用递归方法。其他答案都不是递归的。
这是一个递归解决方案:
class Array
def recursive_pop
any? ? [delete(min)] + recursive_pop : []
end
end
irb(main):082:0> original_array = [1,2,3]
=> [1, 2, 3]
irb(main):083:0> new_array = original_array.recursive_pop
=> [1, 2, 3]
irb(main):084:0> new_array
=> [1, 2, 3]
irb(main):085:0> original_array
=> []
根据要求,该方法将一个原始数组中的最小元素一一删除,然后将其添加到新数组中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句