链表中删除的时间复杂性



根据这个网站,我很难理解为什么链接列表的时间复杂性是O(1)。据我所知,如果你想删除一个元素,你肯定必须遍历列表才能找到元素的位置(如果它真的存在的话)?根据我的理解,它不应该是O(n)吗?还是我完全错过了什么?

不,您没有遗漏什么。

如果要删除特定元素,时间复杂度为O(n)(其中n是元素的数量),因为必须首先找到该元素。

如果要删除特定索引i处的元素,则时间复杂性为O(i),因为必须从一开始就遵循链接。

如果已经有了要插入的节点的引用,则插入的时间复杂度仅为O(1)。如果您已经有要删除的节点的引用,则对于双链表,删除的时间复杂度仅为O(1)。如果您已经引用了要删除的节点和之前的节点,则只有O(1)才能删除单链表。所有这些都与基于数组的列表形成对比,在该列表中,插入和删除都是O(n),因为您必须移动元素。

使用链表而不是基于数组的列表的优点是,在对其进行迭代时,可以有效地插入或删除元素。例如,这意味着筛选链表比基于数组筛选列表更有效。

您是正确的。

删除:

1.如果在这种情况下给出指针,则时间复杂度为O(1)。

2.您没有指向要删除的节点的指针(搜索和删除)。在这种情况下,时间复杂度为O(n)。

相关内容

  • 没有找到相关文章

最新更新