2021年度程序员面试题精选.docVIP

  • 4
  • 0
  • 约1.18万字
  • 约 15页
  • 2021-03-30 发布于江苏
  • 举报
程序员面试题精选100题(10)-在排序数组中查找和为给定值两个数字 数组 -03-14 15:25:01 阅读4663 评论15 ??字号:大中小?订阅 题目:输入一种已经按升序排序过数组和一种数字,在数组中查找两个数,使得它们和正好是输入那个数字。规定期间复杂度是O(n)。如果有多对数字和等于输入数字,输出任意一对即可。 例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因而输出4和11。 分析:如果咱们不考虑时间复杂度,最简朴想法莫过去先在数组中固定一种数字,再依次判断数组中剩余n-1个数字与它和是不是等于输入数字。可惜这种思路需要时间复杂度是O(n2)。 咱们假设当前随便在数组中找到两个数。如果它们和等于输入数字,那太好了,咱们找到了要找两个数字;如果不大于输入数字呢?咱们但愿两个数字和再大一点。由于数组已经排好序了,咱们是不是可以把较小数字往背面移动一种数字?由于排在背面数字要大某些,那么两个数字和也要大某些,就有也许等于输入数字了;同样,当两个数字和不不大于输入数字时候,咱们把较大数字往前移动,由于排在数组前面数字要小某些,它们和就有也许等于输入数字了。 咱们把前面思路整顿一下:最初咱们找到数组第一种数字和最后一种数字。当两个数字和不不大于输入数字时,把较大数字往前移动;当两个数字和不大于数字时,把较小数字往后移动;当相等时,打完收工。这样扫描

文档评论(0)

1亿VIP精品文档

相关文档