自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 ply文件自定义内容

最近开发遇到一个需求,想在ply文件中添加当前抓拍点云时时机器臂的位姿。之前点云和位姿我是用两个文件存储的,但是前几天查资料发现ply文件可以添加一些自定义的内容。但是这样做之后有一个问题,那就是我无法用MeshLab文件打开这个ply文件了。这样实现还是有一些问题。这里插入自定义数据我的做法其实就是在end_header之前添加一些自定义的字段。实际查看发现ply的文件格式还是比较简单的,这里是ply的表头。然后把要插入的数据直接放到文件尾。后面跟着的就是一些点数据。首先我之前的读写方式。

2025-08-14 13:24:20 191

原创 k数和(二) (C++)

在这 n 个数里面找出 k 个不同的数,使得这 k 个数的和等于目标数字,你需要找出所有满足要求的方案(方案顺序不作要求)。这里用到的是递归回溯的方法。其实也可以理解成遍历所有的组合方式,留下符合条件的那几组。优化点就是要裁剪分支。这样遍历过程中如果显现和大于target就可以直接return。给定 n 个不同的正整数,整数 k(1<=k<=n。1<=k<=n)以及一个目标数字。数组 = [1,2,3,4]

2025-07-14 23:00:00 457

原创 图可以被二分么?(C++)

关于图的表示:graph[i] 为一个列表,表示与节点i有边相连的节点。如果一个图是二部图,则意味着我们可以将图里的点集分为两个独立的子集A和B,并且图中所有的边都是一个端点属于A,另一个端点属于B。图中没有自边或者重复的边存在,即: graph[i] 中不包含 i, 也不会包含某个点两次。给定一个无向图 graph, 输出 true 当且仅当这个图是可以被二分的(也叫二部图)。输入: [[1,3], [0,2], [1,3], [0,2]]二分图就是可以把图的节点分成两个集合,任意的一条边的两个节点都。

2025-07-10 21:45:00 243

原创 反转游戏(C++)

翻转游戏:给定一个只包含两种字符的字符串:+和-,你和你的小伙伴轮流翻转"++“变成”–"。当一个人无法采取行动时游戏结束,另一个人将是赢家。这里注意一个点,为什么不用记录当前先手还是后手。这个真的我想了好久。这个题还是要对递归有深刻的理解。感觉我做这个题目还是很吃力的。编写一个函数判断是否能够保证先手胜利。

2025-07-09 23:00:00 158

原创 n 个线程打印 1 - m (C++)

你所需要编写的代码是一个叫做 Solution 的类,其中的 printThreadNumber (在Python 中 是 print_thread_number) 方法被 n 个线程执行,这些线程是同时并发执行的。我们要求你的要打印的数字和线程 id(在 c++ 中线程 id 由函数 printThreadNumber 的参数 threadId 给出)对应,如线程 id 为 1 的线程打印 1、n + 1、2 * n + 1……当 n = 3,m = 5 时,则用 3 个线程打印 12345。

2025-07-08 23:00:00 196

原创 超级棒棒糖(C++)

超人强和猪猪侠都进入了百米赛跑的决赛。猪猪侠的速度为v1,超人强的速度为v2,猪猪侠可以在比赛前吃至多一支超级棒棒糖,现在给定n种超级棒棒糖,第i种超级棒棒能让猪猪侠的速度提高si,而它的价格为wi.给定v1,v2,s,w,请问猪猪侠至少要花多少钱才能在百米赛跑中战胜超人强?对于后两种棒棒糖,由于第三种比较便宜,我们选择第三种,所以返回30。本来以为是一道秒杀题,但是没想到还是出错了。对问题的考虑要全面!另外如果这个题改成可以吃n个棒棒糖,是不是就挺难的?前两种棒棒糖不能给猪猪侠提供足以超过超人强的速度。

2025-07-08 19:30:00 345

原创 链表相交(C++)

当他们指针p1跑到A的终点,再从B的起点开始跑。指针p2跑到B的终点,再从A的起点开始跑。相交点如果存在并且位于 z1, z2 (分别相对于A,B的起点的长度)位置。但其实这两种类型的题目本质是一样的,其实就是通过遍历判断两个指针最终是否能相遇。而这里的遍历都是由不同的方法的。给定两个单链表的头结点 headA 和 headB,找出链表相交时的结点,若链表不相交,则返回 NULL。链表是否有环的判断我之前做过,通过快慢指针看最后是否相交。题目意思很简单,给定两个链表的头,判断他们是否相交。

2025-07-07 16:40:48 222

原创 C++ Auto关键字

auto 作为C++关键字,很实用很方便,参数类型在编译时可以自动识别。用的非常多,但是今天我写代码的时候发现一个点,之前一直没有注意到。参照deepseek的回答,写了一些测试代码发现确实如他所描述的。至于这个规律不太知道怎么去描述比较好。当我调用上面那个接口,我发现auto推导出来的类型是 不带const的。难道是auto默认会丢弃const属性?这一点之前我从来没有关注过。以后如果要确保强制保留的话加上const关键字也是一个不错的方法。下面是一个很简单的函数,返回一个const类型的数据结构。

