目录
什么是数据结构?
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
结构类问题的三种考法
如何衡量数据结构类问题的时间复杂度
哈希表基本原理
堆的基本原理
高级数据结构 cheat sheet
数据结构类面试问题的三种考法
数据结构可以认为是一个数据存储集合以及定义在这个集合上的若干操作(功能)
他有如下的三种考法:
考法
1 :问某种数据结构的基本原理,并要求实现
例题:说一下
Hash 的原理并实现一个 Hash 表
考法
2 :使用某种数据结构完成事情
例题:归并
K 个有序数组
考法
3 :实现一种数据结构,提供一些特定的功能
例题:最高频K 项问题
通常需要多个数据结构配合在一起
面试包含的数据结构:
二叉树、链表、队列、数组、哈希表 并查集 字典树
栈 双端队列、单调栈
数据结构时间复杂度的衡量方法
数据结构通常会提供多个 对外接口
只用一个时间复杂度是很难对其进行正确评价的
所以通常要对每个接口的时间复杂度进行描述
哈希表 hash
Hash Table, Hash Map和 Hash Set 的区别是啥
什么是Hash Function ( 产生 HashCode 的函数 )),作用以及实现原理
什么是Open Hashing 什么是 Closed Hashing
什么是Rehashing (重哈希)
LRU Cache
Insert Delete GetRandom O(1)
设计一个数据结构实现在平均 O(1) 的复杂度下执行以下所有的操作。
insert(val): 如果这个元素不在set中,则插入。
remove(val): 如果这个元素在set中,则从set中移除。
getRandom: 随机从set中返回一个元素。每一个元素返回的可能性必须相同。
在这里插入代码片
First Unique Number in Data Stream
给一个连续的数据流,写一个函数返回终止数字到达时的第一个唯一数字(包括终止数字),如果找不到这个终止数字, 返回 -1.
First Unique Number in Data Stream II
我们需要实现一个叫 DataStream 的数据结构。并且这里有 两 个方法需要实现:
void add(number) // 加一个新的数
int firstUnique() // 返回第一个独特的数
堆 Heap
构造heap的时间复杂度O(n)
遍历heap的时间复杂度O(nlogn)
Ugly Number 2