つの数字を見つける2つのポインタメソッド


あなたが目標数を与えることができる数字のペアを見つける必要がある状況、問題を検討してください.
X + Y =ターゲット
ここでは、配列、リスト、ベクトル、または配列がソートされる他のシーケンシャルデータ構造からX、Yを見つける必要があります.

ブルートフォースアプローチ

  • 1つの要素を取り、別の要素で追加します.
  • これらの要素の合計が目標に等しいまで.
    したがって、最悪の場合には
  • 時間複雑度

    つのポインタメソッド

  • は2つの変数startおよびendを受け取る.
  • アレイの最初の要素に向かって
  • ポイントstart.
  • アレイの最後の要素に向かって
  • ポイントend.
  • 今は希望の結果を得るまでしばらくループを入れましょう.
    コンディション.
  • start + end == targetならば、我々は左にstart + end > targetをシフトします.endならば、我々は右にstart + end < targetをシフトします.このようにして、この問題を解決することができます
    時間の複雑さ
    // Program to get two numbers from array whose sum is equal to target element.
    
    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int a[10] = {1, 4, 6, 8, 9, 12, 14, 16, 17};
        int target = 20, start = 0, end = 8;
        while ((a[start] + a[end] != target) && (start < end))
        {
            if (a[start] + a[end] > target)
            {
                end--;
            }
            else
            {
                start++;
            }
        }
        cout << "Two numbers are: " << a[start] << ", " << a[end] << endl;
        return 0;
    }
    
    // Code contributed by Kunal Agrawal
    
    この記事を読んでくれてありがとう.
    良い一日を!🙂