- 博客(17)
- 收藏
- 关注
原创 代码随想录第七天 | LeetCode454 四数相加Ⅱ、LCR007 三数之和、LeetCode18 四数之和、LeetCode383 赎金信
然后进入双指针法,定义双指针,开始判断,在找到一个答案之后,要对双指针进行去重,注意对双指针去重的时机,一定是在找到第一个答案之后去重,否则(0000)这种情况将被遗漏,最后返回结果。首先考虑与四数之和的区别,首先此题目与三数之和、四数之和不同点在于是从不同的数组集合中选取元素,并且构成元组的元素是下标i、j、k、l并不是数组元素本身,所以使用哈希表不用考虑去重的问题,例如虽然1 -2 2 -1 与2 -1 1 -2 元素相同,但是返回的元组是其下标值,最终还是不同的。1.看到题目第一下想法。
2025-01-26 16:20:05
852
原创 代码随想录训练营第六天 | LCR032 有效的字母异位词、LeetCode349 两个数组的交集、LeetCode1 两数之和、LeetCode202快乐数
(3)注意find的返回值,对于stl的一些函数不熟悉,auto iter = map.find(target-nums[i]),find返回的是这个迭代器,如果迭代器不指向end,说明有答案,返回迭代器里的first为key,second为value。(1)不会求各个位置上的数字的平方和,主要是对整数运算不熟悉,包括取余、除法等,求末位需要用到取余,然后再对这个数进行除以10(整数相除只保留整数),然后继续循环下去,就可以获取到各个位置的数字,中间来个+=就可以完成平方和操作。
2025-01-24 19:44:29
587
原创 代码随想录训练营第四天 | LeetCode24 两两交换链表中的节点、LeetCode LCR021 删除链表的倒数第N个节点、LeetCode面试题链表相交、LeetCode142 环形链表
核心为让cur指向被交换的节点前一位,注意循环的结束条件以及交换的核心三个步骤即可这个题是第一道经过长时间学习理论知识后独立做出来的题目,说明不是很难核心在于思路、长短的处理以及返回值的逻辑易错思路最重要,快慢双指针找到相遇点,后续根据相遇点结合示意图得到head、相遇点与环的入口的关系最终求出环的入口while循环嵌套if判断即可完成。
2025-01-18 15:06:35
861
原创 代码随想录训练营第三天 | LeetCode203 移除链表元素、LeetCode707 设计链表、LeetCode206 反转链表
综上,在链表题目中,注意使用虚拟头节点,并且注意三核心步骤:判空、操作、释放细节点:虚拟头节点的定义是new出来的、遍历链表元素用cur。
2025-01-17 16:45:58
711
原创 代码随想录训练营第二天 | LeetCode209.长度最小子数组、LeetCode59.螺旋矩阵、区间和、开发商购买土地
vector<vector<int>> nums (n,vector<int>(n,0)) //定义一个n行的vector,每一行有n个int,即N*N。在通过输入初始化原数组的同时构建新的求和数组,然后分类进行求和,初始为0则直接p[a],如果左边不是0,则需要注意p[b]-p[a-1]理解:首先左侧窗口不变,右侧窗口向后遍历,直到满足target,然后保持右侧窗口不变,左侧窗口开始向右滑动(此。然后分情况讨论,偶数就正常分四种情况讨论,从左上角开始遍历赋值,完成循环后,offset++
2025-01-09 23:40:24
1091
原创 代码随想录算法训练营第一天 | LeetCode704.二分查找、LeetCode27.移除元素、LeetCode977.有序数组的平方
代码随想录训练营学习记录
2025-01-08 22:00:50
354
原创 Hybrid A*
(2)首先,前向积分出许多边,栅格中记录一个节点,搜索继续进行,发现另外一个控制量驱动的状态落在同一个格子里,是否更新取决于现在的状态上的路径累计的代价是否比之前的小,小则更新。(1)在搜索树生长过程中,每当一个状态生长出来时,去直接解到终点状态的理论上的最优控制的路径,如果恰好这个路径时满足动力学约束且不碰撞,则问题解决。(1)在搜索的过程中,选取不同的control input 去前向积分,积分出的state保持在栅格地图中的每一个方格中只记录一个可行的状态。3.剪枝原则:使用grid map剪枝。
2024-07-27 21:48:51
210
原创 Kinodynamic Path Finding
对于左图无人机规划问题,在不考虑动力学约束的情况下(初速度约束)规划出的path应该为紫色实线,kinodynamic planning则规划绿色实线,后端优化只局限在局部,不能改变整体趋势,所以紫色实线在优化为虚线后会拐弯,对比之下绿色虚线轨迹更加平滑。也可以拓展为更高阶的模型,将jerk(加速度的导数)作为u,则状态为位置、速度、加速,得到一个更高维度的A、B矩阵。plan是一个从粗糙到细致的过程;给定一个初始的状态,给定不同的控制输入,让系统到达不同的位置,继续离散控制输入,又会获得不同的位置。
2024-07-27 17:37:43
710
原创 Gitee、GitHub总结
7.git push 别名(gitee 或 github)master 完成上传。(1)如果是从github克隆而来,则别名起为github,即。(2)如果是从gitee克隆而来,则别名起为gitee,即。1.新建github或gitee远程项目,得到ssh链接。(2)ctrl+h 打开隐藏文件、找到.ssh目录。3.git remote add 别名 ssh链接。至此,github与gitee公钥配置成功。2.git clone ssh链接。1.github公钥配置。2.gitee公钥配置。
2024-07-12 14:16:29
145
原创 Dijkstra和A*算法
(2)当弹出的节点为n时,在拓展时,对于n节点所有的邻居节点m,如果m节点未被拓展,则检查m节点的cost g(m),g(m)可不可以通过n进行下降,可以理解为m自身的cost为g(m),如果设定为n走向m时可以将m整体的cost降低,则把cost更新。对于一个高度结构化的地图,有结构化移动的规则,则最短路径是可以计算的,可以理解为一个蚂蚁爬行最短路线问题,所以在结构化的地图中,可以直接计算出h*(n)作为启发式函数。上图中,从整体g+h角度s直接到g的代价为5,上边代价为10,结果与真实路径代价相反。
2024-06-25 14:27:26
968
1
原创 基于搜索的规划基础
图包括节点与边,边分为有方向、无方向、有权重边(1)BFS(Breadth First Search)广度优先算法BFS维护一个队列(queue),use first in first out(2)DFS(Depth First Search) 深度优先算法DFS维护一个栈(stack),use last in first out首先,BFS/DFS根据节点的深浅层级弹出节点贪心算法根据一些规则(heuristic)弹出节点,这个规则可以是与终点的欧氏距离,优点是可以指引正确的拓展方向,容易计算。
2024-06-25 10:51:09
287
原创 通过ros_bridge包进行ros1与ros2的通信
(1)通过小鱼一键安装指令安装(2)在.bashrc文件中注释掉source环境配置部分。
2024-06-08 17:59:54
1106
原创 C++复习_继承
总结:案例中普通实现时,每个页面都需要写重复的头、尾、侧面,只不过内容不同。所以通过继承方式,父类写共同的部分,子类进行继承,只在子类中实现不同的部分,即内容的呈现。
2024-05-25 14:18:19
635
原创 C++复习_多态
父类纯虚函数实现、子类虚函数重写加需求、子类中堆区创建对象在重写中输出(创建string*即指针类型的子类成员变量、在子类构造函数中通过new在堆区创建name对象用子类创建的指针类型成员变量接收,最后在虚函数中解引用输出)、测试函数中创建父类指针指向new出的子类对象,并传入name、指针调用子类虚函数、手动delete子类对象。(2)当父类引用指向子类对象时,也即发生多态时,传入一个子类对象,调用虚函数,此时记录虚函数的地址已经发生替换,所以调用子类的虚函数,完成多态。
2024-05-24 23:53:58
840
1
原创 Ubuntu22.04+Ros2(Humble)turtlebot3仿真环境搭建
根据这篇文章通过git clone安装tutlebot3功能包及其相关依赖,我是双系统,git clone速度有点慢而且会失败,尝试很多次才下好。后边就可以打开环境,打开建图,键盘控制建图了。(1)添加models路径。
2024-03-27 19:36:36
2795
5
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人