Учитывая список целых чисел и одно значение суммы, верните первые два значения (слева), которые складываются, чтобы сформировать сумму.
Например, учитывая:
sum_pairs([10, 5, 2, 3, 7, 5], 10)
[5, 5]
(по индексам [1, 5]
из [10, 5, 2, 3, 7, 5]
) - до 10
, а [3, 7]
(по индексам [3, 4]
) - до 10
.Среди них вся пара [3, 7]
является более ранней и, следовательно, является правильным ответом.
Вот мой код:
def sum_pairs(ints, s)
result = []
i = 0
while i < ints.length - 1
j = i+1
while j < ints.length
result << [ints[i],ints[j]] if ints[i] + ints[j] == s
j += 1
end
i += 1
end
puts result.to_s
result.min
end
Это работает, но слишком неэффективно, занимая 12000 мсбежать.Вложенный цикл - это проблема неэффективности.Как я могу улучшить алгоритм?