题解 | #两数之和#
两数之和
https://www.nowcoder.com/practice/20ef0972485e41019e39543e8e895b7f
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @param numbers int整型一维数组 # @param target int整型 # @return int整型一维数组 # class Solution: def twoSum(self , numbers: List[int], target: int) -> List[int]: # write code here 方案一 #循环查找的方案有问题时间复杂度太大,在某些场景下 #L=sorted(numbers) #for i in range(len(numbers)): # for j in range(i+1,len(numbers)): # if numbers[i]+numbers[j]==target: ## return([i+1,j+1]) # else: # pass #for x in L: # print(L) #print(target) ##方案2的话直接在L中查找,Index锁定索引的时候,由于是相同元素,锁定索引会报错 # y= target - int(x) # print(y) # if y in L: # print("ok") #index函数在俩个元素相同时没办法使用,第二个元素的index会造成错误程序 #此处可以考虑用字典存放列表中的元素和列表的索引 # return [numbers.index(x)+1,numbers.index(y)+1] # else: dict = {} for i in range(len(numbers)): num = numbers[i] if (target - num) in dict: return [dict[target-num]+1, i+1] else: #用字典保存列表中的元素,查找的时候不用进行循环查找了就 dict[num] = i