- 博客(110)
- 收藏
- 关注
原创 踩坑记录 君正T23移植RTL8189FTV
解读代码,MMC0.removal的值为REMOVABLE,而MMC1.removal的值为MANUAL,上面说了SDIO_WiFi口是接在了MMC0上,而君正T23默认是接在了MMC1上,这下说得通了,首先查看原理图,因为板子是公司自己设计的,SDIO_WiFi口是接在了MMC0上,而君正T23默认是接在了MMC1上,因此修改了jzmmc_manual_detect()函数的第一个参数。上面说了SDIO_WiFi口是接在了MMC0上,而君正T23默认是接在了MMC1上,因此极大可能是还有地方没修改完。
2025-03-28 09:21:23
283
原创 踩坑记录 编译WiFi驱动出现重定义,但是检查有没问题
把函数定义从头文件移到源文件(例如ie80211.c)里,然后在头文件中只保留函数声明。// 只保留函数声明// 函数定义。
2025-03-19 11:48:03
236
原创 记录. Reids Win32_Interop.lib和WS2_32.lib冲突
在同时使用Redis连接和socket连接时,遇到了Win32_Interop.lib和WS2_32.lib冲突的问题, 因为我们底层用了socket作为网络通信,也用redis,导致两个库冲突。
2025-02-13 09:35:21
253
原创 [LeetCode] 746.使用最小花费爬楼梯
采用动态规划的方式,先看题目和示例1,题目描述说可以从下标为0或下标为1的台阶开始爬,每次可以爬1or2个台阶,结合示例1,可以发现最终的终点是在数组后面,因此我们dp表开n+1个空间,dp[i]表示到这个台阶需要花费多少步,而dp[n]则是终点;然后理清dp表的元素跟vector cost表的关系方程,dp[i] = min(dp[i-1]+cost[i-1], dp[i-2]+cost[i-2]);- 支付 1 ,向上爬两个台阶,到达下标为 6 的台阶。你将从下标为 1 的台阶开始。
2024-12-18 11:13:01
337
原创 [分布式即时通讯系统] 注册类完善
这里要注意的是,因为我们的global.h文件会被包含在多个.cpp文件中,因此我们的repolish包装器的声明和定义需要分开来,否则在链接的时候会报重定义的错。接下来项目中添加global.h和global.cpp文件,global.h声明repolish函数,global.cpp用来定义这个函数。接下来实现获取验证码的逻辑,ui里关联get_code按钮的槽事件,并实现槽函数。关键字用于声明一个变量或函数是在另一个文件或同一个文件的其他位置定义的。在Register的构造函数中添加样式设置。
2024-12-12 14:05:51
428
原创 [C++并发编程] 线程基础
因为线程的启动在底层是模板实现,并且嵌套多个函数,引用类型在传参的时候涉及到引用降级(引用折叠),最后传递给change_param函数的参数是个右值,因此会报错,所以我们需要使用引用显示转换, std::ref()来传参。线程发起后,可能新的线程还没立即执行,或者还没执行完成,主线程就执行完了,此时子线程就会被回收,回收时会调用线程的析构函数,执行terminate操作。当我们创建的线程要调用的回调函数的参数为引用类型的时候,需要将参数显示转化为引用对象传递给线程的构造函数。时,传递给这个线程的参数。
2024-11-30 23:50:58
478
原创 [分布式即时通讯系统] 简介和登录、注册页面设计
本项目为C++全栈聊天项目实战,前端基于QT实现气泡聊天对话框,支持添加好友,好友通信,聊天记录展示等功能。仿微信实现聊天布局和qss优化,后端采用分布式设计,分为GateServer网关服务,多个ChatServer分布式承载用户聊天连接,EmailServer用来验证和收发邮件,各服务通过grpc通信,网关对外采用http服务,聊天服务采用asio实现tcp可靠长链接通信和转发。用户数据通过msql存储并且基于mysqlconnector手动封装连接池,包括redis连接池,以及grpc连接池等。
2024-11-26 00:33:55
994
原创 [LeetCode] 面试题08.01 三步问题
有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。因此状态转移方程可以表示为dp[i] = dp[i-3] + dp[i-2] + dp[i-1];小孩从dp[i-3]一次上3阶;小孩从dp[i-2]一次上2阶;小孩从dp[i-1]一次上1阶;其实这题跟 "第N个泰波那契数" 是一类型的,动态规划即可。
2024-11-03 16:41:38
344
原创 [LeetCode] 1137. 第N个泰波那契数
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2。妥妥的动态规划,需要注意的是泰波那契数是从0开始,因此第n个泰波那契数,我们需要开的空间是n+1个。不过,做完后发现,我们始终是只需要四个int变量,因此我们可以采用滚动数组的方式来进行空间优化。,请返回第 n 个泰波那契数 Tn 的值。(空间优化 -- 滚动数组版本)
2024-11-03 15:40:38
404
原创 [LeetCode] 37. 解数独
在开始的时候先根据表格对三个数组进行初始化,之后进行dfs遍历,如果插入的值不符合题目要求,就返回false给上一层,让上一层换一个数字。// 判断3x3网格。这题跟 "有效数独" 和 "N皇后" 都是同一类型的题,因此我们可以借。编写一个程序,通过填充空格来解决数独问题。数独部分空格内已填入了数字,空白格用。
2024-10-30 22:10:09
732
原创 [LeetCode] 36. 有效的数独
其实这题跟 "N皇后" 那道题差不多,甚至可以说 "N皇后" 是这道题的升级版。以外,空格内其他数字均与 示例1 相同。但由于位于左上角的 3x3 宫内有两个 8 存在, 因此这个数独是无效的。之后遍历9x9网格,如果遇到数字,则判断它所在的行和列以及所在的3x3网格中是否是唯一存在即可。// 判断3x3网格。,验证已经填入的数字是否有效即可。除了第一行的第一个数字从。
2024-10-30 20:58:04
825
原创 [LeetCode] 51. N皇后
x和y都是变量,b是常量,因此我们用b作为下标来来记录正对角线上是否存在"皇后",但是有个问题就是y-x的值可能为负数,因此我们需要改变一下正对角线函数,y-x+n = b+n;而b的最大值为n,n的取值范围为[1,9],因此我们bool数组的大小设置为20个bool;其实这题前面的dfs差别不大,只要理清楚递归结束条件,是否需要及如何剪枝,何时递归,怎么设计回溯即可,唯一上难度的点就是需要画图,借助bool数组变量判断插入的位置是否跟其他"皇后"冲突。而这个'b',就是我们题目提供的n;
2024-10-29 22:31:18
282
原创 [LeetCode] 526. 优美的排列
dfs暴力枚举即可,借助bool check[] 来记录是否遍历过该数字。当pos == n + 1时,代表遍历完了,递归结束。假设有从 1 到 n 的 n 个整数。用这些整数构造一个数组。- perm[1] = 1 能被 i = 1 整除。- perm[2] = 2 能被 i = 2 整除。- perm[1] = 2 能被 i = 1 整除。- i = 2 能被 perm[2] = 1 整除。),只要满足下述条件。
2024-10-28 22:40:27
250
原创 [LeetCode] 784. 字母大小写全排序
其实这题很简单,遍历string中的每个元素,每次遍历的时候分两步走,一步是不需要进行大小写转换,这次直接插入char元素,然后进入下一次遍历;另一步是进行大小写转换,不过需要注意的是,如果在进行大小写转换的时候,发现需要转换的元素是数字的话,那就直接跳过,不需要任何改动,也不需要记录,否则ret中会出现多余的string,因为 “不需要进行大小写转换” 这一步已经帮我们做了该做的事。中的每个字母转变大小写,我们可以获得一个新的字符串。所有可能得到的字符串集合。
2024-10-28 22:09:19
368
原创 [LeetCode] 494. 目标和
其实这题跟 “子集” 那道题有点像,把nums内的元素看成一棵树,父节点的两个子节点可以分别表示为+下一个元素或者-下一个元素。当pos == nums.size()时,则代表遍历完成,此时只需要判断sum是否==target即可。
2024-10-26 19:53:14
538
原创 [LeetCode] 22. 括号生成
当右括号的数量==题目要求n时,说明无需再往下递归,将path结果插入到ret中即可。什么时候可以加 '('?当左括号的数量小于题目要求n的时,就可以➕左括号;代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且。理清楚什么时候可以加 '(',什么时候可以加 ')'即可。当右括号的数量小于左括号时,就可以➕右括号;
2024-10-26 15:55:26
357
原创 [LeetCode] 17. 电话号码的字母组合
递归结束条件很简单,就是当我们的pos指针遍历完digits时,将path插入到vecor ret即可。先将号码与对应的字符串建立hash,确定采用dfs之后,确定好递归结束条件,剪枝,递归,回溯这几个部分。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。回溯,dfs执行完后,将path最后一个字符pop掉即可。的字符串,返回所有它能表示的字母组合。递归,遍历完digits的单个字母后,进行dfs。剪枝,这题不需要剪枝。
2024-10-26 15:30:04
264
原创 [LeetCode] 47. 全排列Ⅱ
要理清这三步,脱不开画决策树。画了决策树之后,我们就可以从根节点开始模拟写代码了。给定一个可包含重复数字的序列。返回所有不重复的全排列。
2024-10-26 15:03:35
367
原创 [LeetCode] 1863. 找出所有子集的异或总和再求和
[5,1,6] 的异或总和为 5 XOR 1 XOR 6 = 2。- [1,3] 的异或总和为 1 XOR 3 = 2。- [5,1] 的异或总和为 5 XOR 1 = 4。- [5,6] 的异或总和为 5 XOR 6 = 3。- [1,6] 的异或总和为 1 XOR 6 = 7。每个子集的全部异或总和值之和为 480。- [1] 的异或总和为 1。- [3] 的异或总和为 3。- [5] 的异或总和为 5。- [1] 的异或总和为 1。- [6] 的异或总和为 6。
2024-10-24 22:08:40
262
原创 [LeetCode] 78. 子集
以nums:[1,2,3]为例,第一层是空,第二层的话的节点有第一层的节点插入“1”,得到两个节点:[]和[1],第三层的节点分别为第二层的节点再选择是否插入“2”,第四层同理。其实这道题,第一次写的话,不动手画个决策树还真的挺容易出错的。我们可以画个决策树,根节点为空(第1层),根节点除外,每层的节点为上一层的节点再选择是否插入nums。当我们要插入的数的下标 i == nums.size()时,说明遍历完了,此时需要将结果插入到ret中。返回该数组所有可能的子集(幂集)。
2024-10-24 21:22:11
320
原创 [LeetCode] 46. 全排列
跟 "二叉树所有路径" 那道题差不多,全局变量vector ret来存储结果,全局变量vetcor path来记录函数调用路径,bool use[7]来记录哪些nums已排列。当path的长度和nums的长度相等时,说明nums已遍历完,递归结束,将path结果插入到ret中。给定一个不含重复数字的数组。
2024-10-24 15:04:32
370
原创 [LeetCode] 257. 二叉树的所有路径
典型的dfs深度优先遍历,涉及到回溯,在递归回溯的过程中,我们可以借助临时变量传参的设计来记录上一层节点的路径。,返回所有从根节点到叶子节点的路径。给你一个二叉树的根节点。是指没有子节点的节点。
2024-10-23 21:57:40
288
原创 [LeetCode] 230. 二叉搜索树中第K小的元素
其实这道题的思路跟 "验证二叉搜索树" 几乎没差别,都是利用二叉搜索树的特性,同时借助全局变量和、dfs深度优先遍历以及剪枝策略。
2024-10-23 19:56:25
289
原创 [LeetCode] 98. 验证二叉搜索树
利用二叉搜索树的特点,中序遍历之后,得到的结果是升序排序的。借助prevNum和flag变量,前者用来记录上一次遍历的值并且初始化为类型最小数值,后者用来实现剪枝。不过需要注意的是,节点的val值可能是-2的31次方,即int的最小值,而二叉搜索树不存在两个节点的val值相同的情况,因此prevNum的类型应该是long,并且初始化为LONG_MIN。
2024-10-23 19:13:13
164
原创 [LeetCode] 814. 二叉树剪枝
典型的决策树,采用后序深度优先遍历即可,先遍历左子树,再遍历右子树,返回nullptr的条件只有:要么节点原本就是nullptr;要么左右节点都是nullptr且val==0。只有红色节点满足条件“所有不包含 1 的子树”。,此外树的每个结点的值要么是。返回移除了所有不包含。
2024-10-22 22:28:34
502
原创 [LeetCode] 2331. 计算布尔二叉树的值
典型的深度优先遍历(dfs)题型,抽象化之后的模型就是,如果该节点有孩子节点,则先获取其左右孩子节点的bool值,再返回左右孩子逻辑运算后的值;如果没有孩子节点,则直接返回val对应的bool值。
2024-10-22 20:17:03
421
原创 [LeetCode] 50. Pow(x, n)
采用快速幂的思路,即假如要求2的21次方,那2的21次方= 2的10次方*2的10次方*2,2的10次方=2的5次方*2的5次方,以此类推......不过需要注意的是,假如n为负数,那我们需要的答案为1.0/pow(x, -n),然而-2的31
2024-10-22 19:40:56
389
原创 [LeetCode] 24. 两两交换链表中的节点(递归)
接着再交换节点,然后不要忘了将上一步交换完后或者多出来的那个节点连接上。就比如1->2->(n-2),两两交换完后,不要忘记连接上后面的(n-2),2->1->(n-2)。给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。因为是两两交换,可能存在头节点为空或者有多出来的第奇数个的节点,因此我们需要先找到这个多出来的节点。递归就是要将问题抽象化。这题可以直接用循环模拟实现交换,也可以用递归实现。
2024-10-21 21:56:41
250
原创 [LeetCode] 21. 合并两个有序链表
这题明显可以用递归来完成,递归结束条件是当某一个链表为空时,返回另一条链表。而相同的部份则是找出较小val的那个链表,list_min->next= min(list_min->next->val, list_max->val);新链表是通过拼接给定的两个链表的所有节点组成的。将两个升序链表合并为一个新的。
2024-10-21 20:26:59
448
原创 [LeetCode] 面试题08.06 汉诺塔问题
一开始,所有盘子自上而下按升序依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面)。当需要移动的盘子有n个的时候,先把n-1个盘子移动到help柱子上,再将剩下那个移动到dst柱子上,最后再将help柱子上的n-1个盘子移动到dst柱子上。当需要移动的盘子有2个的时候,先把最上面的移动到中间的柱子(即help柱子),再把剩下的移动到dst柱子上,最后再将help柱子的盘子移动到dst柱子上。当需要移动的盘子只有一个的时候,直接移动到dst柱子即可。(3) 盘子只能叠在比它大的盘子上。
2024-10-21 15:38:17
231
原创 [LeetCode] LCR 114. 火星词典
第一个点,题目的意思是words是按照外形语言排序顺序排完序的词组,根据词组判断是否有矛盾。比如 "wrt" 和 "wrf",wrt在前面,说明t的顺序在f前面;"wrt" 和 "er" ,wrt在前面,说明w在e前面。其实前面的bfs拓扑排序都刷了的话,这道题就难在两个点:1. 能不能读懂题目;第二个点,意思是s1: abc, s2: ab,理论的话s2的顺序应该是在s1前面,但是如果words里的s1在s2前面的话,说明矛盾。现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同。
2024-10-20 22:10:30
547
原创 [LeetCode] 210. 课程表II
要学习课程 3,你应该先完成课程 1 和课程 2。并且课程 1 和课程 2 都应该排在课程 0 之后。总共有 2 门课程。要学习课程 1,你需要先完成课程 0。因此,正确的课程顺序为[0,1]。其实这道题跟 "课程表" 几乎没差别,唯一的差别就是一个是返回属否合理,一个是返回排序结果。因此,一个正确的课程顺序是 [0,1,2,3]。另一个正确的排序是[0,2,1,3]。1. 提取头节点,将该节点存入ret数组中,并且对该节点的相邻节点去边。2.判断邻居节点的入度是否为0,若为0则加入到队列中。
2024-10-20 16:07:17
365
原创 [LeetCode] 207. 课程表
若存在入度不为0的节点,则说明我们所构建的有向图中存在环的情况,这种情况就是题目所提供的例2,是不合法不存在的,所以返回false;若不存在入度不为0的节点,则说明我们所构建的有向图是AOV图,这种情况就是题目所提供的例1,是合法存在的,所以返回true。学习课程 1 之前,你需要先完成课程 0;并且学习课程 0 之前,你还应先完成课程 1。学习课程 1 之前,你需要完成课程 0。2.判断邻居节点的入度是否为0,若为0则加入到队列中。在选修某些课程之前需要一些先修课程。,表示如果要学习课程。
2024-10-20 15:47:10
462
原创 [LeetCode] 1162. 地图分析
其实这道题跟 "01矩阵" 几乎没差别,就是多源bfs,唯一的区别就是在外扩的时候顺便找到距离最大值,会 "01矩阵" 就会这道题,建议可以先去做一下 "01矩阵",我认为是多源bfs的最佳基础题。请你找出一个海洋单元格,这个海洋单元格到离它最近的陆地单元格的距离是最大的,并返回该距离。海洋单元格 (1, 1) 和所有陆地单元格之间的距离都达到最大,最大距离为 2。海洋单元格 (2, 2) 和所有陆地单元格之间的距离都达到最大,最大距离为 4。,上面的每个 单元格 都用。这两个单元格之间的距离是。
2024-10-19 16:44:02
375
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人