面试题答案
一键面试- 向链表头部插入元素:
- 时间复杂度:$O(1)$。
- 原因:在Java的
LinkedList
中,它维护了一个指向链表头节点的引用(first
)。当向链表头部插入元素时,只需创建新节点,然后将新节点的next
指针指向原头节点,再把链表的头节点引用指向新节点即可。这些操作不依赖于链表的长度,无论链表有多长,都可以在固定时间内完成,所以时间复杂度为$O(1)$。
- 向链表尾部插入元素:
- 时间复杂度:$O(1)$。
- 原因:Java的
LinkedList
不仅维护了头节点引用(first
),还维护了尾节点引用(last
)。向链表尾部插入元素时,创建新节点,将尾节点的next
指针指向新节点,然后更新尾节点引用为新节点。同样,这些操作不依赖于链表的长度,可在固定时间内完成,因此时间复杂度也是$O(1)$。
总体来说,在Java的LinkedList
中,向链表头部插入元素和向链表尾部插入元素在时间复杂度上没有区别,均为$O(1)$。