(一)两数之和(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
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归《废权的博客》所有,欢迎转载,转载请保留原文链接。
THE END
分享
二维码
(一)两数之和(Python3)
给定一个整数数组 nums 和一个目标值target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案,但是……
<<上一篇
下一篇>>
文章目录
关闭
目 录