1. 程式人生 > >資料結構面試題總結6——陣列:求兩個陣列中滿足給定和的兩個元素

資料結構面試題總結6——陣列:求兩個陣列中滿足給定和的兩個元素

問題描述:在兩個有序陣列中,分別找出a,b兩個元素滿足a+b = c,c已知。

分析:我們要用有序這個有利條件,避免迴圈中套迴圈。我們用兩個索引i,j分別指向陣列A,B的首尾,根據比較的結果來移動索引的位置。

如果

    A[i] + B[j]  <  c , i++

    A[i] + B[j]  > c , j--

    A[i] + B[j]  ==  c , i++,j--

void fin2m(int *a,int m,int *b,int n,int c)
{
    int i=0,j=n-1;
    while(i<m && j>=0)
    {
        if(a[i]+b[j]>c)
            j--;
        else if(a[i]+b[j]<c)
            i++;
        else
        {
            cout << a[i] << ", " << b[j] << endl;
            i++;
            j--;
        }
    }
}