题解 | #两数之和#

两数之和

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

全部评论

相关推荐

04-13 18:10
门头沟学院 Java
想熬夜的小飞象在秋招:被腾讯挂了后爸妈以为我失联了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务