1、数组

  • 找出数组中出现次数大于数组长度一半和 N / K 的数
  • 数组的奇偶位置问题:给定一个整型数组,请在原地调整这个数组,保证要么偶数位置上都是偶数,或者奇数位置上都是奇数。
  • 调整数组顺序使奇数位于偶数前面
  • 数组的度
  • 求一个数组中的第 K 小 / 大的数
  • 将一个整数数组划分为 K 个相等的子集问题
  • 旋转数组中的最小数字
  • 在二维数组中查找一个数
  • 找出数组中重复的数字
  • 找出数组中只出现一次的那个数,其他都出现两次
  • 子数组最大累乘积:给定一个 double 类型的数组 arr,其中的元素可正、可负、可 0,返回子数组累乘的最大乘积。
  • 需要排序的最短子数组长度
  • 最长的可整合子数组的长度
  • 最短无序连续子数组
  • 连续子数组的最大和

2、字符串

  • 字符串的排列与组合
  • 最长回文子串
  • 正则表达式匹配:实现一个函数用来匹配包括'.'和'*'的正则表达式
  • 替换空格
  • 字符串的翻转和旋转及其应用
  • 字符串解码
  • 无重复字符的最长子串
  • 字符串的最长公共子串和最长公共子序列
  • 请实现一个函数用来判断字符串是否表示数值
  • 判断一个字符串是否是一个合法的

3、哈希表

  • 手写一个简单的 HashMap
  • 和为 K 的子数组:给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数
  • 一种接收消息并按顺序打印的结构设计
  • 哈希表增加 setAll 功能

4、栈

  • 用固定大小的数组实现栈
  • 如何仅用队列实现栈
  • 最小值栈:能够返回栈中最小元素的栈
  • 栈的压入、弹出序列:输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序
  • 单调栈结构的实现
  • 直方图中的最大矩形面积
  • 求最大子矩阵的大小
  • 可见山峰问题

5、队列

  • 用固定大小的数组实现队列
  • 如何仅用栈结构实现队列

6、链表

  • 反转单向链表
  • 反转双向链表
  • K 个一组翻转链表
  • 合并两个排序的链表
  • 链表中倒数第 K 个节点
  • O(1) 时间内删除一个节点
  • 删除链表中重复的节点
  • 从尾到头打印链表
  • 判断一个链表是否为回文结构
  • 给出两个有序链表的头结点,打印出两个链表中相同的元素
  • 将单向链表按某值划分成左边小、中间相等、右边大的形式
  • 复制含有随机指针节点的链表
  • 两个单链表相交的一系列问题
  • 链表中环的入口节点
  • 复杂链表的复制

7、树

  • 二叉树的前序、中序、后序遍历的递归实现
  • 二叉树的前序、中序、后序遍历的非递归实现
  • 二叉树的层序遍历
  • Morris 遍历二叉树:前序、中序、后序
  • 输入一个数组,判断是不是二叉搜索树的后序遍历序列
  • 二叉树的序列化:前序、层序
  • 反序列化:怎么序列化的就怎么反序列化
  • 在二叉树中找一个节点的后继节点
  • 判断一棵树是否是完全二叉树
  • 判断一棵树是否是搜索二叉树
  • 判断一棵树是否是平衡二叉树
  • 判断一棵树是否是对称的二叉树
  • 二叉树的镜像
  • 树的子结构:输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构
  • 合并二叉树
  • 二叉树中和为某一值的路径
  • 重建二叉树:输入某二叉树的前序遍历和中序遍历的结果,请重新构造出该二叉树
  • 求一棵完全二叉树的节点个数,时间复杂度低于 O(N)
  • 找二叉树左下角的值
  • 把二叉搜索树转换为累加树
  • 舞会的最大活跃度
  • 求一棵二叉树中最大二叉搜索子树的节点个数
  • 求一个二叉树的最远距离
  • 二叉树的最大路径和
  • 求二叉树节点和为 N 的所有路径。
  • 实现二叉树的镜像。
  • 实现两棵二叉树相加生成一棵新的二叉树。
  • 实现单链表的递归逆置和非递归逆置。
  • 二分查找变种问题。
  • 二叉树的后序非递归遍历。
  • 两个无序整型数组交换元素使得两数组和差距最小。
  • 给定整型数组和目标数输出数组所有两数之和为目标数的组合。
  • 找到带权重二叉树中从根到叶子的最大和路径。
  • 最长公共子序列 LCS 问题。
  • 二叉树中找到指定两个节点最近公共祖先。
  • 实现堆排序求 Top10 数据。
  • 实现最小栈。
  • 简述并尝试设计一个布隆过滤器。
  • 外排序的基本实现过程。
  • 常见排序算法的性能对比。
  • 快速排序的非递归实现

8. 堆栈

有序数组排序,二分,复杂度 常见排序算法,说下快排过程,时间复杂度 有 N 个节点的满二叉树的高度。1+logN 如何实现关键字输入提示,使用字典树,复杂度多少,有没有其他方案,答哈希,如果是中文呢,分词后建立字典树? hashmap 的实现讲一下吧,讲的很详细了。讲一下红黑树的结构,查询性能等。 快排的时间复杂度,冒泡时间复杂度,快排是否稳定,快排的过程 100w 个数,怎么找到前 1000 个最大的,堆排序,怎么构造,怎么调整,时间复杂度。 一个矩阵,从左上角到右下角,每个位置有一个权值。可以上下左右走,到达右下角的路径权值最小怎么走。 四辆小车,每辆车加满油可以走一公里,问怎么能让一辆小车走最远。说了好几种方案,面试官引导我优化了一下,但是还是不满意,最后他说跳过。 MySQL 的索引,B+树性质。 十亿和数找到前 100 个最大的,堆排序,怎么实现,怎么调整。 布隆过滤器 hash 表解决冲突的方法 跳表插入删除过程 让你实现一个哈希表,怎么做(当时按照 Redis 中哈希表的实现原理回答)