leetcode推前leetcode_Q-As数据结构是一种在计算机中存储和组织数据的方法,以便可以有效地使用它。我们将数据结构称为数学/逻辑模型或抽象数据类型(ADT),执行ADT定义数据和操作,但没有实现。我们需要研究它们的:逻辑视图、操作、运营成本。如何决定使用哪种数据结构?这取决于:需要存储什么、运营成本、内存使用情况、易于实施。
列表为抽象数据类型可分为:
-
静态的:存储给定数据类型的固定数量的元素,允许在某个位置写入/修改、读取元素。
-
动态的:列表的大小可以为0,可以插入、删除、读取/修改某个位置的元素。
数组实现:
-
数组在静态列表中定义后,可以在恒定时间内计算长度。
-
当数组已满时,创建一个新的双倍大小的数组,将旧数组复制到新数组,并释放旧数组内存。
-
在索引处读/写元素 - O(1)
-
插入 - O(n)
-
删除 - O(n)
-
推送 - 最坏O(n),摊销O(1)(在C中,旧数组可以扩展为新数组,否则将分配新的内存块)。
链表介绍:
每个节点包含值和指向下一个节点的指针。
暂无评论