我是靠谱客的博主 刻苦白昼,最近开发中收集的这篇文章主要介绍快速寻找满足条件的两个数 (python),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

快速寻找一个数组中的两个数,让这两个数之和等于一个给定的值。这里假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

解法 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)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部