我有一個元素數組。如果我做了arr.max
,我會得到最大的價值。但我想獲得數組的索引。如何找到它在Ruby中如何查找具有最大值的數組索引
例如
a = [3,6,774,24,56,2,64,56,34]
=> [3, 6, 774, 24, 56, 2, 64, 56, 34]
>> a.max
a.max
=> 774
我需要知道774
這是2
的索引。我如何在Ruby中執行此操作?
我有一個元素數組。如果我做了arr.max
,我會得到最大的價值。但我想獲得數組的索引。如何找到它在Ruby中如何查找具有最大值的數組索引
例如
a = [3,6,774,24,56,2,64,56,34]
=> [3, 6, 774, 24, 56, 2, 64, 56, 34]
>> a.max
a.max
=> 774
我需要知道774
這是2
的索引。我如何在Ruby中執行此操作?
a.index(a.max) should give you want you want
雖然這將通過數組兩次。 – sepp2k 2010-08-21 19:56:10
至少在Python中,用C語言編寫的函數通過數組要快於在解釋代碼中更聰明一些:http://lemire.me/blog/archives/2011/06/14/the-語言解釋器是新機器/ – RecursivelyIronic 2012-03-23 00:11:20
是通過每個數組遍歷數組,並使用比較來跟蹤當前最大速度比這個解決方案更快? – srlrs20020 2017-11-30 16:23:34
應該工作
[7,5,10,9,6,8].each_with_index.max
在1.8.7+ each_with_index.max
將返回包含最大元素及其索引的數組:
[3,6,774,24,56,2,64,56,34].each_with_index.max #=> [774, 2]
在1.8.6中,你可以使用enum_for
得到相同的效果:
require 'enumerator'
[3,6,774,24,56,2,64,56,34].enum_for(:each_with_index).max #=> [774, 2]
這個問題相當於在http://stackoverflow.com/questions/1656677/how-do-i-find-a-integer-max-integer-in-an-array-for-ruby- and-return-the-indexed-p – 2010-08-23 07:09:07