给出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? }
更快的方法。
答案 0 :(得分:3)
当你找到一个更快的方式时,我会感到惊讶:
array.all? { |element| element.empty? }
如果我们看看它们是如何工作的,那将会有什么意义。如果它是空的,则查看每个元素,但是只要存在非空元素就会停止。这意味着它需要最多n
个步骤并且不会更改数组。
而大多数其他示例都会更改数组。这意味着他们需要分配内存和复制数据。如果您首先操作数据,则需要完全n
步骤以及之后的检查。