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++实现版