概述
快速寻找一个数组中的两个数,让这两个数之和等于一个给定的值。这里假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
解法 1
使用穷举的方法,就是用两个for循环进行穷举。
nums = [2,7,11,15]
target = 9
def TwoSum(nums,target):
n = len(nums)
for i in range(n):
for j in range(i,n):
if nums[i] + nums[j] == target:
return [i,j]
return [-1,-1]
a,b = TwoSum(nums,target)
print(a,b)
解法 2
使用递归组合的方法,穷举数组中的所有两两组合的数。
nums = [2,7,11,15]
target = 9
res = []
def conbination(nums, target,track, start):
if len(track) == 2:
if nums[track[0]] + nums[track[1]] == target:
res.append(track[0])
res.append(track[1])
return
for i in range(start, len(nums)):
track.append(i)
conbination(nums,target,track,i+1)
track.pop()
conbination(nums,target,[],0)
print(res)
解法 3
使用hash表,给定一个数,根据hash表的映射查看另一个数字是否在数组中。
nums = [2,7,11,15]
target = 9
Hash = {}
for i in range(len(nums)):
if nums[i] in Hash:
print(Hash.get(nums[i]), i)
break
Hash[target-nums[i]] = i
解法 4
首先对两个数组进行排序,然后使用双指针的方法扫描整个数组,最终得到答案。
nums = [2,7,11,15]
target = 9
nums.sort()
i, j = 0, len(nums) - 1
while i<j:
if nums[i] + nums[j] > target:
j -= 1
elif nums[i] + nums[j] < target:
i += 1
else:
print(i,j)
break
最后
以上就是刻苦白昼为你收集整理的快速寻找满足条件的两个数 (python)的全部内容,希望文章能够帮你解决快速寻找满足条件的两个数 (python)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复