首页 > 其他 > 详细

【编程之美】2.12快速寻找满足条件的两个数

时间:2014-10-29 14:39:08      阅读:157      评论:0      收藏:0      [点我收藏+]

给一个数组,找出其中一对和为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;
}

 

【编程之美】2.12快速寻找满足条件的两个数

原文:http://www.cnblogs.com/dplearning/p/4059327.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!