我有一个场景 - 必须读取两个迭代器,并需要将它们添加到列表并返回该列表 这是什么"该功能应该在O(1)时间内运行"。
如果我的理解是正确的, 如果数组有1个元素,处理时间需要1秒,如果它有100个元素,那么它也需要1秒......
如何在此处实现1秒算法以进行上述读取并添加到新列表操作...
答案 0 :(得分:8)
<强> O(1)强>
O(1)描述了一种始终在同一时间执行的算法 (或空格),不管输入数据集的大小。 O(1)时间复杂度也称为恒定时间复杂度
独立于列表大小,始终返回第一个元素。
boolean IsFirstElementNull(List<string> elements)
{
return elements[0] == null;
}
<强> O(N)强>
O(N)描述了一种算法,其性能将线性增长 与输入数据集的大小成正比。
boolean ContainsValue(List<string> elements, string value)
{
foreach (var element in elements)
{
if (element == value) return true;
}
return false;
}
答案 1 :(得分:5)
O(1)
时间复杂度意味着无论输入的大小如何,程序运行所需的时间都是不变的。
这就是O(1)
时间复杂度被称为恒定时间复杂度的原因。
您可以将此与其他时间复杂度进行比较,例如O(n)
这意味着程序所花费的时间会随着输入的大小而线性增加,即n
。
O(exp^n)
表示所用时间将呈指数级增长。