zoukankan      html  css  js  c++  java
  • 初入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)

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

    --------------------成功,肯定是需要一点一滴积累的--------------------
  • 相关阅读:
    dayfunctools.weps 定义函数装饰器
    python3之concurrent.futures一个多线程多进程的直接对接模块,python3.2有线程池了
    python的类的super()
    django的admin
    python的单例模式
    git指南
    django创建验证码
    Django model对象接口
    Go语言基础
    迭代器&迭代对象&生成器
  • 原文地址:https://www.cnblogs.com/GouQ/p/12615827.html
Copyright © 2011-2022 走看看