给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。
你可以按任意顺序返回答案。
我的版本:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
index1 = 0
index2 = 0
for num1 in nums:
num2 = target - num1
if num1 != num2: #看看当前数是不是刚好等于目标数的一半,如果不是,属于简单情况
if num2 in nums: #如果目标数减去当前数后,所得数刚好在剩下列表中,那么直接得到当前数索引和另一个数的索引
index2 = nums.index(num2)
break;
else: #如果目标数减去当前数后,所得数不在剩下列表中,那么当前数索引值+1,继续往后搜索
index1+=1;
elif num1 == num2 and nums.count(num2) == 1: #如果当前恰好等于目标数的一半,那么赶紧查看列表当中当前数是不是有两个,如果只有一个,那么显然不是返回两个当前数索引,说明答案还在后面,继续往后搜索
index1+=1;
else: #如果当前恰好等于目标数的一半,而且当前数在列表中有两个,那么不用想了,就是返回这两个数的索引,且第一个数的索引就是当前数
index2 = nums.index(num2, index1+1) #第二个函数的索引从当前数+1开始寻找,此时找到的索引为第二个数在列表当中的索引
break;
return index1, index2

学习了bi站Michelle小思想家的方法,确实运行速度更快:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dict = {}
for i in range(len(nums)):
if target - nums[i] not in dict:
dict[nums[i]] = i
else:
return (dict[target-nums[i]],i)

我是萌新,一个晚上7:30到现在9:27只做了这一道题,确实对python还是不太熟,慢慢适应吧,熟能生巧,加油

被折叠的 条评论
为什么被折叠?



