当前位置:   article > 正文

1.两数之和-Python-LeetCode_两数之和python

两数之和python
刚开始接触算法方面,好多都不懂,打算每刷一题就整理一下

题目:

给定一个整数数列,找出其中和为特定值的那两个数。

你可以假设每个输入都只会有一种答案,同样的元素不能被重用。

示例:

给定 nums = [2, 7, 11, 15], target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]

解法一:.刚开始看到的的时候,第一个想到的就是用一个嵌套循环把nums列表遍历两次,虽然测试通过了但是耗时实在太长了,然后就考虑了其他时间复杂度低的方法

代码如下:

  1. class Solution:
  2. def twoSum(self,nums, target):
  3. """
  4. :type nums: List[int]
  5. :type target: int
  6. :rtype: List[int]
  7. """
  8. #用len()方法取得nums列表的长度
  9. n = len(nums)
  10. #x取值从0一直到n(不包括n)
  11. for x in range(n):
  12. #y取值从x+1一直到n(不包括n)
  13. #用x+1是减少不必要的循环,y的取值肯定是比x大
  14. for y in range(x+1,n):
  15. #假如 target-nums[x]的某个值存在于nums中
  16. if nums[y] == target - nums[x]:
  17. #返回x和y
  18. return x,y
  19. break
  20. else:
  21. continue

解法二:用一个for循环,直接在里面查询target-nums[x]是否存在于nums列表中,速度比解法一快了许多,但还是不够

代码如下:

  1. class Solution:
  2. def twoSum(self,nums, target):
  3. """
  4. :type nums: List[int]
  5. :type target: int
  6. :rtype: List[int]
  7. """
  8. #用len()方法取得nums列表长度
  9. n = len(nums)
  10. #x从0到n取值(不包括n)
  11. for x in range(n):
  12. a = target - nums[x]
  13. #用in关键字查询nums列表中是否有a
  14. if a in nums:
  15. #用index函数取得a的值在nums列表中的索引
  16. y = nums.index(a)
  17. #假如x=y,那么就跳过,否则返回x,y
  18. if x == y:
  19. continue
  20. else:
  21. return x,y
  22. break
  23. else :
  24. continue


解法三:这个解法是我看了排名前几个的答案后才知道的, 先创建一个空字典,然后依次把target-nums[x]的值存入字典,存入一个就跟nums[x+1]去比较, 字典中的key为target-nums[x],value为x,也就是nums[x]在nums列表中的索引位置。当字典d中有nums[x+1]时,也就是target - nums[y] = nums[x+1] , y肯定是小于x+1的(因为y是x+1之前循环过的数字)

所以是 return y,x+1

  1. class Solution:
  2. def twoSum(self,nums, target):
  3. """
  4. :type nums: List[int]
  5. :type target: int
  6. :rtype: List[int]
  7. """
  8. #用len()方法取得nums列表长度
  9. n = len(nums)
  10. #创建一个空字典
  11. d = {}
  12. for x in range(n):
  13. a = target - nums[x]
  14. #字典d中存在nums[x]时
  15. if nums[x] in d:
  16. return d[nums[x]],x
  17. #否则往字典增加键/值对
  18. else:
  19. d[a] = x
  20. #边往字典增加键/值对,边与nums[x]进行对比

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/739531
推荐阅读
相关标签
  

闽ICP备14008679号