1.两数之和
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
你可以按任意顺序返回答案。
方法一:暴力求解 (首先想到的做法)
def find_Index(nums,target):
for i in range(len(nums)-1):
t=target-nums[i]
for j in range(i+1,len(nums)): #直接暴力求解,逐个遍历,方法一
if nums[j]==t:
return [i,j]
print(find_Index(nums,target))
方法二:集合求交集 (看了别人的题解觉得不错的方法)
#法二(集合取交集)
def twoSum(nums,target):
#情况1,两个相同的值,和为target
a=target//2
if target%2==0 and nums.count(a)>=2:
return [nums.index(a),nums.index(a,nums.index(a)+1)]
#情况2,两个不同的值,和为target
s=set(nums) & set(target-i for i in nums)
print(s)
if s!=set():
b=s.pop() #删除第一个元素
print(b)
return[nums.index(b),nums.index(target-b)]
#情况3,没有满足题意的
return []
print(twoSum(nums,target))