0
点赞
收藏
分享

微信扫一扫

Python算法——1.两数之和问题

DYBOY 2022-01-15 阅读 76

文章目录


提示:以下是本篇文章正文内容,下面案例可供参考

一、题目分析

题目分析:需要从数组nums获取两个元素,它们的和为目标值target,最容易让我们想到的就是暴力枚举遍历数组的方法,但是时间复杂度较大,于是我们也可以采用哈希表的方法,接下来主要介绍这两个方法。

二、求解

1.方法一:暴力枚举

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
    	n = len(nums)	# 获取数组长度
    	for X in range(n-1):	# 遍历每一个数X
    		for Y in range(X+1, n):		# 遍历每一个数Y
    			if nums[X] + nums[Y] == target:		# 是否满足X + Y = target
    				return [X, Y]		# 返回对应索引
    	return []	# 没有符合条件的元素,返回空

时间复杂度:O(N2)
空间复杂度:O(1)

2.方法二:哈希表

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        hashtable = dict()	# 创建哈希表
        for i, X in enumerate(nums):
            if target - X in hashtable:	# 判断target
                return [hashtable[target - X], i]	# 返回索引
            hashtable[nums[i]] = i	# 哈希表不存在target - X,将X的索引值插入哈希表
        return []	# 没有符合条件的元素,返回为空

时间复杂度:O(N)
空间复杂度:O(N) 主要为哈希表的开销


举报

相关推荐

0 条评论