所以基本上我有一個充滿整數這樣的哈希 - >最快的方式
{5=>1, 3=>2, 2=>3, 1=>4, 4=>5}
你會發現,值是散列中第一個數字的位置。
後我排序基於密鑰的哈希,它看起來像這樣 - >
{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
}
這是在正確/速度方面要做到這一點的最好方法是什麼?這通常是解決問題的中等程度的好方法嗎?
lastvalue = -1
original_array.clone.each{ |key,value|
original_array.delete(key); return "deleted element" if value < last_value
last_value = value
}
Basicly相同的東西,但有點聰明代碼:
我知道散列有某種1.9訂貨的,但它依靠的是排序,而不是使用數組是個好主意? (我沒有意思是諷刺 - 我真的不確定) –
哈希值保證在1.9中保持他們的插入順序。無論如何,從一個切換到另一個很容易。 –