[2021-09-12][简单]两数之和
2021-09-12 本文已影响0人
许忠慧
题目来源:牛客网
描述
给出一个整数数组 numbers 和一个目标值 target,请在数组中找出两个加起来等于目标值的数,
你给出的函数twoSum 需要返回这两个数字的下标(index1,index2)组成的数组,需要满足 index1 小于index2.。注意:下标是从1开始的
保证给出的数组中只存在唯一解。
例如:
给出的数组为 [20, 70, 110, 150] , 目标值为90。
返回一个数组 [1,2],因为number[0+1]+numbers[1+1]=90
示例1
输入:
[3,2,4],6
返回值:[2,3]
说明:
因为 2+4=6 ,而 2的下标为2 , 4的下标为3 ,又因为 下标2 < 下标3 ,所以输出
解题思路:
遍历列表中的每一个元素,如果该元素小于等于目标值;且目标值与该元素的差值也在列表中(这里有一个坑,目标差值不能直接在原列表中找,要到判断元素往后的剩余列表中去找),则这两个值就是符合条件的值,设定一个falg标志用于记录第一个元素的位置,第二个元素的位置用list的index函数即可
class Solution:
def twoSum(self , numbers , target ):
# write code here
l = len(numbers)
for flag in range (0, l):
if numbers[flag] <= target and target-numbers[flag] in numbers[flag+1:]:
return [flag+1, numbers.index(target-numbers[flag], flag+1)+1]