zoukankan      html  css  js  c++  java
  • 【编程之美】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;
    }
  • 相关阅读:
    P4149 [IOI2011]Race dsu on tree
    CodeForces
    2020牛客国庆集训派对day2 CHEAP DELIVERIES
    Hero In Maze
    topo排序
    今年暑假不AC
    小国的游戏
    Stall Reservations
    博弈论
    Reversed Words
  • 原文地址:https://www.cnblogs.com/dplearning/p/4059327.html
Copyright © 2011-2022 走看看