2009-11-18 76 views
3

假設,我有一個二維數組A,它聲明裏面有一個對象my_element。什麼是找出座標的最快捷方式?我正在使用Ruby 1.8.6。紅寶石二維數組:找到一個對象的座標

+2

真的只有一種方法:循環遍歷所有插槽,直到找到你要找的東西(見mtyaka的答案)。最壞的情況是,這是'O(m * n)',其中'm'和'n'是陣列中的行數和列數。 – 2009-11-18 10:54:11

回答

6

這是一種方法。雖然我不確定它是最快的。

class Array 
    def coordinates(element) 
    each_with_index do |subarray, i| 
     j = subarray.index(element) 
     return i, j if j 
    end 
    nil 
    end 
end 


array = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] 
array.coordinates(3)  # => [0, 2] 
array.coordinates(9)  # => [2, 2] 
array.coordinates(42) # => nil 
+0

優雅的座標方法的實現,但我不會將它添加到Array類,因爲它並不真正適用於所有數組。與關於是否應將「總和」方法添加到Array的論點類似。 – mikej 2009-11-18 12:18:15

+0

@mikej是的,完全同意。我將它添加到Array類中僅用於演示目的。 – mtyaka 2009-11-18 15:08:30

+0

呃,就像我想的那樣。不管怎樣,謝謝! – gmile 2009-11-18 21:17:16