1
我正在学习考试,并用Big Oh符号略微理解时间复杂度。我以此为例说明他们会问什么,并好奇你的想法是什么。我不确定这些是线性的O(n)还是什么。如果你能帮助我,那么这些复杂性问题中的一些会让我困惑。先谢谢你。addFirst(e)和removeFirst()方法的时间复杂度是多少?
public E removeFirst() {
if (size == 0) {
return null;
}
else {
Node<E> temp = head;
head = head.next;
size--;
if (head == null) {
tail = null;
}
return temp.element;
}
}
public void addFirst(E e) {
Node<E> newNode = new Node<E>(e);
newNode.next = head;
head = newNode;
size++;
if (tail == null)
tail = head;
}
如果您有循环或递归,可能会出现复杂度O(n)。如您所见,您的方法具有可预测的操作量,并且此量不取决于列表中的长度。这就是为什么复杂性是O(1) – Natalia