初入leetcode ————两数之和

 

 

 1 import time
 2 
 3 #方法一:
 4 class Solution:
 5     def twoSum(self, nums, target):
 6         for i in range(len(nums)):  #第一次循环列表
 7             for j in range(i+1,len(nums)): #第二次循环列表应该把第一次循环的那个数字排除在外
10                 if nums[i] +nums[j] == target:
11                     return j,i
12                 else:
13                     continue
14 
15 #方法二:
16 class Solution:
17     def twoSum(self, nums, target):
18         for i in range(len(nums)):
19             if target -nums[i] in nums and i !=nums.index(target -nums[i]):   #如果差值在列表中且不是同一个元素,就返回两个元素的索引
20                 return [i,nums.index(target -nums[i])]
21             else:
22                 continue
23 
24 #方法三
25 class Solution:
26     def twoSum(self, nums, target):
27         dic = {}
28         for i,num in enumerate(nums):  #先把列表所有的元素按照索引为值,数字为键的方式放入字典中。
29             dic[num] = i
30         for i,num in enumerate(nums):
31             j = dic[target-num]           #以差值为键,在字典中查找有没有对应的值。
32             if i!=j and j is not None:   
33                 return [i,j]
34 
35 t1 = time.perf_counter()
36 solution = Solution()
37 a = solution.twoSum([2,7,11,15,2,6,98,23], 13)
38 t2 = time.perf_counter()
39 print(a)
40 print(t2-t1)

方法一是最常规的思维,就是嵌套循环,不断变量列表。方法二,用了一个循环,查看目标值减每次循环的值是否在列表中。方法三用了字典,提高了效率

posted @ 2020-04-01 21:01  牛公的跑奔  阅读(159)  评论(0编辑  收藏  举报
总访问量:AmazingCounters.com