【LeetCode,Python】1. 两数之和 Two Sum

原题链接:https://leetcode-cn.com/problems/two-sum/

1.题目

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

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。

示例:

给定 nums = [2,7,11,15],target = 9

因为 nums[0] + nums[1] = 2 + 7 = 9

所以返回[0,1]

2.解题思路

题目要求出数组中两个数a,b的和等于target,并返回这两个数的下标。

因为a+b = target ;

则 a = target - b; b = target -a;

我们可以遍历整个数组,将当前的值记作数a并将下标存入结果数组中,然后从当前位置向后检索数组中是否存在数b,如果存在则将数b的下标存入结果数组中后返回结果数组。

3.代码实现

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        result = []  # 定义一个存放结果下标的数组
        for i in range(len(nums)): # 遍历整个数组
            goal = target - nums[i] # 得到要寻找的目标值
            try:
                result.append(i)  # 将当前值的下标存入结果数组中
                result.append(nums.index(goal,i+1)) # 从当前值向后检索是否存在目标值
                                                    # 如果存在将下标存入结果数组中
                return result # 返回结果
                break         # 结束遍历
            except ValueError:
                result.clear() # 不存在目标值,清空数组
                pass           

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值