- 博客(56)
- 收藏
- 关注
原创 从零开始学习cartographer源码 | 02.cartographer_ros—node_main.cc
在ros中使用cartographer,离不开2个功能包,一个是cartographer,另一个是cartographer_ros,cartographer_ros是cartographer适配ros的rosnode,cartographer是cartographer_ros的库文件。
2024-07-19 13:28:56
397
原创 从零开始学习cartographer源码 | 番外:如何在wsl内使用clion阅读cartographer源码
笔者在安装的时候遇到报错找不到Sphinx,查了一下是一个文档生成的工具,我安装后也无法加载到clion的环境变量内,不装它也不影响我们正常学习cartographer源码。同样的安装步骤笔者笔记本电脑安装毫无问题,从win10升级的win11就无法使用GUI的应用程序,笔者翻遍了CSDN,GitHub都没有解决。参考Windows官方文档安装wsl2,建议安装wsl2,wsl2默认支持wslg,支持ros的各种可视化工具,如rqt,Rviz等。,注意将下面的用户名替换成你自己的用户名。
2024-07-14 15:43:36
2251
1
原创 从零开始学习cartographer源码 | 01.gflags与glog
gflags(Google Flags)是一个用于处理命令行标志的库,主要由Google开发,广泛应用于C++和Python项目中。它提供了一种简洁而强大的方式来定义、解析和使用命令行标志(flags)。Google Logging(glog)是一个由Google开发的C++日志库,提供了一种简单而强大的方式来记录程序的运行信息。glog支持四种日志级别(INFO、WARNING、ERROR和FATAL),可以方便地记录各种类型的日志信息。
2024-07-12 18:22:06
1857
原创 代码随想录算法训练营第六十五天|KM99. 岛屿数量——深搜、KM99. 岛屿数量——广搜、KM100. 岛屿的最大面积
使用递归深度搜索,将每次遇到的岛屿上下左右记录为已经到过,如果遇到没到过的说明它上下左右不是之间遍历过的岛屿,结果计数+1。最后统计计数即可知道有多少个岛屿intbool。
2024-06-24 22:21:19
421
原创 代码随想录算法训练营第六十三天|42. 接雨水、84. 柱状图中最大的矩形
【代码】代码随想录算法训练营第六十三天|42. 接雨水、84. 柱状图中最大的矩形。
2024-06-20 10:40:40
238
原创 代码随想录算法训练营第六十二天|739. 每日温度、496.下一个更大元素 I、503.下一个更大元素II
创建一个单调栈记录已经遍历过的元素,因为结果数组内存的是天数差(温度数组的下标差)所以栈内存的是温度数组的下标。求下一个更大的数所以单调栈内是单调递增的。
2024-06-18 15:50:31
201
原创 代码随想录算法训练营第五十九天|115.不同的子序列、 583. 两个字符串的删除操作、72. 编辑距离、编辑距离总结篇
两个字符串做匹配,dp数组含义基本为s[i-1]为结尾,t[j-1]为结尾的操作次数或子序列个数…为了方便把dp[i][0]和dp[0][j]空出来方便初始化递推公式一般分为s[i-1]==t[j-1]和不等两种情况初始化时候要考虑dp[i][0]和dp[0][j],其他的位置取任意值即可,因为都会被递推公式覆盖遍历顺序都是从左到右,从上到下。有问题时需打印dp数组看和预期是否有差别。
2024-06-16 14:58:21
1026
原创 代码随想录算法训练营第五十六天|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
【代码】代码随想录算法训练营第五十六天|300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组。
2024-06-11 16:44:58
277
原创 代码随想录算法训练营第五十三天|309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费、总结
买卖股票的dp数组dp[i][j],i是第i天的价格,有j是状态,根据题目需要分为持有,不持有,第k次持有,第k次卖出后(买入前),冷却期等。需要了解当前状态可能是由前一天的哪种状态转变过来的。买卖一次:不持有=保持前一天的不持有或当天卖出持有=保持前一天的持有或者当天买入买卖多次:不持有=保持前一天的不持有或当天卖出持有=保持前一天的持有或者当天买入只能买卖2次:第一次持有=保持之前持有或当天买入第一次不持有=保持之前不持有或当前卖出第二次持有=保持之前持有或者当天买入。
2024-06-11 13:53:26
778
原创 代码随想录算法训练营第五十二天|123.买卖股票的最佳时机III 、188.买卖股票的最佳时机IV
确定dp数组以及下标的含义:dp[i][0]:不进行买卖操作;dp[i][1]:第i天第一次持有股票的最大利润;dp[i][2]:第i天第一次不持有股票的最大利润;dp[i][3]:第i天第二次持有股票的最大利润;dp[i][4]:第i天第二次不持有股票的最大利润;dp数组如何初始化://不操作//第一次持有//第一次不持有//第二次持有//第二次不持有确定遍历顺序:从前向后遍历。打印dp数组。int。
2024-06-07 16:46:31
329
原创 代码随想录算法训练营第五十天|198.打家劫舍、213.打家劫舍II、337.打家劫舍III
dp数组表示,每个节点偷当前节点和不偷当前节点可以取得的最大价值。要求当前节点值需要知道左右节点的值,所以是后序遍历。最后再偷根节点和不偷根节点之间取一个最大值即可。偷第一家就不能偷最后一家,偷最后一家就不能偷第一家,分别将两种状态求出,再从二者之间找最大值。两种情况分别可以用上题方法求解。
2024-06-05 23:04:56
394
原创 代码随想录算法训练营第四十九天|139.单词拆分、km56. 携带矿石资源、背包问题总结篇
结果类型不同求最大价值:dp[j]=max(dp[j],dp[j-muns[i]]+value[i])求背包装满的最大物品数:dp[j]=max(dp[j],dp[j-muns[i]]+1),非0下标初始为0。求背包装满的最少物品数:dp[j]=min(dp[j],dp[j-muns[i]]+value[i]),非0下标初始为INT_MAX。求装满有几种装法:dp[j]+=dp[j-num[i]]背包类型不同。
2024-06-04 14:58:19
484
原创 代码随想录算法训练营第四十八天| km57. 爬楼梯、322. 零钱兑换、279.完全平方数
一样,求组成背包重量值时元素的个数,不同的是本题求得是最少个数,474.一和零求的是最大个数。提前准备完全平方数集合,作为物品。
2024-06-03 23:06:20
598
原创 代码随想录算法训练营第四十六天|KM52. 携带研究材料、518. 零钱兑换 II、377. 组合总和 Ⅳ
【代码】代码随想录算法训练营第四十六天|KM52. 携带研究材料、518. 零钱兑换 II、377. 组合总和 Ⅳ。
2024-06-02 20:56:38
371
原创 代码随想录算法训练营第四十五天|1049. 最后一块石头的重量 II、494. 目标和、474.一和零
将所有石头分成2组,两组的重量尽可能相等,差值最小。计算石头总重,再除以2就是目标重量,求要达到该重量能装的石头的最大价值(重量)。
2024-06-01 18:18:46
503
原创 代码随想录算法训练营第四十三天|343. 整数拆分、96.不同的二叉搜索树
【代码】代码随想录算法训练营第四十三天|343. 整数拆分、96.不同的二叉搜索树。
2024-05-29 23:38:32
307
原创 代码随想录算法训练营第四十一天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯
【代码】代码随想录算法训练营第四十一天|509. 斐波那契数、70. 爬楼梯、746. 使用最小花费爬楼梯。
2024-05-27 22:57:27
318
原创 代码随想录算法训练营第三十九天|738.单调递增的数字、968.监控二叉树、总结
找出局部最优并可以推出全局最优,就是贪心,贪心没有固定的解题模式。
2024-05-26 23:13:32
167
原创 代码随想录算法训练营第三十八天|435. 无重叠区间、763.划分字母区间、56. 合并区间
先排序,两个区间有重叠就删一个,要删右边界比较大的,保留右边界较小的。这样才能保证删除最少得区间。
2024-05-24 14:58:04
157
原创 代码随想录算法训练营第三十七天|860.柠檬水找零、406.根据身高重建队列、452. 用最少数量的箭引爆气球
先从大到小排身高,身高相同预设人数小的在前,将数据源进行排序。在按照比自己高的人数将矮的人插入对应的位置。
2024-05-23 23:38:13
259
原创 代码随想录算法训练营第三十六天|1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果
【代码】代码随想录算法训练营第三十六天|1005.K次取反后最大化的数组和、134. 加油站、135. 分发糖果。
2024-05-22 19:26:31
246
原创 代码随想录算法训练营第三十五天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II
【代码】代码随想录算法训练营第三十五天|122.买卖股票的最佳时机II、55. 跳跃游戏、45.跳跃游戏II。
2024-05-21 11:30:45
200
原创 代码随想录算法训练营第三十四天|455.分发饼干、376. 摆动序列、53. 最大子序和
【代码】代码随想录算法训练营第三十四天|455.分发饼干、376. 摆动序列、53. 最大子序和。
2024-05-20 23:02:50
141
原创 代码随想录算法训练营第三十二天|332.重新安排行程、51. N皇后、37. 解数独、总结
标准模板:void backtracking(参数) {if (终止条件) {//控制树形结构在哪一层收获结果,一般通过单层结果的元素数量控制将单层结果存放到结果集中;return;for (选择:本层集合中元素(树中节点孩子的数量就是集合的大小)) {处理节点;backtracking(路径,选择列表);// 递归回溯,撤销处理结果在单一数据源集合内取元素且数据源中没有重复元素void backtracking(数据源,startIndex) {
2024-05-19 21:17:40
1578
原创 代码随想录算法训练营第三十一天|491.递增子序列 、46.全排列、47.全排列 II
【代码】代码随想录算法训练营第三十一天|491.递增子序列 、46.全排列、47.全排列 II。
2024-05-19 17:51:48
209
原创 代码随想录算法训练营第三十天|93.复原IP地址、78.子集、90.子集II
【代码】代码随想录算法训练营第三十天|93.复原IP地址、78.子集、90.子集II。
2024-05-18 22:43:49
132
原创 代码随想录算法训练营第二十九天|39. 组合总和、40.组合总和II、131.分割回文串
【代码】代码随想录算法训练营第二十九天|39. 组合总和、40.组合总和II、131.分割回文串。
2024-05-17 17:53:16
140
原创 代码随想录算法训练营第二十八天|216.组合总和III、17.电话号码的字母组合
【代码】代码随想录算法训练营第二十八天|216.组合总和III、17.电话号码的字母组合。
2024-05-16 22:25:07
121
原创 代码随想录算法训练营第二十五天|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树、总结篇
二叉数的遍历分类:深度优先:前序(中左右)、中序(左中右)、后序(左右中)广度优先:层序遍历二叉树的属性:对称、最大深度、最小深度、子节点个数、平衡、遍历路径、左(右)叶子节点之和、左下角的值、路径总和。二叉树的构造:翻转、构造、构造最大、合并两个二叉树二叉搜索树的属性:搜索二叉搜索树中的节点、判断是不是二叉搜索树、二叉搜索树的最小绝对差、二叉搜索树的众数、二叉搜索树转累加树二叉树的公共祖先、二叉搜索树的公共祖先二叉搜索树的修改和构造:插入节点,删除节点、修剪树、构造树。
2024-05-14 18:58:44
304
原创 代码随想录算法训练营第二十四天|235. 二叉搜索树的最近公共祖先 、701.二叉搜索树中的插入操作、450.删除二叉搜索树中的节点
从根节点向下搜索,如果当前节点数值大于p和q证明需要在左子树范围内搜索;如果当前节点数值都小于p和q,需要在整个右子树中寻找,找到在p和q之间的节点,就是最近的公共祖先节点。
2024-05-13 18:47:34
170
1
原创 代码随想录算法训练营第二十三天|530.二叉搜索树的最小绝对差 、501.二叉搜索树中的众数、236. 二叉树的最近公共祖先
相邻两个节点相等计数器加1,计数大于最大值就更新最大值,然后把之前收集的结果清空,证明之前收集的结果是错的,计数等于最大值就把该节点的值加入结果集。
2024-05-09 23:35:46
168
原创 代码随想录算法训练营第二十二天|654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树
找数组的最大值,最大值左侧是左子树,右侧是右子树。
2024-05-09 19:32:36
145
原创 代码随想录算法训练营第二十一天|513.找树左下角的值 、112. 路径总和、113.路径总和ii、106.从中序与后序遍历序列构造二叉树、105.从前序与中序遍历序列构造二叉树
层序遍历找每层的第一个值。递归找叶子节点记录其深度,如果比先前记录的最大深度大就更新最大深度,同时获取该节点的值。先遍历左节点记录该值,遍历右节点时,深度与左节点相同所以不会更新结果和最大深度。
2024-05-09 16:23:26
289
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人