eine Reihe von leeren Arrays in Ruby Gegeben:Was ist der effizienteste Weg um festzustellen, ob ein zweidimensionales Ruby Array leer ist?
a = [ [], [], [], [], [] ]
Sie können bestimmen, ob alle Unterfelder Arrays leer sind:
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
Die obigen Ansätze sind von langsamste aufgeführt schnellsten. Gibt es einen schnelleren Weg als mit a.all? { |x| x.empty? }
.
Ja, ich frage mich, ob es im schlimmsten Fall einen cleveren Weg gibt, das schneller als O (n) zu machen. – ybakos
Ich würde argumentieren, wenn Sie ein Array haben und überprüfen müssen, ob eines der Sub-Arrays nicht leer ist, dann gibt es keinen schnelleren Weg als 'O (n)', weil Sie im schlimmsten Fall alle Sub-Arrays überprüfen müssen. – spickermann
Ich sehe auch nicht, wie es schneller sein könnte. @spickermann: Kleiner Nitpick: Die anderen Beispiele ändern das Array nicht. Sie schaffen ein neues, das Zeit und Gedächtnis braucht. –