解法一
思路: 遍历数组,然后用m=target-n,在当前数后面的数组里找m,如果存在就返回两个数的索引
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i,n in enumerate(nums):
m=target-n
if m in nums[i+1:]:
j=nums[i+1:].index(m)
return [i,j+i+1]#返回第二个数索引要加上前面的位置
解法二
思路: 参考讨论区字典解法,需要注意两个数相同的情况,所以字典不能先赋值,而是遍历中赋值,可以避免这个情况。(相当于拿到每个值,去前历史保存的里面找)
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dict_nums={}
for i,n in enumerate(nums):
m=target-n
if dict_nums.get(m) is not None:
return [i,dict_nums[m]]
else:
dict_nums[n]=i
return [0,0]
本文介绍了两种使用Python解决两数之和问题的算法。解法一通过遍历数组并在后续元素中查找目标差值,解法二利用字典存储已遍历过的数以避免重复检查,提高了效率。这两种方法都针对了数组中寻找特定和的元素这一核心问题。
300

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



