前几天参加C++的一个面试,面试官问到这样一个问题,当时给出的第一答案是1.

  1. 遍历数组中的元素,两数相加与给定的整数进行比较,此种方法在数组个数和整数个数较小时可用。
  2. 两数之和等于任意整数,肯定有一个数小于等于任意整数的1/2,另一个数大于等于任意整数的1/2,那么只需要判断整数的一半,由于数组是排序的,可通过二分查找的方式
  3. 直接遍历数组中小于等于任意整数一半的元素,通过二分查找的方式,在数组中的有序元素不连续时,相比方法2更节省许多运算