a = [1,3,1,2]
When 1and are 1considered as the two smallest valuesa
def second_largest_not_uniq(a)
a.each_index.min_by(2) { |i| a[i] }[1]
end
second_largest_not_uniq [1,3,1,2]
second_largest_not_uniq [1]
second_largest_not_uniq []
When 1and are 2considered as the two smallest valuesa
def second_largest_uniq(a)
a.each_index.to_a.uniq { |i| a[i] }.min_by(2) { |i| a[i] }[1]
end
second_largest_uniq [1,3,1,2]
second_largest_uniq [1,1,1]
second_largest_uniq []
second_largest_uniq [1]
source
share