我知道从双向链表中删除一个元素的时间复杂度是 O(1) 并且看起来很明显但如果我们没有收到删除它的元素但被元素包裹的元素会发生什么?
例如,如果我们定义一个类 Element 来包装一个字符串(以提供指向下一个和上一个元素的指针),如果方法接收该元素作为输入而不是字符串,我们可以在 O(1) 中进行删除!
如果 remove 方法接收到字符串,它必须在列表中搜索以找到相应的元素,对吗?所以这种情况下的时间复杂度将是 O(n) ,而不是 O(1)
class Element{
String content;
Element next;
Element previous;
}
class LinkedList{
...
public remove(String s){
//it has to first find the element corresponding to this String !
}
}