概述
题解一:暴力穷举法
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
for i in range(len(nums)-1):
for j in range(1, len(nums)):
if nums[i] + nums[j] == target and i != j:
return [i, j]
暴力穷举,时间复杂度在O(),空间复杂度在O(1),提交结果如下:
题解二:
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
dic = {}
# 创建字典,建立列表元素值nums[i]和索引i的映射关系(便于后期直接通过元素值找到其索引值)
for i in range(len(nums)):
dic[nums[i]] = i
for i in range(len(nums)):
# 需要找的目标元素值
j = target - nums[i]
# 如果字典中能够找到目标元素,
# 并且目标元素j的位置dic[j]和原来的元素nums[i]的位置不相等,返回元素索引值;
# 避免如[2,3,3],找两数之和为6时,打印的元素位置都是1
if j in dic and i != dic[j]:
return [i, dic[j]]
这种方式可以将时间复杂度降到O(n),但是空间复杂度升到O(n),不过综合效率比暴力穷举法还是更高一点,提交结果如下:
最后
以上就是感动小白菜为你收集整理的两数之和Python3的全部内容,希望文章能够帮你解决两数之和Python3所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复