文章目录(每天两题)
leetcode1 两数之和
class Solution:
def __init__(self,nums,target,dictnum ={}):
self.nums = nums
self.target = target
self.dictnum = dictnum
def twoSum(self):
for i,v in enumerate(self.nums):
#i为整数的索引,j为整数值
#使用for循环计算目标值与整数数组中的每个值的差值
b = self.target - v
#尝试从字典中查找这个差值是否在字典中,如果查找到了,即j不为-1,、
#此时函数返回这个差值(键)对应的值,如果没有查找到,设定j值为-1,此时将现在对应的整数值(键)在
#字典中对应的值设定为i
j = self.dictnum.get(b,-1)
if j!=-1:
return [j,i]
else:
self.dictnum[v] = i
return -1
p = Solution([2,7,11,15],9)
print(p.twoSum())
推荐使用下面的方法
#原文链接:https://blog.csdn.net/hua111hua/article/details/102915120
class Solution:
def twoSum(self, nums, target):
dict = {}
for i in range(len(nums)):
if target-nums[i] in dict:
return [dict[target-nums[i]], i]
else:
dict[nums[i]] = i
a = Solution()
print(a.twoSum([1,2,4,5],3))
书上的方法
def twoSum(nums, target):
for i in range(len(nums) - 1):
if target - nums[i] in nums[i+1:]:
j = nums[i+1:].index(target - nums[i])
return [i, i + j + 1]
rList = twoSum([2, 7, 11, 15], 9)