Closed Totie-O closed 3 years ago
我检查好久,还是看不出来,请老师指点一下
你能把代码贴出来么?总不能让我照着你的图片输入一遍吧……
def twoSum(nums, target):
res = []
newnums = nums[:]
newnums.sort()
left = 0
right = len(newnums) - 1
while left < right:
if newnums[left] + newnums[right] == target:
for i in range(0, len(nums)):
if nums[i] == newnums[left]:
res.append(i)
break
for i in range(len(nums) - 1, -1, -1):
if nums[i] == newnums[right]:
res.append(i)
break
res.sort()
break
elif newnums[left] + newnums[right] < target:
left = left + 1
elif newnums[left] + newnums[right] > target:
right = right + 1
return (res[0] + 1, res[1] + 1)
twoSum([3, 7, 4, 10, 5], 11)
没看懂你的算法,为啥会有 right = right + 1
这一步?你的 right
不是等于 len(newnums) - 1
么?这个一 +1
可不就是越界了么?
建议把你的问题和算法思路先用清晰明白、分步骤的中文写出来,然后确认思路无误再把它变成代码。
好的,谢谢老师,太难了。 我一直以为是前面if的语句出错,没想到时候后面那个right,我下次会认真一些。