に配列番号が1つしかない場合は、がの配列を取得し、を返します。 これはどのように実行時間と空間の使用率が最も低いのですか?他に、マップに(1、X)を挿入し、xがマップにない場合は、[キーとして]:配列内の各xについて:in java - 配列に1回だけ表示される番号があるかどうかをチェックするメソッド?
はすべて
に配列番号が1つしかない場合は、がの配列を取得し、を返します。 これはどのように実行時間と空間の使用率が最も低いのですか?他に、マップに(1、X)を挿入し、xがマップにない場合は、[キーとして]:配列内の各xについて:in java - 配列に1回だけ表示される番号があるかどうかをチェックするメソッド?
はすべて
は、配列を反復、HashMapを作成いただきありがとうございます。 map(x、map.value(x)+1)をマップに挿入します。
反復マップ、および1の値を持つキーがある場合に見つけて、そこにある場合はtrueを返し、そうでない場合はfalse
それはO(n)
時間の複雑さとO(n)
スペースの複雑さです。
擬似コード:
hasUnique(array):
map <- new hashMap
for each x in array:
if (map.get(x) == null): map.put(x,1)
else: map.put(x,map.get(x)+1)
for each key in map.keySet():
if (map.get(key) == 1) return true
return false
それは宿題のように思えるので、私は読者にexcersiceとして、それを実装しておきます。
スペースの複雑さはどうですか?それはO(n)です。 –
@aix:私は編集しました、私は最初に質問を誤解しました。ルチアン:それは確かにO(n)の空間の複雑さです。 – amit
私はおそらく配列をソートしようとします(qsortアルゴリズムはかなり高速です)。そして、配列を一度繰り返して、同じ左と右の要素を見つけません。
キーを要素にし、値 - 発生数をハッシュマップに入れることもできます。
//編集: と同様に、HashSetもオプションです。
この宿題はありますか?あなたはどの戦略を想像していますか? –
あなたはもっと良い例を説明します...もし配列が{1,2,3,4,5}、{1,2,3,4,5,2} –
なら、アルゴリズムがO(n)を実行するなら時間とO(1)空間の複雑さ、そしてO(1)の実行時間とO(n)空間の複雑さがあります。 –