欢迎来到Felix的博客

雨恨云愁,江南依旧称佳丽。水村渔市。一缕孤烟细。天际征鸿,遥认行如缀。平生事。此时凝睇。谁会凭阑意
返回顶部

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  

如果有其他更快的方式,欢迎大家沟通

posted @ 2021-01-08 10:16  felixtester  阅读(487)  评论(0)    收藏  举报