つの数字を見つける2つのポインタメソッド
4138 ワード
あなたが目標数を与えることができる数字のペアを見つける必要がある状況、問題を検討してください.
X + Y =ターゲット
ここでは、配列、リスト、ベクトル、または配列がソートされる他のシーケンシャルデータ構造からX、Yを見つける必要があります.
1つの要素を取り、別の要素で追加します. これらの要素の合計が目標に等しいまで.
したがって、最悪の場合には 時間複雑度
は2つの変数 アレイの最初の要素に向かってポイント アレイの最後の要素に向かってポイント 今は希望の結果を得るまでしばらくループを入れましょう.
コンディション.
時間の複雑さ
良い一日を!🙂
X + Y =ターゲット
ここでは、配列、リスト、ベクトル、または配列がソートされる他のシーケンシャルデータ構造からX、Yを見つける必要があります.
ブルートフォースアプローチ
したがって、最悪の場合には
つのポインタメソッド
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
この記事を読んでくれてありがとう.良い一日を!🙂
Reference
この問題について(つの数字を見つける2つのポインタメソッド), 我々は、より多くの情報をここで見つけました https://dev.to/itskunal/two-pointer-method-to-find-two-numbers-1l6kテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol