leetcode 题目解析 第1题 两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案,并且你不能使用两次相同的元素。

你可以按任意顺序返回答案。

示例 1:

输入: nums = [2,7,11,15], target = 9
输出: [0,1]
解释: 因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。

示例 2:

输入: nums = [3,2,4], target = 6
输出: [1,2]

示例 3:

输入: nums = [3,3], target = 6
输出: [0,1]

提示:

  • 2 <= nums.length <= 104

  • -109 <= nums[i] <= 109

  • -109 <= target <= 109

  • 只会存在一个有效答案


💡分析:

1、整数数组nums,整数目标值 target;

2、数组中找到任意两个整数,和为目标值;

3、然后返回这两个整数在数组中的下标;

🛠️要求:

1、数组恰好仅有两个整数相加为目标值

2、返回的两个下标不可以相同

🫤思路:

循环数组,用目标值减去当前循环的整数;

看差值是否在已经循环的数组中,如果在的话,则返回整数和差值对应的下标。

综上所述:

首先需要定义一个存放已经循环的数组元素的容器,最好可以同时存放元素值和它之前的下标,由此想到 使用字典最为合适;

其次就是循环操作时,需要得到列表的元素值和下标,由此想到使用"遍历序列,并获取元素和下标值的python内置函数enumerate(iterable,start=0)",来实现循环操作;

现在开始编写代码:

class Solution(object):
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        """
        :type nums: List[int]
        :type target: int
        :rtype: List[int]
        """
        # 哈希表 字典判断
        num_dict = {}
        for index,num in enumerate(nums):
            # 计算差值
            d_value = target - num
            # 如果 差值在字典中,直接取字典值对应的下标,并返回结果
            if d_value in num_dict:
                return [num_dict[d_value],index]
            # 如果差值不在字典,将当前值和下标存入字典中
            num_dict[num] = index
  
  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大脑经常闹风暴@小猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值