我已經寫了一小段代碼,找到並刪除如果一個整數數組任何重複的號碼。我爲此使用了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();
}
我的難處
我需要知道如何找到時間複雜度爲這個寫一小段代碼,如果可能的話如何優化它。
我有什麼企圖
我也做了互聯網上關於如何計算時間和空間的算法的複雜性,下面就一些閱讀是什麼,我覺得就是答案,但因爲我是新來的這個我認爲,而不是去錯誤的假設,最好諮詢一些專家。
下面是我的嘗試。
列表correctedList =新列表(); - >這將被執行1次
INT I = 0; - >這將被執行1次
INT I < input.Length - >這將被執行N次
我++! - >這將被執行N次
如果(correctedList 。載(輸入[1])) - >這可被執行N次
correctedList.Add(輸入[1]); - >這可被執行N次
所以,操作的總數目= 1 + 1 + N + N + N + N = 4N + 2
這是等於O(N)?
,是我的計算時間複雜度正確的方法是什麼?
預先感謝
這不是一個答案,但你可以這樣做:input.Distinct()。ToArray()這是O(N)。 – usr