- 博客(34)
- 资源 (1)
- 收藏
- 关注
原创 给定K个排好序的数组,对其进行merge,merge后的数组依旧是排好序的
输入数组如下:std::vector<std::vector<int>> vecs = {{9,8,4,4,-1},{12,4,1,-3},{13,7,2}};排序算法如下:std::vector<int> sortSortedVecs(std::vector<std::vector<int>> &vecs){ if(vecs.empty()){ return std::vector<
2021-08-01 13:17:00
204
原创 Word Ladder II
126. Word Ladder IIHardA transformation sequence from word beginWord to word endWord using a dictionary wordList is a sequence of words beginWord -> s1 -> s2 -> ... -> sk such that:Every adjacent pair of words differs by a single letter.
2021-07-25 14:57:18
186
原创 PlantUML使用
https://crashedmind.github.io/PlantUMLHitchhikersGuide/index.html
2021-06-20 17:36:05
151
原创 python cv2 读写yaml
https://docs.opencv.org/master/dd/d74/tutorial_file_input_output_with_xml_yml.html
2021-05-25 23:12:43
576
原创 二叉树迭代中序遍历
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), right(nullptr) {} * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} *.
2020-11-07 09:56:05
104
原创 数据结构与算法-优先级队列
定义1)满二叉树:一个高为hhh的二叉树,如果其节点个数等于2h−12^h-12h−1,则是一个满二叉数。2)完全二叉树:将满二叉数从根节点开始按层从上到下从左到右编号,如果将满二叉树编号最大的若干个(可以是0个)节点删除的话,形成的新树就是一个完全二叉树3)大(小)根树:是这样的一颗树,树中每个节点的值都大于(小于)或等于其子节点(如果有子节点的化)的值。注意这里并没有要求是二叉树,可以多任意叉数)4)大(小)根堆堆堆:既是大(小)根树,又是完全二叉树。注意这里必须是完全的且是二叉的树。...
2020-08-02 17:48:24
160
原创 dynamic_cast用法总结
dynamic_cast是C++ RTTI技术之一,那么它的应用场景是什么呢?我觉得学习一个东西得先明白它的应用场景,有了应用场景才明白为什么需要它。dynamic_cast应用场景C++是具有多态性的语言,有时候我们会面临这样的情况:手头只有一个基类类型的指针,但我们却希望用它来获取一些派生类中的相关信息,比如调用派生类的成员函数或者访问派生类的成员变量等,那么此时我们就需要用到dynamic_cast。它能够进行指针(或引用)安全的类型向下转换(downcasting,即从基类类型的指针转换为派生类
2020-05-24 09:35:04
1891
原创 ubuntu1604 安装nvidia-docker cuda10.2 cudnn 7.6.5
docker镜像是分层的,每一层都依赖前一层,所以下面的安装步骤不能颠倒顺序。1、登录https://hub.docker.com/,搜索nvidia/cuda2、下载10.2-base-ubuntu16.04 (10.2/base/Dockerfile)文件到自己指定的目录,例如~/MyDocker中。cd ~/MyDockersudo docker build -f Dockerfil...
2020-05-06 18:02:42
1404
原创 最长回文子串--动态规划
最长回文子串–动态规划给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: “babad”输出: “bab”注意: “aba” 也是一个有效答案。示例 2:输入: “cbbd”输出: “bb”来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/longest-palindrom...
2020-05-05 12:27:20
188
原创 选择排序
思想:每次从待排序的数据中选出最小的数,将其放在已排序的数据的后面#include <iostream>using namespace std;/*** @brief 选择排序算法。其时间复杂度为 (n-1)n/2次比较 * @param data[] 输入待排序的数据* @param n 数组data的长度*/void selectSort(in...
2020-05-01 22:49:03
117
原创 gpu/impl/PQScanMultiPassNoPrecomputed.cu(27): error: function "faiss::gpu::isSupportedNoPrecomputedS
faiss编译错误,参考链接faiss issues 1159解决方法:删除PQScanMultiPassNoPrecomputed.cu和gpu/impl/PQCodeDistances.cu文件
2020-04-25 11:42:48
262
原创 Pytorch Tensor的操作记录
[python]t = torch.tensor([[[1,1,1,1],[2,2,2,2]],[[3,3,3,3],[4,4,4,4]],[[5,5,5,5],[6,6,6,6]]])>>> ttensor([[[1, 1, 1, 1], [2, 2, 2, 2]], [[3, 3, 3, 3], [4, 4, 4,...
2020-04-24 23:35:33
138
原创 PoseGraph公式推导记录
问题:已知量测ciR^ci+1{^{c_i}}\hat{R}_{c_{i+1}}ciR^ci+1和cit^ci+1{^{c_i}}\hat{t}_{c_{i+1}}cit^ci+1,如何对ciRw{^{c_i}}R_wciRw,citw{^{c_i}}t_wcitw,ci+1Rw{^{c_{i+1}}}R_wci+1Rw,ci+1tw{^{c_{i+1}}}t_wci+1...
2020-04-12 10:01:24
402
1
原创 Ransac EPnP
Ransac EPnP1、主体思想1)在给定的一批2d-3d匹配关系中(包含一定比例的错误匹配),通过随机采样的方法进行多次采样最小子集数量的点,来求解所需的变量,就可以避免outliner的影响。2) EPnP:将世界坐标系中的所有3D点利用4个控制点CjwC_j^wCjw线性组合表示,如果能够求解出这四个控制点在camera坐标系下的坐标,即CjcC_j^cCjc,就可以求解出所有...
2020-04-04 11:13:02
1404
1
原创 C++编程准则学习记录
1、视C++为一个语言联邦,包含C语言、object-oriented C、泛型编程、STL四种次语言。编程准则的需要根据我们具体使用哪种次语言而定。2、尽量让#define多休假。也就是可以利用const或enum来代替#define定义的常量。用模板inline函数代替类似函数的#define宏。#define定义的常量没有private属性。对于类专属的常量,通常定义为static con...
2020-01-06 23:09:37
111
原创 OpenCV cv::Mat是否发生了深拷贝?
cv::Mat change(cv::Mat mat){ cv::Mat m5 = mat;//未发生数据拷贝 m5.at<float>(0,0) = 1000;//所有mat里这这个值都变成了1000!!!! return m5;//未发生数据拷贝}int main(){cv::Mat m1 = cv::Mat::eye(4,4,CV_32F);cv::Mat...
2020-01-01 17:25:37
498
原创 ubuntu 1604安装cuda 10.1 ,cudnn 10.1,pytorch 1.3.1 ,libtorch
文章目录1、安装cuda10.12、安装cudnn 10.13、安装pytorch3.1 libtorch3.2 pytorch1、安装cuda10.1从这里下载cuda10.1的toolkitscuda 10.1下载链接按下图选择安装步骤就按照Base Installer中的四句指令来安装,第二句的指令cuda-repo-<version> 需要修改,在执行弯第一句指令后...
2019-12-08 22:10:17
2743
原创 输出一个字符串所有字符的排列组合
def PermutationAndCombination(s1,s2=''): if len(s1) == 1 or len(s1) == 0: print(s2+s1) return for index in range(len(s1)): s3 = s1[0:index] + s1[index+1:len(s1)] ...
2019-11-27 10:45:32
761
原创 DBoW和KeyFrameDatabase使用记录
这篇博客旨在记录一下DBoW和KeyFrameDatabase的小细节,以防后面再忘掉。18年初的时候参考ORB slam做重定位和闭环检测挖过DBoW里的代码,没想到过了一年多很多代码细节就记不清了。这次干脆记下来吧。文章目录一、DBoW1、模板定义2、模板应用3、字典初始化4、图像描述子向BowVector和FeatureVector转换5、由两帧的BowVector计算两帧的相似度得分6、...
2019-11-24 18:30:55
800
1
原创 右值引用,移动构造,移动赋值
1、目的右值引用,移动构造和移动赋值是在C++11中引入的,其目的是为了提升代码效率2、使用场景类中如果有需要申请动态资源的成员,那么定义移动构造函数和移动赋值运算符可以避免不必要的拷贝工作,从而提升代码效率。移动构造和移动赋值并不会新开辟资源,而是将源对象的一部分或全部资源移交给了新对象。std::move()的作用是将一个左值转换为右值,但它并没有进行真正的内存移动操作。3、代码举例...
2019-10-17 23:34:54
189
原创 Sophus + ceres做 SE3(位姿)优化可能掉进的坑
利用Sophus和ceres做位姿优化可能掉进的坑这个问题和数据存储顺序及update时使用的exp操做有关Eigen内部Quaterniond地址存储地址和初始化构造函数中参数的顺序是不一致的。1、初始化Quaterniond(w,x,y,z)其中w是实部,x,y,z对应三个轴的虚部但是这个Eigen内部的Quaterniond的数据存储顺序不一样,存储顺序x,y,z,w。2、Sop...
2019-09-28 22:03:01
2171
1
原创 Leetcode 链表题5
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。示例 1:输入: 1->2->3->3->4->4->5输出: 1->2->5示例 2:输入: 1->1->1->2->3输出: 2->3/** * Definition for singly-linked list....
2019-09-16 22:38:07
126
原创 链表4
给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1->2->3->4->5->NULL, k = 2输出: 4->5->1->2->3->NULL解释:向右旋转 1 步: 5->1->2->3->4->NULL向右旋转 2 步: 4->5-&...
2019-09-15 17:35:17
80
原创 链表题2
合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6/** * Definition for singly-linked list. * struct ListNode { * ...
2019-09-15 16:23:55
138
原创 链表题1
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1->2->3->4->5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1->2->3->5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗?/** * Definition for singly-linked list....
2019-09-15 16:20:14
119
原创 链表题
给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。示例 :给定这个链表:1->2->3->4->5当 k = 2 时,应当返回: 2->1->4->3->5当 k = 3 时,应当返回: 3->2->...
2019-09-15 16:16:20
108
原创 shared_ptr简单应用
shared_ptr 是C++共享指针,往往应用在动态分配内存的场景下。相较于new操作符的优势在于shared_ptr共享指针可以自动进行动态内存释放,而new必须与delete配合使用,否则会造成内存泄露。shared_ptr还可以作为class的成员,以使该class的对象能够共享数据。下面的代码进行了一下简单的实践。#include <iostream>#include ...
2019-09-01 09:53:26
328
原创 constexpr和常量表达式
constexpr和常量表达式常量表达式常量表达式是指不会改变且在编译过程中就能计算出来的表达式。字面值是常量表达式,用常量表达式初始化的const对象也是常量表达式。一个对象或表达式是不是常量表达是由它的数据类型和初始值共同决定。例:const int a = 10;//常量表达式const int b = a + 5;//常量表达式int c = 3;//不是常量表达式con...
2019-08-19 23:17:00
98
原创 C++ 顶层const和底层const
顶层const和底层const当我们定义指针和变量的时候,有时候希望定义成const型,就是不希望程序中改变自己定义的变量,一旦有代码试图改变定义好的const型的变量,在编译的时候就会直接报错。指针本身也是一个变量对象,指针所指的变量也是一个变量对象。当定义const int *p = &i的时候是指针不可变还是变量i不可变呢?这就涉及大了顶层const和底层const的概念。如下的...
2019-08-18 10:46:01
127
原创 C++类的隐式类型转换和explicit关键字
C++类的隐式类型转换和explicit关键字文章目录C++类的隐式类型转换和explicit关键字C++类的隐式类型转换explicit关键字C++类的隐式类型转换当我们为一个C++ class定义单参数的构造函数时,该构造函数实际上也同时定义了隐式的类型转换,即将参数类型转换为所定义的class类型,这个隐式的转换函数称为转换构造函数。如下,定义一个Person.h中定义一个Person...
2019-08-17 19:27:24
189
翻译 李群李代数 简明教程
李群李代数 简明教程slam算法中往往需要用到李群李代数的一些知识,最近看到一个李群李代数的简明教程,翻译下来做个学习记录,可能有的地方翻译的不准文章目录李群李代数 简明教程2.4 李群2.4.1 光滑流形和李群2.4.2 群2.4.3 李群矩阵2.4.4切空间光滑路径定义定义:一个路径的切向量定义:一个空间的切向量$O(3)$和$SO(3)$的切空间2.4.5 指数映射$SO(3)$上的指数...
2019-08-11 21:36:54
1109
6
原创 C++异常检查学习记录
C++异常检查学习记录1、标准异常头文件2、代码实践C++异常检查throw (expression)抛出某种类型的异常, try catch语句捕获并处理异常。throw(expression)try{ }catch(){ }1、标准异常头文件expection头文件,定义最通用的异常类expection。它只报告异常的发生,不提供额外的信息。stde...
2019-08-11 11:00:18
606
ceres_pnp.tar.gz
2019-09-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人