摘要: 题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。解:如果只是最简单的遍历,时间复杂度为O(n)。这样不符合题意,而且也没有充分的利用题目的已知条件“排好序的数组”。这题目老早之前做过一次。印象中使用了两个指针p、q,一个指针p指向数组头,一个q指向末尾。指针p只往大的方向走;q只往小的方向走;比较这两值之和与指定数的大小关系。若大了,则q往小的方向走;若小了,则p往大的方向走; 阅读全文
posted @ 2013-03-18 19:13 legendmaner 阅读(604) 评论(0) 推荐(0) 编辑