常见数据结构及面试常见代码题(1)

数组

基本操作:
插入、删除、返回指定位置的元素、得到数组所有元素的数量。

面试常见问题:
1 寻找数组第k大的数字
2 找到数组中第一个不重复的整数
3 合并两个有序数组
4 重新排列数组中的正值和负值

应用:
撤销操作

基本操作:

Push 顶部插入
Pop  移除栈顶元素
isEmpty 栈为空则返回true
Top 返回顶部元素,但不移除

面试常见问题:

5 用栈计算后缀表达式
6 对栈的元素进行排序
7 判断表达式是否括号平衡

队列

应用:
银行排队

基本操作:

Enqueue(): 在队列尾部插入
Dequeue(): 移除队列头部
isEmpty(): 队列空则返回true
Top: 返回队列第一个元素

面试常见问题:

8 用队列表示栈
9 对队列前k个元素倒序
10 使用队列生成1-n的二进制数

链表

是一种重要的线性数据结构,链表就像一个节点链,每个节点包含着自己的数据和指向后续节点的指针。链表包含一个头指针,指向链表的第一个元素。当链表为空时,他指向null或者无具体内容。
应用:实现文件系统,散列表或者邻接表
基本操作:

InsertAtEnd: 在链表末尾插上元素
InsertAtHead:在链表开始插入指定元素
Delete:在链表中删除指定元素
DeleteAtHead:删除链接链表的第一个元素
Search:从链表中返回第一个元素
isEmpty: 如果链表为空,则返回true

面试常见问题:

11 翻转链表
12 检测链表中的环
13 返回链表倒数第N个节点
14 删除链表中的重复项

树形结构是一种层级式的数据结构,由顶点和连接他们的边形成。树中不存在环路

应用:
人工智能和一些复杂算法

树形结构基本术语:

Root: 根节点
Parent:父节点
Child: 子节点
Leaf:叶子结点
Sibling:兄弟节点

树的主要类型:
平衡树
二叉树
二叉搜索树
AVL树
红黑树
B树和B+树

常见面试题型

15 二叉树的高度
16 二叉搜索树中第k个最大值
17 查找与根节点距离为k的节点
18 二叉树中查找给定节点的祖先节点
19 腾讯笔试(二叉树中给定节点的第层的祖先节点)

图示一组以网络形式相互连接的节点
图可以用邻接矩阵或者邻接表表示
常见图遍历算法:DFS 和 BFS

常见面试问题:

20 检查图是否为树
21 计算图的边数
22 找到两个顶点之间的最短路径
23 实现 DFS 和 BFS

字典树

用于快速检索,可以解决一些字符串问题。主要用于搜索字典中的单词。在搜索引擎中自动提供建议,也可用于IP的路由。

常见面试问题:

24 字典树中的总单词数
25 打印字典树中的所有单词
26 用字典树对数组元素进行排序
27 使用字典树从字典中形成单词
28 构建T9字典(字典树+DFS)

哈希表

用于唯一标识对象并将对象存储在提前计算好的唯一索引中的过程。对象以键值对的形式存储。
哈希表通常以数组的形式实现

散列数据结构的性能:

哈希函数
哈希表的大小
碰撞处理的方式

面试常见问题:

29 在数组中查找对称键值对
30 追踪遍历的完整路径
31 查找数组是否是另一数组的子集
32 检查给定的数组是否不相交

本菜鸟会陆续更新每道题的每种解法。。。。。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值