《剑指Offer》从零开始刷题全记录-Java

#数据结构与算法学习之——《剑指Offer刷题》-Java#

完结撒花! 所有代码GitHub地址

开始时间:2020-02-02
博主目前研一,刷题开始的有点晚了哈哈
刷题笔记是先自己写一遍,然后参考师兄的笔记和牛客上大牛的经验总结整理出来最佳的思路和算法,大部分题目还附带了测试用例(在main函数里)
飞一个师兄的刷题博客链接,强迫症福音


题目 难度
NO.1 二维数组中的查找(数组、二分法) ⭐⭐
NO.2 替换空格(字符串、replaceAll函数)
NO.3 从尾到头打印链表(链表、栈、add()前插)
NO.4 重建二叉树(前序、后序遍历&递归&Arrays静态函数copyOfRange) ⭐⭐
NO.5 用两个栈实现队列(栈、队列)
NO.6 旋转数组的最小数字(数组、二分法变式) ⭐⭐⭐
NO.7 斐波那契数列 ⭐⭐
NO.8 跳台阶
NO.9 变态跳台阶(斐波那契数列、公式和规律) ⭐⭐⭐
NO.10 矩形覆盖(斐波那契数列) ⭐⭐
NO.11 二进制中1的个数(位运算、找规律) ⭐⭐
NO.12 数值的整数次方(复现Java pow()函数) ⭐⭐
NO.13 调整数组顺序使奇数位于偶数之前(数组、多指针、辅助数组) ⭐⭐
NO.14 链表中倒数第K个结点(链表、两指针配合) ⭐⭐
NO.15 反转链表(链表、多指针、递归) ⭐⭐
NO.16 合并两个排序的链表(链表、归并、递归)
NO.17 树的子结构(二叉树、递归、短路特点) ⭐⭐⭐
NO.18 二叉树的镜像(二叉树镜像、递归) ⭐⭐
NO.19顺时针打印矩阵(数组、找规律、缩小规模) ⭐⭐
NO.20 包含min函数的栈(辅助栈空间) ⭐⭐
NO.21 栈的压入、弹出序列(栈、数组、多指针、动态规划) ⭐⭐⭐
NO.22 从上往下打印二叉树(二叉树、BFS、队列) ⭐⭐
NO.23 二叉树的后序遍历序列(二叉搜索树、后序遍历、二分查找、递归) ⭐⭐
NO.24 二叉树中和为某一值的路径(二叉树、递归、剪枝、嵌套容器排序) ⭐⭐⭐⭐
NO.25 复杂链表的复制(链表、哈希表、加长链表拆分) ⭐⭐⭐
NO.26 二叉搜索树与双向链表(中序遍历、递归、栈) ⭐⭐⭐
NO.27 字符串的排列(全排列、去重、字典序) ⭐⭐⭐⭐
NO.28 数组中出现次数超过一半的数字(数组、哈希表、在线处理、动态规划) ⭐⭐
NO.29 最小的K个数(数组、partation、最大堆最小堆) ⭐⭐⭐
NO.30 连续子数组的最大和(数组、分治算法、动态规划) ⭐⭐⭐
NO.31 整数中1出现的次数(数学归纳、按位思考) ⭐⭐⭐⭐
NO.32 把数组排成最小的数(数组、巧妙自定义比较器、拼接-String) ⭐⭐⭐
NO.33 丑数(特殊数,找规律,在线处理) ⭐⭐⭐
NO.34 第一个只出现一次的字符(在线处理,哈希表) ⭐⭐
NO.35 数组中的逆序对(归并排序,分治算法,数组) ⭐⭐
NO.36 两个链表的第一个公共结点(链表,等长拼接法,长者先行法,辅助栈) ⭐⭐
NO.37 数字在排序数组中出现的次数(数组、二分查找) ⭐⭐⭐
NO.38 二叉树的深度(二叉树、递归、层序遍历)
NO.39 平衡二叉树(二叉树、递归、后序遍历) ⭐⭐
NO.40 数组中只出现一次的数字(数组、HashMap、位运算、异或) ⭐⭐
NO.41 和为S的连续正数序列(序列数学规律、等差数列、求和公式、边界条件、滑动窗口、动态规划) ⭐⭐⭐
NO.42 和为s的两个数字(有序数组、左右夹逼、多指针移动)
NO.43 左旋转字符串(字符串、库函数、拼接)
NO.44 翻转单词顺序列(字符串、库函数、空格、字符串数组、翻转) ⭐⭐
NO.45 扑克牌顺子(TreeSet、排序) ⭐⭐
NO.46 圆圈中最后剩下的数字 /约瑟夫环问题(公式推导,数学规律,过程模拟LinkedList) ⭐⭐⭐
NO.47 求1到n的和(&&短路特性、位运算、异常处理机制、快速幂分解实现乘法)
NO.48 不用加减乘除做加法(位运算)
NO.49 把字符串转换成整数(字符串、实现库函数、边界条件、越界判断整合)
NO.50 数组中重复的数字(重复值、数组、哈希、in-place、巧妙算法) ⭐⭐
NO.51 构建乘积数组(数组、找规律、动态规划) ⭐⭐
NO.52 正则表达式匹配(字符串、正则表达式、递归、动态规划) ⭐⭐⭐⭐⭐
NO.53 表示数值的字符串(字符串、正则表达式、完整逻辑) ⭐⭐⭐
NO.54 字符流中第一个不重复的字符(字符流、哈希) ⭐⭐
NO.55 链表中环的入口结点(链表、哈希、双指针) ⭐⭐
NO.56 删除链表中重复的节点(链表、哈希、双指针) ⭐⭐
NO.57 二叉树的下一个结点(二叉树,中序遍历,找规律) ⭐⭐⭐
NO.58 对称的二叉树(二叉树,递归,DFS&BFS) ⭐⭐⭐
NO.59 按之字形顺序打印二叉树(二叉树,BFS,queue&stack) ⭐⭐
NO.60 把二叉树打印成多行(二叉树,队列,BFS层序遍历)
NO.61 序列化二叉树(二叉树,序列化(遍历),反序列化(构造),前序、层序遍历) ⭐⭐⭐
NO.62 二叉搜索树的第k个结点(二叉搜索树,中序遍历,递归,栈) ⭐⭐
NO.63 数据流中的中位数(数据流、最大堆、最小堆、中位数、PriorityQueue) ⭐⭐
NO.64 滑动窗口的最大值(数组、在线处理、滑动窗口、单调队列、ArrayDeque) ⭐⭐
NO.65 矩阵中的路径(数组、DFS、回溯法、是否存在路径) ⭐⭐⭐
NO.66 机器人的运动路径(数组、DFS、BFS、最大连通域) ⭐⭐⭐
NO.67 剪绳子(动态规划、贪心、数学推导) ⭐⭐⭐

你可能感兴趣的:(剑指Offer刷题记录,Java)