数据结构

来源:互联网 发布:如何看待中央反贪知乎 编辑:程序博客网 时间:2024/06/16 04:05

ps:这部分请一定关注时间复杂度的计算和算法的优化,因为在面试中都会要求计算时间复杂度和不断优化你写的算法

1.线性表

1. 顺序表和链表的优缺点,它们分别在什么场景下使用?
2. 求一个单链表中节点个数
3. 删除一个无头单链表的非尾节点
4. 在无头单链表的一个节点前插入一个节点
5. 单链表实现约瑟夫环
6. 逆置单链表
7. 单链表排序
8. 合并两个有序链表,合并后依然有序
9. 查找单链表的中间节点,要求只能遍历一次链表
10. 查找单链表的倒数第k个节点。
11. 判断单链表是否带环,若带环,求环的长度,求环的入口点。并求时间复杂度&空间复杂度
12. 判断两个链表是否相交,若相交,求交点。【考虑带环&不带环两种情况】

2.栈和队列

1. 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)。
2. 使用两个栈实现一个队列
3. 使用两个队列实现一个栈
4. 元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)。

3.二叉树

1. 前序/中序/后序遍历
2. 层序遍历
3. 求二叉树的高度
4. 求叶子节点的个数
5. 判断一个节点是否在一棵二叉树中
6. 求两个节点的最近公共祖先
7. 求二叉树中最远的两个节点的距离
8. 判断一棵二叉树是否是平衡二叉树
9. 求二叉树第k层的节点个数

4.排序&查找

1. 比较一下几种排序的优缺点和相应的使用场景。
2. 快排/堆排/归并 任选一种实现。
3. 优化快排。
4. 非递归实现快排。
5. 说说你知道的一些排序算法?从性能&使用场景等角度比较一下几个排序算法?
6. 现在对一个顺序表进行排序,从性能尽可能高的角度,你会选择使用哪几个排序算法来实现?为什么选择它?
7. 现在对一个单链表进行排序,从性能尽可能高的角度,你会选择使用哪几个排序算法来实现?为什么选择它?
8. 说说你了解的哈希算法?说说哈希算法在现实中的使用场景?说说实现一个高效(哈希冲突尽量少)的哈希表的思路?
9. 实现一个二分查找算法?

0 0