Я новичок в Python и только начал пробовать LeetCode для создания своих котлет. По этому классическому вопросу мой код пропускает контрольный пример.
Проблема заключается в следующем:
Учитывая массив целых чисел, вернуть индексы двух чисел так, чтобы они суммировались с определенной целью.
Вы можете предположить, что у каждого входа будет только одно решение, и вы не можете использовать один и тот же элемент дважды.
Пример:
Учитывая числа = [2, 7, 11, 15], цель = 9,
Потому что nums [0] + nums [1] = 2 + 7 = 9,
возврат [0, 1].
Я скучаю по контрольному примеру [3,2,4] с целевым номером 6, который должен возвращать индексы [1,2], но попал по контрольному примеру [1,5,7] с целевым номером из 6 (что, конечно, возвращает индексы [0,1]), поэтому кажется, что что-то не так в моем цикле while, но я не совсем уверен, что.
class Solution:
def twoSum(self, nums, target):
x = 0
y = len(nums) - 1
while x < y:
if nums[x] + nums[y] == target:
return (x, y)
if nums[x] + nums[y] < target:
x += 1
else:
y -= 1
self.x = x
self.y = y
self.array = array
return None
test_case = Solution()
array = [1, 5, 7]
print(test_case.twoSum(array, 6))
Выходные данные возвращают ноль в тестовом примере [3,2,4] с целью 6, поэтому индексы 1 и 2 даже не суммируются, могу ли я назначить y неправильно?