[leetcode] 1.Tow Sum (附python示例)

本文详细解析了一道经典算法题“两数之和”的解决方案,通过使用字典存储遍历过的元素及其位置,实现快速查找与目标值匹配的两个数,避免了传统双层循环的高时间复杂度。

一、题目

Given an array of integers, return indices of the two numbers such that they add up to a specific target.

You may assume that each input would have exactly one solution, and you may not use the same element twice.

Example:

Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

有一个整数数组nums 和目标值target,找出这个数组中相加等于target的两个数,可以假设每个数组只有唯一解,且数组里同一个整数不能用两次。

二、解题

设置一个字典tempDict,用于存储遍历过的元素的值和位置,遍历数组,计算出和当前元素x相加等于目标值的数y,查找y是否在tempDict中,不存在就把x存进去,如果y存在于tempDict中,则y,x的位置为正解。
在这里插入图片描述
如图,最后的结果为y的位置1和x的位置2

三、代码

class Solution(object):
    def twoSum(self, nums, target):
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
		"""
        tempDict={}
        for i in range(0,len(nums)):
            j=target-nums[i]
            if j in tempDict.keys():
                return tempDict[j],i
            tempDict[nums[i]]=i
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值