何
整数配列に重複する数値があるかどうかを見つけて削除する小さなコードを書きました。これには List を使用しました。
コード
static int[] RemoveDuplicate(int[] input)
{
List<int> correctedList = new List<int>();
for(int i = 0; i < input.Length; i++)
{
if (!correctedList.Contains(input[i]))
{
correctedList.Add(input[i]);
}
else
{
//skip
}
}
return correctedList.ToArray();
}
私の難しさ
書かれたこの小さなコードの時間計算量を見つける方法と、可能であればそれを最適化する方法を知る必要があります。
私は何を試しましたか
私はアルゴリズムの時間と空間の複雑さを計算する方法についてインターネットでいくつか読んだことがあります.これについて何人かの専門家に相談してください。
以下は私が試したことです。
List modifiedList = new List(); --> これは 1 回実行されます
int i =0; -->これは1回実行されます
int i < input.Length --> これは N 回実行されます
i++ --> これは N 回実行されます
if (!correctedList.Contains(input[i])) --> これは N 回実行される可能性があります
修正されたList.Add(input[i]); --> これは N 回実行される可能性があります
したがって、操作の総数 = 1 + 1 + N + N + N + N = 4N+2
これは O(N) に等しいですか?
時間の複雑さを計算する私の方法は正しいですか?
少し早いですがお礼を