0
鑑於空數組的數組在紅寶石:確定二維Ruby數組是否爲空的最有效方法是什麼?
a = [ [], [], [], [], [] ]
可以使用確定是否所有子陣列的陣列是空的:
a.uniq.length == 1 # Ignoring the flaw where sub-arrays are identical
a.index { |item| item != [] }.nil?
a.flatten.empty?
a.all? { |item| item.empty? } # Fastest of the four
以上方法中列出從最慢到最快的。有沒有比使用a.all? { |x| x.empty? }
更快的方法。
array.all? { |element| element.empty? }
是什麼讓那種感覺如果我們看看它們是如何工作:
是的,我想知道是否有一個聰明的方法來做到這一點比在最壞的情況下O(n)更快。 – ybakos
我會爭辯說,如果你有一個數組,並且需要檢查是否有任何子數組不是空的,那麼沒有比'O(n)'更快的方法,因爲在最壞的情況下你必須檢查所有子數組。 – spickermann
我看不出它會如何更快。 @spickermann:Minor nitpick:其他示例不會更改數組。他們創造一個新的,需要時間和記憶。 –