原题目:
给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
我的想法很简单首先排除比目标值大的,剩下的元素,如2,7构成了一个新的列表,再以最大的元素7去和其余小元素相加,最后通过查字典找到位置.
`class Solution:
def init(self,nums,target):
self.array=nums
self.key=target
def lists(self,data) :
s=max(data)
data.remove(s)
return data ,s
def add(self):
data=[]
for i in self.array:
data.append(self.array[i])
data.append(self.key)
data.sort()
v=data.index(self.key)
data=data[0:v]
for i in range(1,len(data)):
ci,s=self.lists(data)
if s>=self.key:
continue
else:
for i in ci:
if i +s==self.key:
i1=list(self.array.keys())[list(self.array.values()).index(i)]
i2=list(self.array.keys())[list(self.array.values()).index(s)]
else:
data=ci
res=[i1,i2]
return res
if name == “main”:
a=time.time()
nums = [2, 7, 11, 15]
znums={}
for i in range(len(nums)):
s=str(i)
znums[s]=nums[i]
target = 9
s= Solution( znums,target)
s.add()
b=time.time()
print(s.add())
print(b-a)`