- 博客(13)
- 收藏
- 关注
原创 【剑指Offer刷题】JZ26树的子结构(中等)
输入两棵二叉树A,B,判断B是不是A的子结构。0 <= A的节点个数 <= 10000。0 <= B的节点个数 <= 10000。我们自顶向下分析问题,然后自底向上确定。这里嵌套了子问题,即树的结构是否相同。与二叉树相关的题目,优先用。
2025-03-31 11:07:19
503
原创 【数据结构与算法】链表(一)
为了解决动态数量的数据存储。所以你说 “用链表的目的是什么”?没目的。或者说,目的是让你学会因地制宜的、灵活的组织数据。
2025-03-23 16:29:24
996
原创 【剑指Offer刷题】JZ16数值的整数次方(中等)
它将幂运算的时间复杂度从 O(n) 降低到 O(log n),非常适合处理大指数的幂运算,尤其在模运算(如取模运算 a^n % mod)中经常使用。快速幂(Fast Power)算法,也叫二分幂算法,是一种高效计算 a^n 的方法。模运算满足以下代数性质,允许我们在递推过程中直接取模,避免数据溢出或简化计算。所以本题使用快速幂,空间复杂度O(1),时间复杂度O(logn)进阶:空间复杂度 O(1) ,时间复杂度 O(n)为什么模运算可以递推,这里问了一下AI。空间复杂度O(1),时间复杂度O(n)。
2025-03-20 15:16:16
681
原创 【剑指Offer刷题】JZ14剪绳子(中等)
给你一根长度为 n 的绳子,请把绳子剪成整数长的 m 段(m、n 都是整数, n > 1 并且 m > 1 , m <= n ),每段绳子的长度记为 k[1] , …例如,当绳子的长度是 8 时,我们把它剪成长度分别为 2、3、3 的三段,此时得到的最大乘积是 18。* 3 * 1 和 3 * 3 * …* 4,4 比 1 更接近 e,且最后两位 3 * 1 < 4,所以余 1 时,与 3 结合保留为 4。* 5,2 比 5 更接近 e,且最后两位 2 * 3 > 5,所以余 2 时,保留 2。
2025-03-20 09:39:30
706
原创 【剑指Offer刷题】JZ13机器人的运动范围(较难)
一个机器人从坐标 [0,0] 的格子开始移动,每一次只能向左,右,上,下四个方向移动一格,但是不能进入行坐标和列坐标的数位之和大于 threshold 的格子。例如,当 threshold 为 18 时,机器人能够进入方格 [35,37] ,因为 3+5+3+7 = 18。但是,它不能进入方格 [35,38] ,因为 3+5+3+8 = 19。threshold = 10 时,100x100的方格可达区域(#)如下图所示,如果用 1. 的思路,计算量比较大。所以采用 2. 搜索时判断的方法。
2025-03-19 12:30:07
313
原创 【剑指Offer刷题】JZ12矩阵中的路径(中等)
路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。矩阵中包含一条字符串 “bcced” 的路径,但是矩阵中不包含 “abcb” 路径,因为字符串的第一个字符b占据了矩阵中的第一行第二个格子之后,路径不能再次进入该格子。其实已经找到一条路径了,可以返回 true 了,但是如果没有找到,需要继续找路径的起点,进行dfs。下面是过程图,橙色表示当前位置,蓝色表示已访问位置,黑色箭头指向下一个满足条件的位置。
2025-03-19 10:43:14
1180
原创 【剑指Offer刷题】JZ11旋转数组的最小数字(简单)
有一个长度为 n 的非降序数组,比如[1,2,3,4,5],将它进行旋转,即把一个数组最开始的若干个元素搬到数组的末尾,变成一个旋转数组,比如变成了[3,4,5,1,2],或者[4,5,1,2,3]这样的。请问,给定这样一个旋转数组,求数组中的最小值。用二分查找法,需要 left,right,mid指针,其中 right 已经在数组1中了,所以保证右区间始终满足条件,在寻找最小的右区间即可。旋转后位于左侧的数组为数组 2(数组 2 可能为空),位于右侧的数组为数组 1,我们就是要找数组1 中第一个元素。
2025-03-18 22:23:11
555
原创 【剑指Offer刷题】JZ8二叉树的下一个节点(中等)
解析:这个组装传入的子树根节点,其实就是整颗树,中序遍历{5,6,7,8,9,10,11},根节点8的下一个节点就是9,应该返回{9,10,11},后台只打印子树的下一个节点,所以只会打印9,如下图,其实都有指向左右孩子的指针,还有指向父节点的指针,下图没有画出来。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示。输入分为2段,第一段是整体的二叉树,第二段是给定二叉树节点的值,后台会将这2个参数组装为一个二叉树局部的子树传入到函数GetNext里面,用户得到的输入只有一个子树根节点。
2025-03-17 10:17:19
324
原创 【Linux系统移植与根文件系统构建】rootfs根文件系统制作学习记录(以100ask_imx6ull_pro开发板为例)
成功进入自制的根文件系统。
2025-03-15 20:59:52
506
原创 【剑指Offer刷题】JZ7 重建二叉树(中等)
给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建出如下图所示。前序遍历的特点:先访问根节点,再访问左子树,左子树返回后再访问右子树。也就是,知道根节点、左子树、右子树其中任意一个在数组中的位置和长度后,便可以确认其序号。中序遍历的特点:先访问左子树,再访问根节点,最后访问右子树。n ≤ 2000,节点的值 −10000 ≤ val ≤ 10000。
2025-03-14 16:17:53
288
原创 在Ubuntu服务器搭建Git仓库,以及Git使用基本流程
介绍了如何在Ubuntu服务器搭建Git仓库介绍了如何使用Git命令介绍了如何使用VsCode集成的Git工具介绍了实用的Git Graph插件使用Git协作来提高效率的例子基于Ubuntu环境Git服务器搭建及使用Git 基本命令汇总手把手教你在VSCode中使用GitGit版本控制:提升开发效率的利器。
2024-05-11 21:53:33
10104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2