2025-07-07 11:15:37 157

原创 Qt (UI)

加粗字体就是两个关键的地方,缺一不可。最后发现qss要这样。

2025-07-04 21:00:00 199

原创 连续子数组求和(四)

我第一次做的时候忽略了这个点以为只要找到数组中存在这样的几个数就行了(也就是非连续的)。虽然跟违背了题目本身的目的,但是我觉得我想出来的这个思路也是有一定的价值。因此先把我错误的代码贴上,这里实现的是判断数组中是否存在这样的几个数字。子数组 元素总和为 k 的倍数加 n,即 sum(subarray) % k == n。好的言归正传,现在我们要寻找的是一段连续的区间,那么很显然,上面的这个思路就不适用了。首先我想到的是暴力穷举的方法,但是这个时间复杂度太高了,并不能通过。0 可以看成是 k 的一个倍数。

2025-07-03 20:30:00 195

原创 智能指针的使用(长期更新)

这里介绍的很清楚像上面get()方法返回的值就是对应下面临时的结果,所以本身他是不能被作用与&的。但&(p->get()) 实际上不是你想象的“取出原始指针的地址”,而是“取出 get() 返回值的临时变量的地址”,这没有实际意义。&(m_pointer->get())不合法,因为 get() 返回的是右值(临时变量),不能取地址。首先我上面的写法就是一个简单的语法错误。m_pointer->get() 的类型是 T*,即一个指向对象的指针。& 运算符作用于 T*,得到的是 T**(指向指针的指针)。

2025-07-03 20:00:00 165

原创 停车困境(C++)

停车场里停着许多汽车。停车位是一条很长的直线,每米都有一个停车位。当前很多汽车停放,您想通过建造屋顶来遮雨挡雨。要求至少有k辆车的车顶被车顶遮盖,要覆盖k辆车的车顶的最小长度是多少?解释:您可以建立长度为9的屋顶,覆盖从第2个到第10个的所有停车位,因此在第2、10、8个位置覆盖3辆车,没有较短的可以覆盖3辆车的车顶,所以答案是 9。cars:长度的整数数组,表示停放汽车的停车位。k:整数,表示必须被车顶遮盖的汽车数量。所有车位上面的车都是唯一的。

2025-07-02 19:30:00 247

原创 git使用技巧(合集)

今天要用git做一件事,我更新ui的时候不小心把ui_*.h类似这种编译生成的文件提交上去了,我现在想用一个提交删除git对这个文件的跟踪,但是我不想删除本地的文件。以前只知道可以修改.gitignore可以实现类似这样的效果。今天学习到了一条指令能完美的达到我想要的效果。

2025-07-01 16:40:03 189

原创 C++编码规范

列举了一部分比较常见并且实用的编码规范以及之前开发工作的一些经验。

2025-07-01 15:43:01 132

原创 漂亮子数组

漂亮子数组的定义是具有 numOdds 个奇数元素的任何长度的数组。给定一个由整数组成的数组 nums 以及一个整数 numOdds,找出该数组中所有的漂亮子数组。这个题目的思路其实不难,找到数组所有奇数索引的位置,然后根据给定的numOdds,从头开始便利的们的奇数索引数组,i ~ i+numOdds-1 就是我们的最小漂亮子数组,然后看两边能不能扩展。解释: 有4个子数组中含有两个奇数,例如: [1, 2, 3], [1, 2, 3, 4], [2, 3, 4, 5], [3, 4, 5].

2025-07-01 09:05:30 157

原创 std::ostringstream

今天在lintcode上刷题,看到有一个人的提交用到了std::ostringstream用来输出信息。丰富的格式控制:可以使用 std::hex, std::setprecision 等 I/O 操纵符。看了一下deepseek的回答,他的有点确实还挺多的。STL 容器友好:生成的 std::string 可以直接用于大多数 STL 算法和容器。无需格式指定符:不像 sprintf() 需要 %d, %f 等容易出错的格式字符串。可扩展性:可以通过重载 << 操作符支持自定义类型的输出。

2025-06-30 21:47:16 658

原创 并行课程(C++)

同时存在一个二维数组 relations。其内部每个数组均包含两个课程。其中第一个课程为第二个课程的前置课程。即学习数组中第二个课程之前必须先学习数组中第一个课程。这个问题我把它当成了一个树处理(或者链表也行)。用邻接表的思想,最后按照广度优先去遍历,获取最大的深度。在一个学期中,你可以学习任何数量的课程,前提是你已经在之前的学期中学完了该课程的所有前置课程。返回学习全部课程的最少学期,如果无法完成全部课程的学习,返回 -1。在本题中,存在 n 个课程。其编号为 1 到 n。第三学期:学习 3、4。

2025-06-29 07:07:26 191

