剑指offer
诗仙跑的贼快
这个作者很懒,什么都没留下…
展开
-
剑指 Offer 27. 二叉树的镜像
算法的思路是递归地对二叉树进行镜像反转。对于任意一个节点,将它的左子树和右子树进行交换,然后递归地对左子树和右子树进行镜像反转。这个过程会一直递归下去,直到叶子节点为止。通过这个过程,整棵二叉树就会被镜像反转,即每个节点的左右子树被交换。将当前节点的左子树指向当前节点的右子树的镜像反转。将当前节点的右子树指向临时变量temp的镜像反转。将当前节点的左子树保存在一个临时变量temp中。如果二叉树为空,直接返回null。实现二叉树的镜像反转算法。原创 2023-07-16 14:53:24 · 64 阅读 · 0 评论 -
剑指 Offer 25. 合并两个排序的链表
【代码】剑指 Offer 25. 合并两个排序的链表。原创 2023-07-14 17:41:46 · 166 阅读 · 0 评论 -
剑指 Offer 24. 反转链表
【代码】剑指 Offer 24. 反转链表。原创 2023-07-11 16:59:30 · 56 阅读 · 0 评论 -
剑指 Offer 22. 链表中倒数第k个节点
时间复杂度:O(n)空间复杂度:O(1)原创 2023-07-06 20:53:02 · 50 阅读 · 0 评论 -
剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
【代码】剑指 Offer 21. 调整数组顺序使奇数位于偶数前面。原创 2023-07-06 20:29:59 · 32 阅读 · 0 评论 -
剑指 Offer 18. 删除链表的节点
【代码】剑指 Offer 18. 删除链表的节点。原创 2023-06-11 21:57:59 · 37 阅读 · 0 评论 -
剑指 Offer 17. 打印从1到最大的n位数
【代码】剑指 Offer 17. 打印从1到最大的n位数。原创 2023-06-07 16:56:53 · 34 阅读 · 0 评论 -
剑指 Offer 16. 数值的整数次方
【代码】剑指 Offer 16. 数值的整数次方。原创 2023-06-07 16:10:32 · 41 阅读 · 0 评论 -
剑指 Offer 15. 二进制中1的个数
【代码】剑指 Offer 15. 二进制中1的个数。原创 2023-06-06 19:53:33 · 38 阅读 · 0 评论 -
剑指 Offer 14- II. 剪绳子 II
【代码】剑指 Offer 14- II. 剪绳子 II。原创 2023-06-06 19:30:48 · 31 阅读 · 0 评论 -
剑指 Offer 14- I. 剪绳子
【代码】剑指 Offer 14- I. 剪绳子。原创 2023-06-06 19:19:24 · 36 阅读 · 0 评论 -
剑指 Offer 13. 机器人的运动范围
/通过深度优先搜索判断机器人能到达的格子数,并对搜索过程做记忆化优化。//sum记录机器人能到达的格子数。//越界或数位和大于k或已访问判断。//创建记忆化数组,初始化全为0。//从(0,0)位置开始搜索。//标记已访问,sum加1。//搜索函数,dfs。原创 2023-05-31 19:12:13 · 34 阅读 · 0 评论 -
剑指 Offer 12. 矩阵中的路径
/如果索引等于单词最后一个字符,说明找到整个单词,返回true。//如果起点字符等于单词第一个字符,开始搜索。//没有找到单词返回false。//将word转成字符数组。//边界或不匹配字符判断。//遍历矩阵所有位置。原创 2023-05-30 23:15:26 · 34 阅读 · 0 评论 -
剑指 Offer 11. 旋转数组的最小数字
【代码】剑指 Offer 11. 旋转数组的最小数字。原创 2023-05-30 20:48:16 · 36 阅读 · 0 评论 -
剑指 Offer 10- II. 青蛙跳台阶问题
【代码】剑指 Offer 10- II. 青蛙跳台阶问题。原创 2023-05-21 17:28:37 · 32 阅读 · 0 评论 -
剑指 Offer 10- I. 斐波那契数列
【代码】剑指 Offer 10- I. 斐波那契数列。原创 2023-05-21 16:58:51 · 33 阅读 · 0 评论 -
剑指 Offer 09. 用两个栈实现队列
Deque 是一种同时具有栈和队列性质的数据结构,具有双向遍历和灵活的操作特点,可以用作 LIFO 栈或 FIFO 队列,其中 ArrayDeque 具有更好的性能和更小的空间开销。Deque 的实现类包括 ArrayDeque 和 LinkedList,其中 ArrayDeque 是一个数组实现的双端队列,具有更好的性能和更小的空间开销。LinkedList 的优点是它具有良好的性能和灵活的操作,可以快速地在链表两端进行插入和删除操作,支持双向遍历,同时也可以用作普通的动态数组。原创 2023-05-19 21:31:20 · 50 阅读 · 0 评论 -
剑指 Offer 07. 重建二叉树
递归调用需要使用栈空间,栈空间的大小取决于递归树的深度,而递归树的深度最大为n。递归调用需要使用栈空间,栈空间的大小取决于递归树的深度,而递归树的深度最大为n。使用HashMap优化了rootIndex的查找时间复杂度为O(1)。遍历前序遍历和中序遍历每个元素一次。遍历前序遍历和中序遍历每个元素一次。原创 2023-05-19 17:10:37 · 45 阅读 · 0 评论 -
剑指 Offer 06. 从尾到头打印链表
【代码】剑指 Offer 06. 从尾到头打印链表。原创 2023-05-16 16:41:56 · 34 阅读 · 0 评论 -
剑指 Offer 05. 替换空格
这里使用了 StringBuilder 类来构建新的字符串,避免了对原数组进行修改,也提高了效率。方法来向 StringBuilder 中添加字符,避免了重复的计数操作。原创 2023-05-13 17:33:37 · 36 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找
优化后的算法基于矩阵的特殊性质,从矩阵的右上角或左下角开始查找,依次排除行或列,直到找到目标数字或者查找完所有数字。第一个算法是暴力枚举法,它的时间复杂度为 O(m * n),其中 m 和 n 分别为矩阵的行数和列数。第二个算法是优化后的算法,它的时间复杂度为 O(m + n),空间复杂度为 O(1)。以上是两个不同算法的 Java 代码,用于在一个二维数组中查找目标数字。原创 2023-05-13 17:03:29 · 32 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字
【代码】剑指 Offer 03. 数组中重复的数字。原创 2023-05-13 16:15:54 · 26 阅读 · 0 评论