所以基本上我有一个像这样填充整数的散列 ->
{5=>1, 3=>2, 2=>3, 1=>4, 4=>5}
您会注意到这些值是散列中第一个数字的位置。
我根据key对hash进行排序之后,看起来是这样的->
{1=>4, 2=>3, 3=>2, 4=>5, 5=>1}
我想做的是从原始哈希中删除第一个值低于前一个元素的元素。
所以我能想到的最明显的方法是:
lastvalue = -1
sortedNumbers.each{ |key,value|
if value < lastvalue
original_array.delete(key)
return "deleted element"
end
last_value = value
}
就正确性/速度而言,这是做到这一点的最佳方式吗?这甚至是解决一般问题的一种比较好的方法吗?
最佳答案
要比较 Enumerable 的连续值,请使用 #each_cons
:
key = sortedNumbers.each_cons(2) do |(k1, v1), (k2, v2)|
break k2 if v2 < v1
end
sortNumbers.delete(key)
关于ruby-on-rails - 在散列中找到低于前一个数字的第一个键/值的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8057849/