原创 回文子串(C++)

这个题目的思路比较清晰,抓住回文字符串的特征就可以,即是中心对称的。给定一个字符串,你的任务是数出有多少个回文子串在这个字符串内。一个子串不同于其他的子串,当且仅当开始和结束位置不同。

2025-06-29 05:55:20 254

原创 摆动排序(C++)

但是其实这里不需要整个排序,因为我们只需要保证整个数组按照题目规定的顺序排列就可以了。解释: 这个问题可能有多种答案, [2, 6, 1, 5, 3, 4] 同样可以.于是换了一种写法,但是感觉也挺丑陋的。如果大家有什么优美的写法,欢迎留言解答一下。第一眼看到这个题目,就想着排序,然后按照小大小大小。上面的代码写完了 感觉里面的对于 i-1和i+1 是否越界的判断很丑陋。输入: [3, 5, 2, 1, 6, 4]输出: [1, 6, 2, 5, 3, 4]

2025-06-26 21:49:32 143

原创 记录我搭建的第一个软件架构

这是一个用于工业控制的手眼标定软件,需要支持多个外设,例如相机,PLC,机器臂。为了让软件能够兼容不同类型的设备,例如我会有多个不同品牌的相机。设计的软件框架如下。有机会慢慢展开解释。

2025-06-26 15:03:35 875

原创 相等树划分

观察这个递归函数 我们能看出来nodeCount最后一个值代表的其实就是整个树的和,也就是根所代表的和。= nodeCount.end() 得到的结果就是错误的!给定一个有 n个节点的二叉树,请问可否在去掉恰好一条边的情况下,将原有的树分成两个节点值总和相等的两个树。其实解题的思路很简单就是 先遍历整个树求和,其次再去看有没有一个树它的子节点+本身的和刚好为和的一半。树的节点的值在[-100000, 100000]范围内。输入: {5,10,10,#,#,2,3}废话不多说 直接上代码。

2025-06-25 21:43:44 250

原创 Qt开发的细节

另外如果你的对象继承自QObject,你应该在cmake构建的时候加上开启 Qt 的自动元对象编译器 set(CMAKE_AUTOMOC ON),才能生成信号和元对象函数。error C2280: “ParameterSet::ParameterSet(const ParameterSet &)”: 尝试引用已删除的函数。原因就在这里了,继承自QObject的对象不能随便拷贝的。上述代码会报错,我们看一下ParameterSet 这个类,为什么他的拷贝构造函数被删除了。

2025-06-23 11:58:08 148

原创 摊平嵌套的列表(C++)

注意 这个题目,如果你在lintcode自定义了测试数据,可能会一直有bug,提示代码运行时间超时,刷新一下网页就好了。被这个问题坑了一晚上!给你一个嵌套的列表,实现一个迭代器将其摊平。一个列表的每个元素可能是整数或者一个列表。

2025-06-22 09:08:01 203

原创 二叉树具有相同值的最长路径(C++)

假设有一棵有 N 个节点的无向树, 编号为 1 到 N, 每一个节点都有一个int类型的值,不同的节点可以有相同的值。给一个长度为N的数组A,A[j]表示第j + 1个节点的值。再给一个长度为 (N - 1) * 2 的数组 E,对于任意的 0 <= j <= N - 2 都有 E[2 * j], E[2 * j + 1]表示节点 E[2 * j] 与节点 E[2 * j + 1]有边相连。返回具有相同值的节点构成的最长路径的长度,路径的长度为 路径上 边的数量。敲重点,下面这一段是错误的代码!

2025-06-19 23:40:53 171

原创 删除二叉查找树的节点(C++)

给定一棵具有不同节点值的二叉查找树,删除树中与给定值相同的节点。如果树中没有相同值的节点,就不做任何处理。整体思路其实很简单只要记住对于二叉查找树 左节点 < 根 < 右节点,但是对于特殊情况的判断要完善。3.特别是对于交换节点的值的时候,怎么去保持交换节点后树的结构。当最大节点存在左子树(因为他是最大的,所以他的右子树一定为空){5,2,6,#,4} 或 {5,4,6,2}a. 如果最大节点的父节点不是要删除的节点。b. 如果最大节点的父节点是要删除的节点。我们找到要删除节点左侧的最大节点。

2025-06-18 23:40:54 271

原创 拼车问题(C++实现)

给定一个数组 trips,其中 trips[i] = [numPassengers, from, to] 表示第 i 词旅行有 numPassengers 名乘客,他们上车和下车的位置分别是 from 和 to。这些位置是从汽车的初始位置向东的公里数。判断是否可以在所有给定的行程中接送 所有乘客,若可以,则返回 true,否则返回 false。车上最初有 capacity 个空位,并且车 只能 向一个方向行驶,期间不会改变方向。

2025-06-17 22:55:16 153

原创 巴什博弈问题(C++实现)

巴什博弈问题

2025-06-16 22:25:51 803

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除