(一)两数之和(Python3)
给定一个整数数组 nums
和一个目标值target
,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案,但是,你不能重复利用这个数组中同样的元素。
实例:
给定 nums = [2, 7 , 11, 15], target = 9
因为nums[0] + muns[1] = 2 + 7 = 9
所以返回 [0, 1]
方法一:遍历所有的数组元素组合,如果他们的和为target
,返回空间复杂度O(1)
时间复杂度O(n^2)
class Solution:
def twoSum(self,nums, target):
for i in range(len(nums)):
for j in range(i+1, len(nums)):
if nums[i] + nums[j] == target:
return [i,j]
return None
if __name__ == '__main__':
s = Solution()
print(s.twoSum([2, 7, 11, 15], 9))
方法二:用容器cache
缓存需要找寻的值
遍历所有的数组元素nums[i]
,计算target-nums[i]
,如果其在我们的容器中,则返回两者下标空间复杂度O(n)
, 时间复杂度O(n)
class Solution:
def twoSum(self, nums, target):
cache = {}
for idx, num in enumerate(nums):
cur = target - num
if num in cache:
return [cache[num], idx]
cache[cur] = idx
return None
if __name__ == '__main__':
s = Solution()
print(s.twoSum([2, 7, 11, 15], 9))
|| 版权声明
作者:废权
链接:https://blog.yjscloud.com/archives/121
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
作者:废权
链接:https://blog.yjscloud.com/archives/121
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
THE END
0
二维码

(一)两数之和(Python3)
给定一个整数数组 nums 和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案,但是……

文章目录
关闭
共有 0 条评论