本文为Python算法题集之一的代码示例
题目:两数之和
说明:给定一个整数列表(数值不重复) nums 和一个整数目标值 target,请在该数组中找出和为目标值 target 的整数对,并返回数组下标对
简单版【只有一个两数和等于目标值】
# 简单版【给定一个不重复整数列表 nums 和一个整数目标值 target,请在该数组中找出和为目标值 target 的整数对,并返回这个数组下标对】
def twoSum(nums: list, target: int) -> list:
for i in range(len(nums)):
tmpA = nums[i]
valueB = target - tmpA
if valueB in nums:
tmpIdxb = nums.index(valueB)
if tmpIdxb == i:
continue
return [i, nums.index(valueB)]
numsa = [1,2,3,4,5,6,7,8,9,10,11,0,12,13,14]
print('{}中整数和为{}的元素唯一下标对为{}'.format(numsa, 25, twoSum(numsa, 25)))
# 运行结果
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 12, 13, 14]中整数和为25的元素唯一下标对为[10, 14]
加强版【有多个两数和等于目标值】
# 加强版【给定一个不重复的整数列表 nums 和一个整数目标值 target,请在该数组中找出所有和为目标值 target 的整数对,并返回它们的数组下标对】
def twoSumList(nums: list, target: int) -> list:
result = []
for i in range(len(nums)):
# 避免出现重复的数组下标对
if i in result:
continue
tmpA = nums[i]
valueB = target - tmpA
if valueB in nums:
tmpIdxb = nums.index(valueB)
if tmpIdxb == i:
continue
result = result + [i, nums.index(valueB)]
return result
numsa = [1,2,3,4,5,6,7,8,9,10,11,0,12,13,14]
print('{}中整数和为{}的元素所有下标对为{}'.format(numsa, 11, twoSumList(numsa, 11)))
# 运行结果
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 0, 12, 13, 14]中整数和为11的元素所有下标对为
# [0, 9, 1, 8, 2, 7, 3, 6, 4, 5, 10, 11]
一日练,一日功,一日不练十日空
may the odds be ever in your favor ~