解法一
Python的字典dictionary数据结构,{key:value},key和value是一对,in dict一般是key
在循环里嵌套if语句,一边存入前面i的target-nums[i]的值作为key,i作为value,一边判断nums[i]是否已经存在dict里面,存在就意味着nums[i1]+nums[i2]=target。
class Solution:
def twoSum(self, nums, target):
if len(nums) <= 1:
return False
dict = {}
for i in range(len(nums)):
if nums[i] in dict:
return [dict[nums[i]], i]
else:
dict[target - nums[i]] = i
解法二
复制数组,新数组排序,两端夹逼法找target,找到数后,新数组里的数在原数组里找位置,输出位置
class Solution:
def twoSum(self, nums, target):
new=nums.copy()
new.sort()
rs=[]
left=0
right=len(new)-1
while left<right:
print (new[left])
if new[left]+new[right]==target:
for i in range(len(nums)):
if nums[i]==new[left]:
rs.append(i)
break
for i in range(len(nums)-1,-1,-1):#范围内range以-1的间隔倒序,是到尾数-1的前一个数0,所以这里一定是-1而不是0
if nums[i]==new[right]:
rs.append(i)
break
break
elif new[left]+new[right]<target:
left=left+1
else:
right=right-1
rs.sort()
return rs
解法三
暴力循环,for循环嵌套,结果应该没错,但是超时了
class Solution:
def twoSum(self, nums, target):
for i in range(len(nums)):
for j in range(len(nums)):
if (nums[i]+nums[j]==target)and(i!=j):
print (i)
rs=[i,j]
rs.sort()
return rs
break