PHP は非常に一般的に使用されるサーバーサイド スクリプト言語であり、開発プロセス中に配列をよく使用します。配列では、配列内の 2 つの数値の合計が固定値に等しい組み合わせを計算する方法など、いくつかの問題に遭遇します。これは非常に一般的な問題であり、この記事ではその解決方法を紹介します。
1. 問題の説明
整数配列 nums と整数 target が与えられた場合、合計が target に等しい 2 つの数値を配列内で見つけます。
たとえば、nums = [2, 7, 11, 15] の場合、target = 9 です。nums [0] nums [1] = 2 7 = 9 であるため、[0, 1] が返されます。
2. 解決策
この問題を解決するには二重ループ法を使用できますが、時間計算量が高すぎて効率が十分ではありません。より効率的な方法は、ハッシュ テーブルを使用することです。
走査した数値をハッシュ テーブルに保存し、ターゲットから現在の数値を引いた数値に等しい別の数値がハッシュ テーブル内に存在するかどうかを判断できます。存在する場合は、2 つの数値の合計をターゲットとして取得できます。
具体的な実装は次のとおりです:
function twoSum($nums, $target) { $map = []; $len = count($nums); for ($i = 0; $i < $len; $i++) { $diff = $target - $nums[$i]; if (isset($map[$diff])) { return [$map[$diff], $i]; } $map[$nums[$i]] = $i; } return [-1, -1]; } $nums = [2, 7, 11, 15]; $target = 9; $res = twoSum($nums, $target); print_r($res);
3. コードの説明
1. まず、ハッシュ テーブル $map を定義し、空の配列として初期化します。
2. 次に、配列 $nums とターゲット値 $target を定義し、$len は配列の長さです。
3. 次に、for ループを使用して配列 $nums を走査します。数値が走査されるたびに、ターゲット値 $target から数値を減算した結果が $diff になります。
4. $diff に等しい別の数値が $map にある場合、それは 2 つの数値の合計が $target であることを意味し、これら 2 つの数値のインデックスを返すことができます。
5. 存在しない場合は、走査した番号を $map に保存し、次のサイクルに進みます。
6. 最後に、ループ全体で要件を満たす数値の組み合わせが見つからなかった場合は、[-1, -1] が返されます。
4. 概要
この記事では、PHP 配列内の 2 つの数値の合計が固定値に等しいという問題を解決するためのハッシュ テーブルの使用方法を紹介します。ハッシュ テーブルを使用すると、要件を満たす数値の組み合わせを 1 つのループで、時間計算量 O(n) で見つけることができます。
さらに、配列が空で長さが 1 の場合など、いくつかの特殊なケースにも注意する必要があります。
この記事が php を初めて使用する読者に役立つことを願っています。
以上がPHPで固定値に等しい配列内の2つの数値の合計を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。