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