删除数组中的一个最小元素,同时保留Ruby中的顺序

时间:2016-08-25 17:55:21

标签: ruby

简单的问题,但不知怎的,我想不出解决方案。如何删除随机整数数组中的单个最小元素?

a = [7, 5, 3, 2, 1, 4]
b = [2, 2, 1, 1, 2]

这就是我想出的:

def remove_it(num)
    num.delete(num.sort[0])
end

代码适用于a,但不适用于b。它会在1中删除两个 b。我只需要删除一个1

如何删除数组中的一个最小数字并保留顺序?

1 个答案:

答案 0 :(得分:6)

易peasy。使用.delete_at + .index

def remove_it(num)
  num.delete_at(num.index(num.min))
  num
end

a = [7, 5, 3, 2, 1, 4]
b = [2, 2, 1, 1, 2]

remove_it(a) # => [7, 5, 3, 2, 4]
remove_it(b) # => [2, 2, 1, 2]