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:其他示例不会更改数组。他们创造一个新的,需要时间和记忆。 –