leetcode の最初の質問、このメソッドは O(n) の複雑さの解決策を達成できます
質問には、nums = [2, 7, 11, 15] などの int[] と target = 9 が必要です。
合計がターゲット値となる 2 つの数値がある場合、たとえば nums[0] nums[1] = 2 7 = 9
return [0, 1].
次のソリューションを使用する場合、少し疑問があります。つまり、新しいハッシュマップが作成されますが、それに値が割り当てられないということです。この場合、質問の要件をどのように達成すればよいでしょうか?
リーリー
forループ内のmap.put()は代入ではないでしょうか? ? ?
この質問では、2 つの数値の合計がターゲット値と指定された値である必要があります。その場合、少なくとも 2 つの数値を走査する必要があります。 この状況の認識は次のとおりです。
1) まずマップを初期化します、(1) 最初に初期化すると、アルゴリズムに O(n) 時間がかかります。最初の値を見つける 値が正しい場合、アルゴリズム時間は O(k)、0
2) 最初の数字 2 をトラバースし、ターゲット - 2 = 9 - 2 = 7
3) 7 もマップ内にあると判断し、正しい結果を返します。
注: 最初の正しい番号までトラバースしてください
(2) 初期化されていない場合は、停止する前に 2 番目の正しい番号までトラバースします。アルゴリズム時間は O(k)(1 この状況の実現は次のとおりです:
リーリー
いいえ
リーリーKey
的情况下,HashMap.containsKey(Key)
返回的是false
不包括Key
。あなたが思っているようなヌルポインタエラーは発生しません。