• 初入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)

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

    --------------------成功,肯定是需要一点一滴积累的--------------------
  • 相关阅读:
    Matlab P文件——加快Matlab程序,保护你的算法
    电烙铁的使用
    CV、PR方向的资源
    遗传算法初接触
    Linux进程控制
    C语言编程优化运行速度
    用MATLAB优化工具箱解线性规划
    50、linux shell命令,netstat,traceroute
    51、linux shell命令,route,ifconfig
    56、vi常见用法,多窗口模式,标记,多文件编辑,快捷操作及设置
  • 原文地址:https://www.cnblogs.com/GouQ/p/12615827.html
Copyright © 2020-2023  润新知