本文为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 ~