【发布时间】:2019-05-29 16:37:54
【问题描述】:
我是 Python 新手,刚刚开始尝试 LeetCode 来建立自己的能力。在这个经典问题上,我的代码遗漏了一个测试用例。
问题如下:
给定一个整数数组,返回两个数字的索引,使它们相加到一个特定的目标。
您可以假设每个输入都只有一个解决方案,并且您不能两次使用相同的元素。
例子:
给定 nums = [2, 7, 11, 15],目标 = 9,
因为 nums[0] + nums[1] = 2 + 7 = 9, 返回 [0, 1]。
我错过了目标编号为 6 的测试用例 [3,2,4],它应该返回 [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))
在目标为 6 的测试用例 [3,2,4] 上输出返回 null,因此索引 1 和 2 甚至没有被汇总,我是否可以分配 y 错误?
【问题讨论】:
-
您的解决方案仅适用于排序列表。
-
另外,请确保 x 和 y 不相等。