LinkedListSet中的add的方法不是头部添加一个节点,复杂度是O(1),为什么是O(n)

来源:7-3 集合类的复杂度分析

慕容9198694

2018-08-01

http://img.mukewang.com/szimg/5b61ae300001ad5e08270254.jpg

写回答

1回答

liuyubobobo

2018-08-02

由于Set中不能有重复元素,所以使用LinkedList实现Set,添加操作有两种实现方案:

1)添加元素前查重,确认待添加元素和LinkedList中已有元素不重复后直接添加在头结点。此时查重的复杂度是O(n)的;

2)维护LinkedList中的元素有序,每次添加元素的位置根据元素大小决定(在决定元素添加位置的时候顺便查重),此时,添加操作的复杂度是O(n)的;


上述两种方案,基于LinkedList实现Set,添加操作的时间复杂度都是O(n)的:)

2
1
慕容9198694
明白了,谢谢老师
2018-08-02
共1条回复

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程