剑指offer(完成)
参考资料
- 本系列共68题,leetcode上共75题,
- 其中编号36(426)、37(297)、74(235)、75(236)提交没有Go语言,由括号后的题目是leetcode上相同的题目
- leetcode专栏链接 https://leetcode.cn/problemset/lcof
- http://zhedahht.blog.163.com
- 《剑指Offer》第二版源代码 C++ https://github.com/zhedahht/CodingInterviewChinese2
No. | Title | Tag | 难度 | 完成情况 | |
---|---|---|---|---|---|
第二章:面试需要的基础知识 | |||||
2.2 编程语言 | |||||
面试题1 | 赋值运算符函数 | - | - | - | |
面试题2 | 实现Singleton模式 | - | - | - | |
2.3 数据结构 | |||||
0001 | 面试题3 | 面试题03.数组中重复的数字 | 数组、哈希表 | Easy | 完成 |
0002 | 面试题4 | 面试题04.二维数组中的查找 | 数组、双指针 | Easy | 完成 |
0003 | 面试题5 | 面试题05.替换空格 | Easy | 完成 | |
0004 | 面试题6 | 面试题06.从尾到头打印链表 | Easy | 完成 | |
0005 | 面试题7 | 面试题07.重建二叉树 | 树、递归 | Medium | 完成 |
面试题8 | 二叉树的下一个节点 | - | - | - | |
0006 | 面试题9 | 面试题09.用两个栈实现队列 | 栈、设计 | Easy | 完成 |
2.4 算法和数据操作 | |||||
0007 | 面试题10 | 面试题10- I.斐波那契数列 | 递归 | Easy | 完成 |
0008 | 面试题10- II.青蛙跳台阶问题 | 递归 | Easy | 完成 | |
0009 | 面试题11 | 面试题11.旋转数组的最小数字 | 二分查找 | Easy | 完成 |
0010 | 面试题12 | 面试题12.矩阵中的路径 | 动态规划 | Medium | 完成 |
0011 | 面试题13 | 面试题13.机器人的运动范围 | Medium | 完成 | |
0012 | 面试题14 | 面试题14- I.剪绳子 | 数学、动态规划 | Medium | 完成 |
0013 | 面试题14-II.剪绳子 II | 数学、动态规划 | Medium | 完成 | |
0014 | 面试题15 | 面试题15.二进制中1的个数 | 位运算 | Easy | 完成 |
第三章:高质量的代码 | |||||
3.3 代码的完整性 | |||||
0015 | 面试题16 | 面试题16.数值的整数次方 | 递归 | Medium | 完成 |
0016 | 面试题17 | 面试题17.打印从1到最大的n位数 | 数学 | Easy | 完成 |
0017 | 面试题18 | 面试题18.删除链表的节点 | 链表 | Easy | 完成 |
0018 | 面试题19 | 面试题19.正则表达式匹配 | 动态规划 | Hard | 完成 |
0019 | 面试题20 | 面试题20.表示数值的字符串 | 数学 | Medium | 完成 |
0020 | 面试题21 | 面试题21.调整数组顺序使奇数位于偶数前面 | Easy | 完成 | |
3.4 代码的鲁棒性 | |||||
0021 | 面试题22 | 面试题22.链表中倒数第k个节点 | 链表、双指针 | Easy | 完成 |
面试题23 | 链表中环的入口节点 | - | - | - | |
0022 | 面试题24 | 面试题24.反转链表 | 链表 | Easy | 完成 |
0023 | 面试题25 | 面试题25.合并两个排序的链表 | 分治算法 | Easy | 完成 |
0024 | 面试题26 | 面试题26.树的子结构 | 树 | Medium | 完成 |
第四章:解决面试题的思路 | |||||
4.2 画图让抽象问题形象化 | |||||
0025 | 面试题27 | 面试题27.二叉树的镜像 | 树 | Easy | 完成 |
0026 | 面试题28 | 面试题28.对称的二叉树 | 树 | Easy | 完成 |
0027 | 面试题29 | 面试题29.顺时针打印矩阵 | 数组 | Easy | 完成 |
4.3 举例让抽象问题具体化 | |||||
0028 | 面试题30 | 面试题30.包含min函数的栈 | 栈、设计 | Easy | 完成 |
0029 | 面试题31 | 面试题31. 栈的压入弹出序列 | Medium | 完成 | |
0030 | 面试题32 | 面试题32-I.从上到下打印二叉树 | 树、广度优先搜索 | Medium | 完成 |
0031 | 面试题32-II.从上到下打印二叉树II | 树、广度优先搜索 | Easy | 完成 | |
0032 | 面试题32-III.从上到下打印二叉树III | 树、广度优先搜索 | Medium | 完成 | |
0033 | 面试题33 | 面试题33.二叉搜索树的后序遍历序列 | Medium | 完成 | |
0034 | 面试题34 | 面试题34.二叉树中和为某一值的路径 | 树、深度优先搜索 | Medium | 完成 |
4.4 分解让复杂问题简单化 | |||||
0035 | 面试题35 | 面试题35.复杂链表的复制 | 链表 | Medium | 完成 |
0036 | 面试题36 | 面试题36.二叉搜索树与双向链表 | 分治算法 | Medium | [提交没有Go语言] 426替代 |
0037 | 面试题37 | 面试题37.序列化二叉树 | 树、设计 | Hard | [提交没有Go语言] 297替代 |
0038 | 面试题38 | 面试题38.字符串的排列 | 回溯算法 | Medium | 完成 |
第五章:优化时间和空间效率 | |||||
5.2 时间效率 | |||||
0039 | 面试题39 | 面试题39.数组中出现次数超过一半的数字 | 位运算、分治算法 | Easy | 完成 |
0040 | 面试题40 | 面试题40.最小的k个数 | 堆、分治算法 | Easy | 完成 |
0041 | 面试题41 | 面试题41.数据流中的中位数 | 堆、设计 | Hard | 完成 |
0042 | 面试题42 | 面试题42.连续子数组的最大和 | 分治算法、动态规划 | Easy | 完成 |
0043 | 面试题43 | 面试题43.1~n整数中1出现的次数 | 数学 | Medium | 完成 |
0044 | 面试题44 | 面试题44.数字序列中某一位的数字 | 数学 | Medium | 完成 |
0045 | 面试题45 | 面试题45.把数组排成最小的数 | 排序 | Medium | 完成 |
0046 | 面试题46 | 面试题46.把数字翻译成字符串 | Medium | 完成 | |
0047 | 面试题47 | 面试题47.礼物的最大价值 | 动态规划 | Medium | 完成 |
0048 | 面试题48 | 面试题48.最长不含重复字符的子字符串 | 哈希表、双指针、 Sliding Window |
Medium | 完成 |
5.3 时间效率与空间效率的平衡 | |||||
0049 | 面试题49 | 面试题49.丑数 | 数学 | Medium | 完成 |
0050 | 面试题50 | 面试题50.第一个只出现一次的字符 | 哈希表 | Easy | 完成 |
0051 | 面试题51 | 面试题51.数组中的逆序对 | Hard | 完成 | |
0052 | 面试题52 | 面试题52.两个链表的第一个公共节点 | 链表 | Easy | 完成 |
第六章:面试中的各项能力 | |||||
6.3 知识迁移能力 | |||||
0053 | 面试题53 | 面试题53-I.在排序数组中查找数字I | 数组、二分查找 | Easy | 完成 |
0054 | 面试题53-II.0~n-1中缺失的数字 | 数组、二分查找 | Easy | 完成 | |
0055 | 面试题54 | 面试题54.二叉搜索树的第k大节点 | 树 | Easy | 完成 |
0056 | 面试题55 | 面试题55-I.二叉树的深度 | 树、深度优先搜索 | Easy | 完成 |
0057 | 面试题55-II.平衡二叉树 | 树、深度优先搜索 | Easy | 完成 | |
0058 | 面试题56 | 面试题56-I.数组中数字出现的次数 | Medium | 完成 | |
0059 | 面试题56-II.数组中数字出现的次数II | Medium | 完成 | ||
0060 | 面试题57 | 面试题57.和为s的两个数字 | Easy | 完成 | |
0061 | 面试题57-II.和为s的连续正数序列 | Easy | 完成 | ||
0062 | 面试题58 | 面试题58-I.翻转单词顺序 | 字符串 | Easy | 完成 |
0063 | 面试题58-II.左旋转字符串 | 字符串 | Easy | 完成 | |
0064 | 面试题59 | 面试题59-I.滑动窗口的最大值 | 栈、Sliding Window | Easy | 完成 |
0065 | 面试题59-II.队列的最大值 | 栈、Sliding Window | Medium | 完成 | |
6.4 抽象建模能力 | |||||
0066 | 面试题60 | 面试题60.n个骰子的点数 | Easy | 完成 | |
0067 | 面试题61 | 面试题61.扑克牌中的顺子 | Easy | 完成 | |
0068 | 面试题62 | 面试题62.圆圈中最后剩下的数字 | Easy | 完成 | |
0069 | 面试题63 | 面试题63.股票的最大利润 | 动态规划 | Medium | 完成 |
6.5 发散思维能力 | |||||
0070 | 面试题64 | 面试题64.求1+2+…+n | Medium | 完成 | |
0071 | 面试题65 | 面试题65.不用加减乘除做加法 | Easy | 完成 | |
0072 | 面试题66 | 面试题66.构建乘积数组 | Easy | 完成 | |
第七章:两个面试案例 | |||||
0073 | 面试题67 | 面试题67.把字符串转换成整数 | 数学、字符串 | Medium | 完成 |
0074 | 面试题68 | 面试题68-I.二叉搜索树的最近公共祖先 | 树 | Easy | [提交没有Go语言] 235替代 |
0075 | 面试题68-II.二叉树的最近公共祖先 | 树 | Easy | [提交没有Go语言] 236替代 |