Найти индексы массива, которые в сумме дают заданное число Python
Учитывая массив целых чисел nums и целое число target, верните индексы двух чисел так, чтобы их сумма равнялась target.
Вы можете предположить, что каждый вход будет иметь ровно одно решение, и вы не можете использовать один и тот же элемент дважды. Проблема в том, что в массиве с одинаковыми числами не возвращает результат. Буду очень благодарен за помощь.
def sum_of_two(nums: list, target: int) -> list:
step = 0
for x in nums:
for y in nums:
if x + y == target and nums.index(x) != nums.index(y):
print([nums.index(x), nums.index(y)])
step = 1
break
if step == 1:
break
return nums.index(x), nums.index(y)
sum_of_two([3, 3], 6)
Ответы (1 шт):
Автор решения: Алексей Р
→ Ссылка
Метод .index() возвращает индекс первого совпадения, поэтому при равных числах будет возвращать один и тот же индекс. Перебирайте индексы вместо этого.
def sum_of_two(nums: list, target: int) -> list:
for i in range(len(nums)):
for j in range(i + 1, len(nums)):
if nums[i] + nums[j] == target:
return [i, j]
print(sum_of_two([3, 2, 1, 8, 3], 6))
[0, 4]