系列文章目录
前言
一、排列組合:NC61两数之和
描述: 给出一个整型数组numbers和一个目标值target,请在数组中找出两个加起来等于目标值的数的下标,
返回的下标按升序排列(注:返回的数组下标从1算起,保证target一定可以由数组里面2个的数字相加得到)
数据范围: 2≤len(numbers)≤10**5
要求: 空间复杂度 O(n)O(n),时间复杂度 O(nlogn)O(nlogn)
示例1:
输入:[3,2,4],6
返回值:[2,3]
说明:因为2+4=6,而2的下标为2,4的下标为3,所以返回[2,3]
示例2:
输入:[20,70,110,150],90
返回值:[1,2]
说明:20+70=90
二、sound code
1.sound code 1
代码如下(示例):
from typing import List
class Solution:
def twoSum(self,numbers:List[int],target:int)->List[int]:
tm={}
res=[]
for i ,v in enumerate(numbers):
if v in tm:
res.append(tm[v]+1)
res.append(i+1)
else:
tm[target-v] = i
return res
#下面为测试案例
if __name__ == '__main__':
s = Solution()
s.twoSum([3,2,4],6)
print(s.twoSum([3,2,4],6))
2.sound code 2
代码如下(示例):
from typing import List
class Solution:
def twoSum(self , numbers , target ):
result = [0, 0]
mp = {}
for i in range(len(numbers)):
mp[numbers[i]] = i
for i in range(len(numbers)):
if target - numbers[i] in mp:
if mp[target - numbers[i]] != i:
result[0] = i + 1
result[1] = mp[target - numbers[i]] + 1
return sorted(result)
return sorted(result)
if __name__ == '__main__':
s = Solution()
s.twoSum([3,2,4],6)
print(s.twoSum([3,2,4],6))
总结
分享:
有了坚定的理想、清晰的目标和正确的价值取向,就不会随波逐流,就不会在意别人的眼光以及世俗的标准。
理想是人们心中的一轮太阳,如果我们耽于瞻望和等待,理想就永远是一轮止于仰望的太阳。