快速寻找满足条件的两个数.pdfVIP

  • 7
  • 0
  • 约3.54千字
  • 约 4页
  • 2015-08-29 发布于重庆
  • 举报
快速寻找满足条件的两个数.pdf

1、快速寻找满足条件的两个数 (编程之美中的资料不错) 能否快速找出一个数组中的两个数字,让这两个数字之和等于一个给定的值, 为了简化起见,我们假设这个数组中肯定存在至少一组符合要求的解。 假如有如下的两个数组: 5,6,1,4 ,7,9,8 给定Sum= 10 1,5,6,7,8,9 给定Sum= 10 分析与解法 这个题目不是很难,也很容易理解。但是要得出高效率的解法,还是需要一番 思考的。 解法一 一个直接的解法就是穷举:从数组中任意取出两个数字,计算两者之和是否为 给定的数字。 显然其时间复杂度为N (n-1)/2 即O (N^2)。这个算法很简单,写起来也很容 易,但是效率不高。一般在程序设计里面,要尽可能降低算法的时间和空间复杂度, 所以需要继续寻找效率更高的解法。 解法二 求两个数字之和,假设给定的和为Sum 。一个变通的思路,就是对数组中的每个 数字arr[i]都判别Sum-arr[i]是否在数组中,这样,就变通成为一个查找的算法。 在一个无序数组中查找一个数的复杂度是O (N),对于每个数字arr[i],都需要 查找对应的Sum-arr[i]在不在数组中,很容易得到时间

文档评论(0)

1亿VIP精品文档

相关文档