前言
这里简单记录下
力扣在线刷题
记录
面试细节总结
- 面试细节:行为面试(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很大的情况下可以达到压缩存储的作用。