1.两数之和

      题目:
               给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数, 并返回他们的数组下标。你不能重复利用这个数组中同一元素(即相同下标的元素只能用一次)。
               例如

给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9 所以返回 [0, 1]

给定 nums = [1,2,3,4], target =4
因为 nums[0] + nums[2] =1+3 = 4 所以返回 [0, 2]

给定 nums = [2,1,0,2,3,4], target =4
因为 nums[0] + nums[3] =2+2 = 4 所以返回 [0, 3]是可以的

你只需要找出一组符合要求的组合即可

思路:从第一个数(下标0开始)开始找,先计算目标值和列表(或者叫数组)当前下标的值的差,如果差存在于列表从当前下标开始往后的子列表中,则认为找到了组合,直接返回当前的下标,和差的下标。

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)) :             #从第一个数(下标0开始)开始找
            if target-nums[i] in nums[i+1:] :     #如果差存在于列表从当前下标开始往后的子列表中                   
                return [i,nums[i+1:].index(target-nums[i])+i+1]   #返回当前的下标,和差的下标。

nums[i+1:] 指的是nums从i+1下标开始往后的子列表,例如

nums=[1,2,3,4,5,6,7,8]
nums[2+1:]指的是nums从2+1下标开始往后的列表,即[4,5,6,7,8]

.index()方法是根据值来查找值在列表中的位置,如果列表中有多个值相同,则返回第一个下标(最小的那个下标)
详情见 列表常用方法

相关实现 c++实现版

posted on 2021-05-07 15:00  雾恋过往  阅读(44)  评论(0编辑  收藏  举报

Live2D