[インタビューの質問] 整数の配列とターゲット値が与えられた場合、配列内で合計がターゲット値となる 2 つの整数を見つけ、添え字を返します。

インタビューの質問: 整数の配列とターゲット値が与えられた場合、その合計がターゲット値となる 2 つの整数を配列内で見つけて添え字を返します。タイトルは次のとおりです: この問題を解決するには 2 つの直接的な方法があります:
方法
ここに画像の説明を挿入
1
(単純なタイプ。for ループをネストすることで直接実行できます):
ここに画像の説明を挿入
方法 2:
問題解決のアイデア: まず、既知のコレクション走査をマップに変換します。キーは配列値で、値は値配列に対応する添字です。値を求め、目標値を判定します。走査したコレクション値がマップに含まれるかどうかを減算し、結果を返します。詳細については、図を参照してください。
ここに画像の説明を挿入
最終結果はまったく同じです。配列要素が多い場合、方法 1 のネストされたループを使用するとパフォーマンスが大幅に消費され、方法 2 の場合は、2 番目の書き込み方法をお勧めします。優れている。
2022-12-2 改訂上記の問題解決方法は、ユースケース テスト 2 には適用できず、アルゴリズムの計算が特別に変更されます。マップの特性を利用して、計算時間が 60 ミリ秒以上から 5 ミリ秒に短縮されました。
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/weixin_51114236/article/details/122809154