ps:这部分请一定关注时间复杂度的计算和算法的优化,因为在面试中都会要求计算时间复杂度和不断优化你写的算法
1. 顺序表和链表的优缺点,它们分别在什么场景下使用? 2. 求一个单链表中节点个数 3. 删除一个无头单链表的非尾节点 4. 在无头单链表的一个节点前插入一个节点 5. 单链表实现约瑟夫环 6. 逆置单链表 7. 单链表排序 8. 合并两个有序链表,合并后依然有序 9. 查找单链表的中间节点,要求只能遍历一次链表 10. 查找单链表的倒数第k个节点。 11. 判断单链表是否带环,若带环,求环的长度,求环的入口点。并求时间复杂度&空间复杂度 12. 判断两个链表是否相交,若相交,求交点。【考虑带环&不带环两种情况】
1. 实现一个栈,要求实现Push(出栈)、Pop(入栈)、Min(返回最小值的操作)的时间复杂度为O(1)。 2. 使用两个栈实现一个队列 3. 使用两个队列实现一个栈 4. 元素出栈、入栈顺序的合法性。如入栈的序列(1,2,3,4,5),出栈序列为(4,5,3,2,1)。
1. 前序/中序/后序遍历 2. 层序遍历 3. 求二叉树的高度 4. 求叶子节点的个数 5. 判断一个节点是否在一棵二叉树中 6. 求两个节点的最近公共祖先 7. 求二叉树中最远的两个节点的距离 8. 判断一棵二叉树是否是平衡二叉树 9. 求二叉树第k层的节点个数
1. 比较一下几种排序的优缺点和相应的使用场景。 2. 快排/堆排/归并 任选一种实现。 3. 优化快排。 4. 非递归实现快排。 5. 说说你知道的一些排序算法?从性能&使用场景等角度比较一下几个排序算法? 6. 现在对一个顺序表进行排序,从性能尽可能高的角度,你会选择使用哪几个排序算法来实现?为什么选择它? 7. 现在对一个单链表进行排序,从性能尽可能高的角度,你会选择使用哪几个排序算法来实现?为什么选择它? 8. 说说你了解的哈希算法?说说哈希算法在现实中的使用场景?说说实现一个高效(哈希冲突尽量少)的哈希表的思路? 9. 实现一个二分查找算法?