前言
这里简单记录下
力扣在线刷题记录
面试细节总结
- 面试细节:行为面试(20%) + 技术面试(70%) + 应聘者提问(10%)
- 行为面试:跳槽原因;职业规划
- 技术面试:
- 基础知识点(编程语言,数据结构(50%),算法)
- 代码质量要点(规范性,完整性,鲁棒性(健壮性))
- 复杂题解题思路(画图,举例,分解复杂的问题)
- 优化效率(时间和空间)
- 综合能力面(学习、沟通能力,知识迁移能力,抽象建模和发散性思维能力)
附加:测试代码:1. 基本功能测试;2. 边界值测试;3. 性能测试
- 应聘者提问:自己应聘职位的相关问题
代码质量要点:规范性,完整性,鲁棒性
注:文中的难度为LeetCode的标签,不代表如《剑指Offer》原题难度
程序员面试金典(第6版)
| # | 题名 | 知识点 | 难度 | 提交时间 | start |
|---|---|---|---|---|---|
| 02.03 | 删除中间节点 | 单链表 | 简单-困难 | 2020-05-22 |
剑指Offer(第2版)
| # | 题名 | 知识点 | 难度 | 提交时间 | start |
|---|---|---|---|---|---|
| 05 | 替换空格 | 字符串 | 简单 | 2020-06-09 | |
| 06 | 从尾到头打印链表 | 递归 栈 | 简单 | 2020-06-09 | |
| 10-I | 斐波那契数列 | 递归 迭代 | 简单 | 2020-06-10 | |
| 10-II | 青蛙跳台阶问题 | 递归 迭代 | 简单 | 2020-06-13 | |
| 17 | 打印从1到最大的n位数 | 大数运算 | 简单 | 2020-06-06 | |
| 18 | 删除链表的节点 | 单链表 双指针 哑结点 | 简单 | 2020-06-05 | |
| 22 | 链表中倒数第k个节点 | 单链表 快慢指针 | 简单 | 2020-06-05 | |
| 24 | 反转链表 | 双指针 | 简单 | 2020-06-10 | |
| 27 | 二叉树的镜像 | 二叉树 递归 | 简单 | 2020-06-08 | |
| 55-I | 二叉树的深度 | 二叉树 递归 | 简单 | 2020-06-05 | |
| 57 | 和为s的两个数字 | 双指针/二分查找 | 简单 | 2020-07-09 | |
| 57-II | 和为s的连续正数序列 | `` | 简单 | 2020-07-09 | |
| 58-II | 左旋转字符串 | 字符串 三步翻转 | 简单 | 2020-06-04 | |
| 67 | 把字符串转换成整数 | isspace isdigit | 中等 | 2020-07-08 |
LeetCode力扣
| # | 题名 | 知识点 | 难度 | 提交时间 | start |
|---|---|---|---|---|---|
| 08 | 字符串转换整数 (atoi) | isspace isdigit | 中等 | 2020-07-11 | |
| 106 | 从中序与后序遍历序列构造二叉树 | 递归 | 中等 | 2020-07-09 | |
| 985 | 查询后的偶数和 | 调整数组和 | 简单 | 2020-06-08 |
每日一题
2020年6月
| # | 题名 | 知识点 | 难度 | 提交时间 | start |
|---|---|---|---|---|---|
| 1431 | 拥有最多糖果的孩子 | vector最大值 | 简单 | 2020-06-01 | |
| JZ64 | 求1+2+…+n | 递归 位运算 | 中等 | 2020-06-02 | |
| 837 | 新21点 | 动态规划 数学 | 中等 | 2020-06-03 | |
| 238 | 除自身以外数组的乘积 | 数组 左右累乘 | 中等 | 2020-06-04 | |
| JZ29 | 顺时针打印矩阵 | 暴力求解 边界问题 | 简单 | 2020-06-05 | |
| 128 | 最长连续序列 | 并查集 | 困难 | 2020-06-06 | |
| 126 | 单词接龙 II | BFS 回溯算法 | 困难 | 2020-06-07 | |
| 990 | 等式方程的可满足性 | 并查集 路径压缩 | 中等 | 2020-06-08 | |
| JZ46 | 把数字翻译成字符串 | 动态规划 递归 | 中等 | 2020-06-09 | |
| 09 | 回文数 | 数组 字符串 | 简单 | 2020-06-10 | |
| 739 | 每日温度 | 暴力求解 单调栈 | 中等 | 2020-06-11 | |
| 15 | 三数之和 | 排序 双指针 | 中等 | 2020-06-12 | |
| 70 | 爬楼梯 | 递归 迭代 | 简单 | 2020-06-13 | |
| 1300 | 转变数组后最接近目标值的数组和 | 数组 排序 | 中等 | 2020-06-14 | |
| 14 | 最长公共前缀 | 字符串 纵向扫描 | 中等 | 2020-06-15 | |
| 297 | 二叉树的序列化与反序列化 | 二叉树 递归 | 困难 | 2020-06-16 | |
| 1014 | 最佳观光组合 | 数组 调整数组和 | 中等 | 2020-06-17 | |
| 1028 | 从先序遍历还原二叉树 | 二叉树 | 困难 | 2020-06-18 | |
| 125 | 验证回文串 | 字符串 reverse | 简单 | 2020-06-19 | |
| 10 | 正则表达式匹配 | 动态规划 | 困难 | 2020-06-20 | |
| 124 | 二叉树中的最大路径和 | 二叉树 递归 | 困难 | 2020-06-21 | |
| JD16.18 | 模式匹配 | 字符串枚举 | 中等 | 2020-06-22 | |
| 67 | 二进制求和 | 字符串 | 中等 | 2020-06-23 | |
| 16 | 最接近的三数之和 | 排序 双指针 | 中等 | 2020-06-24 | |
| 139 | 单词拆分 | 动态规划 | 中等 | 2020-06-25 | |
| JD02.01 | 移除重复节点 | 哈希表 | 简单 | 2020-06-26 | |
| 41 | 缺失的第一个正数 | 哈希表 | 困难 | 2020-06-27 | |
| 209 | 长度最小的子数组 | 双指针 二分 | 中等 | 2020-06-28 | |
| 215 | 数组中的第K个最大元素 | 堆排序 | 中等 | 2020-06-29 | |
| 09 | 用两个栈实现队列 | 堆 队列 | 简单 | 2020-06-30 |
2020年7月
| # | 题名 | 知识点 | 难度 | 提交时间 | start |
|---|---|---|---|---|---|
| 718 | 最长重复子数组 | 动态规划 | 中等 | 2020-07-01 | |
| 378 | 有序矩阵中第K小的元素 | 排序 | 中等 | 2020-07-02 | |
| 108 | 将有序数组转换为二叉搜索树 | 二叉树 递归 | 简单 | 2020-07-03 | |
| 32 | 最长有效括号 | 动态规划 栈 | 困难 | 2020-07-04 | |
| 44 | 通配符匹配 | 动态规划 | 困难 | 2020-07-05 | |
| 63 | 不同路径 II | 动态规划 滚动数组降维 | 中等 | 2020-07-06 | |
| 112 | 路径总和 | 递归 | 简单 | 2020-07-07 | |
| JD16.11 | 跳水板 | 动态规划/数学等差数列 | 简单 | 2020-07-08 | |
| JD17.13 | 恢复空格 | 动态规划 string_view | 中等 | 2020-07-09 | |
| 309 | 最佳买卖股票时机含冷冻期 | 动态规划 | 中等 | 2020-07-10 | |
| 315 | 计算右侧小于当前元素的个数 | 二分查找 | 困难 | 2020-07-11 | |
| 174 | 地下城游戏 | 动态规划 滚动数组降维 | 困难 | 2020-07-12 | |
| 350 | 两个数组的交集 II | 排序/双指针 | 简单 | 2020-07-13 | |
| 120 | 三角形最小路径和 | 动态规划 | 中等 | 2020-07-14 | |
| 96 | 不同的二叉搜索树 | 动态规划/数学 | 中等 | 2020-07-15 | |
| 785 | 判断二分图 | DFS/BFS | 中等 | 2020-07-16 | |
| 35 | 搜索插入位置 | 二分查找 | 简单 | 2020-07-17 | |
| 97 | 交错字符串 | 动态规划 | 困难 | 2020-07-18 | |
| 312 | 戳气球 | 动态规划 | 困难 | 2020-07-19 | |
| 167 | 两数之和 II - 输入有序数组 | 双指针/二分查找 | 简单 | 2020-07-20 | |
| 95 | 不同的二叉搜索树 II | 递归 | 中等 | 2020-07-21 | |
| JZ11 | 旋转数组的最小数字 | 二分法 | 简单 | 2020-07-22 | |
| 64 | 最小路径和 | 动态规划 | 中等 | 2020-07-23 | |
| 1025 | 除数博弈 | 数学 递推 | 简单 | 2020-07-24 | |
| 410 | 分割数组的最大值 | TODO | 困难 | 2020-07-25 | |
| 329 | 矩阵中的最长递增路径 | TODO | 困难 | 2020-07-26 | |
| 392 | 判断子序列 | TODO | 简单 | 2020-07-27 | |
| 104 | 二叉树的最大深度 | TODO | 简单 | 2020-07-28 | |
| LCP13 | 寻宝 | TODO | 困难 | 2020-07-29 | |
| 343 | 整数拆分 | TODO | 中等 | 2020-07-30 | |
| JD08.03 | 魔术索引 | TODO | 简单 | 2020-07-31 |
2020年8月
| # | 题名 | 知识点 | 难度 | 提交时间 | start |
|---|---|---|---|---|---|
| 632 | 最小区间 | TODO | 困难 | 2020-08-01 | |
| 114 | 二叉树展开为链表 | TODO | 中等 | 2020-08-02 | |
| 415 | 字符串相加 | TODO | 简单 | 2020-08-03 | |
| 207 | 课程表 | TODO | 中等 | 2020-08-04 | |
| 337 | 打家劫舍 III | TODO | 中等 | 2020-08-05 | |
| 336 | 回文对 | TODO | 困难 | 2020-08-06 | |
| 100 | 相同的树 | TODO | 简单 | 2020-08-07 | |
| 99 | 恢复二叉搜索树 | TODO | 困难 | 2020-08-08 | |
| 93 | 复原IP地址 | 递归 | 中等 | 2020-08-09 | |
| 696 | 计数二进制子串 | TODO | 简单 | 2020-08-10 | |
| 130 | 被围绕的区域 | TODO | 中等 | 2020-08-11 | |
| 133 | 克隆图 | TODO | 中等 | 2020-08-12 | |
| 43 | 字符串相乘 | TODO | 中等 | 2020-08-13 | |
| 20 | 有效的括号 | 字符串 栈 | 简单 | 2020-08-14 | |
| 546 | 移除盒子 | TODO | 困难 | 2020-08-15 | |
| 733 | 图像渲染 | TODO | 简单 | 2020-08-16 | |
| 110 | 平衡二叉树 | 二叉树 递归 | 简单 | 2020-08-17 | |
| 109 | 有序链表转换二叉搜索树 | TODO | 中等 | 2020-08-18 | |
| 647 | 回文子串 | TODO | 中等 | 2020-08-19 | |
| 529 | 扫雷游戏 | TODO | 中等 | 2020-08-20 | |
| 111 | 二叉树的最小深度 | 二叉树 dfs | 简单 | 2020-08-21 | |
| 679 | 24 点游戏 | TODO | 困难 | 2020-08-22 | |
| 201 | 数字范围按位与 | TODO | 中等 | 2020-08-23 | |
| 459 | 重复的子字符串 | 字符串 kmp? | 简单 | 2020-08-24 | |
| 491 | 递增子序列 | TODO | 中等 | 2020-08-25 | |
| 17 | 电话号码的字母组合 | TODO | 中等 | 2020-08-26 | |
| 332 | 重新安排行程 | TODO | 中等 | 2020-08-27 | |
| 657 | 机器人能否返回原点 | 哈希表/算术模拟 | 简单 | 2020-08-28 | |
| 214 | 最短回文串 | TODO | 困难 | 2020-08-29 | |
| 557 | 反转字符串中的单词 III | 双指针 | 简单 | 2020-08-30 | |
| 841 | 钥匙和房间 | TODO | 中等 | 2020-08-31 |
2020年9月
| # | 题名 | 知识点 | 难度 | 提交时间 | start |
|---|---|---|---|---|---|
| 486 | 预测赢家 | TODO | 中等 | 2020-09-01 | |
| JZ20 | 表示数值的字符串 | TODO | 中等 | 2020-09-02 | |
| 51 | N 皇后 | TODO | 困难 | 2020-09-03 | |
| 257 | 二叉树的所有路径 | dfs | 简单 | 2020-09-04 | |
| 60 | 第k个排列 | TODO | 中等 | 2020-09-05 | |
| 107 | 二叉树的层次遍历 II | bfs | 简单 | 2020-09-06 | |
TODO | 简单 | 2020-09-07 | |||
TODO | 简单 | 2020-09-08 | |||
TODO | 简单 | 2020-09-09 | |||
TODO | 简单 | 2020-09-10 | |||
TODO | 简单 | 2020-09-11 | |||
| 637 | 二叉树的层平均值 | bfs | 简单 | 2020-09-12 | |
TODO | 简单 | 2020-09-13 | |||
TODO | 简单 | 2020-09-14 | |||
TODO | 简单 | 2020-09-15 | |||
TODO | 简单 | 2020-09-16 | |||
TODO | 简单 | 2020-09-17 | |||
TODO | 简单 | 2020-09-18 | |||
TODO | 简单 | 2020-09-19 | |||
TODO | 简单 | 2020-09-20 | |||
TODO | 简单 | 2020-09-21 | |||
TODO | 简单 | 2020-09-22 | |||
TODO | 简单 | 2020-09-23 | |||
| 501 | 二叉搜索树中的众数 | TODO | 简单 | 2020-09-24 | |
TODO | 简单 | 2020-09-25 | |||
| 113 | 路径总和 II | dfs | 中等 | 2020-09-26 | |
TODO | 简单 | 2020-09-27 | |||
TODO | 简单 | 2020-09-28 | |||
TODO | 简单 | 2020-09-29 | |||
TODO | 简单 | 2020-09-30 |
相关知识点
滚动数组
滚动数组是
DP中的一种编程思想。简单的理解就是让数组滚动起来,每次都使用固定的几个存储空间,来达到压缩,节省存储空间的作用。起到优化空间,主要应用在递推或动态规划中(如01背包问题)。因为DP题目是一个自底向上的扩展过程,我们常常需要用到的是连续的解,前面的解往往可以舍去。所以用滚动数组优化是很有效的。利用滚动数组的话在N很大的情况下可以达到压缩存储的作用。

