python编程练习---双非空有序数组,找出两个数组中元素相加等于target值的数
在学而思3面中,面试官给出一个题目,跟大家分享下自己的思路
题目:给定两个非空的有序数组,分别从两个数组中找出一个数(任意一组即可),使他们加和等于target值
我目前想到两种解题思路
思路一:暴力方式---》双层遍历
这种方式可以找到想要的答案,但是时间复杂度会相对比较高,O(m*n)
思路二:运用到hash,也就是python中的字典
首先将其中一个数组塞入一个字典,值为key,坐标为value
然后再遍历第二个数组,查找 target与当前元素的差是否存在于字典中,可快速找到对应值,时间复杂度为O(m+n)
def getres(nums1, nums2, target):
nums1_dict = {}
for index, k in enumerate(nums1):
nums1_dict[k] = index
for el in nums2:
if target - el in nums1_dict:
return el, target - el
return None
如果有其他更快的方式,欢迎大家沟通
不知则问,不会则学

浙公网安备 33010602011771号