给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
这里也可以使用enumerate(),会更方便;
class Solution(object):
def twoSum(self, nums, target):
# 循环遍历下标
for i in range(len(nums)):
# target值减去当前下标在数组中的值,就是要在数组中查找的另一个值
num2 = target - nums[i]
# 先判断是否在数组中
if num2 in nums:
# 在数组中,取下标,注意两个数相同不影响,后面会判断
j = nums.index(num2)
# 当取的两个下标不一样,才会return,结束循环
if i != j:
# 简写的if语句
return [i, j] if i < j else [j, i]
测试用例:
solu = Solution()
print(solu.twoSum([2, 7, 11, 15], 9))
print(solu.twoSum([3, 3, 4], 6))
print(solu.twoSum([3, 2, 4], 6))