zoukankan      html  css  js  c++  java
  • 1. Two Sum

    题目链接:two-num
     思路一:两层for循环暴力求解,结果超时
    1 def twoSum(nums,target):#使用二维数组
    2     for i in range(len(nums)):
    3         for j in np.arange(i+1,len(nums)):
    4             if(nums[i] + nums[j] == target):
    5                 return [i,j]

    思路二:考虑一层for循环,其他的靠python的内置函数解决。问题关键是求解target - num是否在list里面,在的话找到位置,要注意num1和num2是同一个元素的例外情况。

    def twoSum(nums,target):
        j = -1
        for i in range(len(nums)):
            if (target - nums[i]) in nums:
                if(nums.count(target - nums[i]) == 1) & (target - nums[i] == nums[i]):
                    continue
                else:
                    j = nums.index(target - nums[i],i+1)
                    break
        if j > 0:
            return [i,j]
        else:
            return []

    思路三:解题思路是在方法一的基础上,优化解法。想着,num2 的查找并不需要每次从 nums 查找一遍,只需要从 num1 位置之前或之后查找即可。但为了方便 index 这里选择从 num1 位置之前查找

    1 def twoSum2(nums,target):
    2     j = -1
    3     for i in range(1,len(nums)):
    4         temp = nums[:i]
    5         if (target - nums[i]) in temp:
    6             j = nums.index(target - nums[i])
    7             break
    8     if j >= 0:
    9         return [j,i]

    思路四:通过哈希来求解,这里通过字典来模拟哈希查询的过程。

    个人理解这种办法相较于方法一其实就是字典记录了 num1 和 num2 的值和位置,而省了再查找 num2 索引的步骤。
    1 def twoSum3(nums,target):
    2     hashmap = {}
    3     for ind,num in enumerate(nums):
    4         hashmap[num] = ind
    5     for i,num in enumerate(nums):
    6         j = hashmap.get(target - num)
    7         if j is not None and j != i:
    8             return [i,j]

    思路五:类似方法三,不需要 mun2 不需要在整个 dict 中去查找。可以在 num1 之前的 dict 中查找,因此就只需要一次循环可解决。

    1 def twoSum4(nums,target):
    2     hashmap = {}
    3     for ind,num  in enumerate(nums):
    4         if hashmap.get(target - num) is not None:
    5             return [hashmap.get(target - num),ind]
    6         hashmap[num] = ind

    参考题解

    一些python函数总结

    python的count函数

     python的index函数

     &和&&的区别

    Python 中 (&,|)和(and,or)之间的区别

     

    Python enumerate() 函数

     

     python的map函数

     python的字典的使用

     

     
    作者:你的雷哥
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    自己重写HTMLEditorExtender控件
    Sys.InvalidOperationException: A control is already associated with the element 错误处理方法
    navigationbar tabbar 状态栏的 高度
    iOS之正则表达式(转载)
    Mesonry的使用方法
    SimulatorXcode模拟器如何使用PC键盘进行输入
    Masonry第三方代码约束
    卸载openfire
    安装和使用cocoapods
    js选择颜色小游戏(随机生成不含重复数字的数组,通过数组中的数控制定义好的数组)
  • 原文地址:https://www.cnblogs.com/henuliulei/p/13208645.html
Copyright © 2011-2022 走看看