我已经写了一小段代码,找到并删除如果一个整数数组任何重复的号码。我为此使用了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