【编程之美】2.12快速寻找满足条件的两个数
给一个数组,找出其中一对和为sum的数字。
由于已经做过排好序的数组,找和为sum的题目。所以完全没有过多考虑就排了序,左右指针相互收缩着寻找。
跟答案上的方法也是一样的。
/* start time = 16:57 end time = 17:15 */ #include <iostream> #include <stdlib.h> using namespace std; //由小到大排 int cmp(const void * a, const void * b) { return *((int *)a) - *((int *)b); } bool get_TwoNumber(int * a, int len, int sum) { int i, j; qsort(a, len, sizeof(a[0]), cmp); for(i = 0, j = len - 1; i < j;) { if(a[i] + a[j] == sum) { cout << a[i] << " + " << a[j] << " = "<< sum << endl; return true; } else if(a[i] + a[j] < sum) { i++; } else { j--; } } cout << "no vaild num!" << endl; return false; } int main() { int a[10] = {5,6,1,4,7,9,8}; get_TwoNumber(a, 7, 10); return 0; }