- 博客(67)
- 收藏
- 关注
原创 Vins-Mono系列代码和理论解读<五>.位姿图Pose_graph理论和代码实现细节
快速了解vins-mono的位姿图优化理论和代码实现
2022-06-18 18:45:39 1660 1
原创 矩阵间的求导
最近由于需要手推一些最优化函数的求解公式,因此整理了一下各种矩阵间的求导法则,以方便理解相关库的代码或者自己动手代码实现。二范数类的矩阵求导形如E=∥P∥2E = \left \| P \right \|^{2}E=∥P∥2则有σEσP=2P\frac{\sigma E}{\sigma P} = 2PσPσE=2P2.形如E=∥P−Q∥2E = \left \| P- Q \right \|^{2}E=∥P−Q∥2则有σEσP=2(P−Q)\frac{\sigma E}{
2020-12-28 19:45:57 622
原创 两图像间的单应性矩阵估计
两图像间的单应性矩阵估计单应性矩阵的定义:两图像间的单应性矩阵估计基于一个假设: 这两个图像拍摄的场景在一个平面上或者两图像是由相机发生纯旋转时采集的。当满足这个假设后,就可以根据两图像上提取的匹配特征点集合(至少四对匹配特征点)求出单应矩阵H。这个矩阵H包含了相机内参矩阵K,两视图之间的R/t以及假想平面参数n/d,具体的公式如下式所示,推导过程可参考slam14讲中Page146.p2=K(R−tnTd)K−1p1p_{2} = \mathbf{K}(\mathbf{R}-\frac{\math
2020-12-24 15:05:29 1739
原创 [LeetCode] 849. Maximize Distance to Closest Person @ python
一.题目:给出了一个列表表示一排座位,1代表这个位置有人坐,0代表这个位置没人做。现在需要找一个位置坐,并找出坐在哪个位置时,离旁边人的座位的距离最大,是多少。二.解题思路:我们可以先将座位列表分割开,记录每块部分的大小,取其中最大的一块.同时注意,座位两端的位置要分开考虑.代码如下:class Solution(object): def maxDistToClosest(self...
2019-08-08 14:39:12 174
原创 [LeetCode] 238. Product of Array Except Self @ python
一.题目:给一个数组,求出每个位置的其他所有数的乘积.不能使用除法,时间复杂度要求是O(n).Example:Input: [1,2,3,4]Output: [24,12,8,6]二.解题思路:我们可以设计两个数组来储存每个位置的左边的数的积和右边的数的积.代码如下:class Solution(object): def productExceptSelf(self, ...
2019-08-08 14:18:50 164
原创 [LeetCode] 946. Validate Stack Sequences @ python
一.题目:给定栈的push序列和pop序列,判断两者是否匹配.二.解题思路:我们可以设计这个栈来验证.如果遍历完整个pop序列发现并不能排空栈,那说明其中有问题.代码如下:class Solution(object): def validateStackSequences(self, pushed, popped): """ :type pushe...
2019-08-08 14:00:53 160
原创 [LeetCode] 456. 132 Pattern @ python
一.题目:在一个序列中找到132的模式,就是第一个数小于第二第三个数,且第三个数小于第二个数。二.解题思路:技巧性好强的一道题,实在想不出来...参考别人的博客代码如下:class Solution(object): def find132pattern(self, nums): """ :type nums: List[int] ...
2019-08-08 13:28:33 178
原创 [LeetCode] 402. Remove K-digits @ python
一.题目:给一个用字符串表示的数字,移除字符串中的k个字符,使得结果是最小的.Example 1:Input: num = "1432219", k = 3Output: "1219"Explanation: Remove the three digits 4, 3, and 2 to form the new number 1219 which is the smallest.Ex...
2019-08-08 12:50:35 198 1
原创 [LeetCode] 224. Basic Calculator @ python
一.题目:实现一个基本的计算器,输入为包含"(",")","+","-"," "的字符串,输出运算结果.二.解题思路:这种题肯定是用栈实现,一般建立两个栈(数字栈和符号栈),有以下几种情况:(1)对于数字,注意连续几位都是数字;(2)对于符号,注意符号的优先级代码如下:class Solution(object): def calculate(self, s): ...
2019-08-08 12:19:24 140
原创 [LeetCode] 20. Valid Parentheses @ python
一.题目:给定一个包含’(’, ‘)’, ‘{’, ‘}’, ‘[’ 和 ']'的字符串,判断它是否是有效的.二.解题思路:设计一个栈,遍历字符串,当字母是左括号时压入栈中,当是右括号是看此时栈顶元素是否是对应的左括号.代码如下:class Solution(object): def isValid(self, s): """ :type s: s...
2019-08-08 12:13:19 117
原创 [LeetCode] 622. Design Circular Queue @ python
一.题目:设计一个环形队列数据结构.Example:MyCircularQueue circularQueue = new MyCircularQueue(3); // set the size to be 3circularQueue.enQueue(1); // return truecircularQueue.enQueue(2); // return truecircula...
2019-08-08 11:37:20 127
原创 [LeetCode] 621. Task Scheduler @ python
一.题目:CPU任务调度问题,同样的两个task之间的时间间距不能少于n,否则会用idle填充。问这批task需要多少时间片才能完成。Example:Input: tasks = ["A","A","A","B","B","B"], n = 2Output: 8Explanation: A -> B -> idle -> A -> B -> idle -&g...
2019-08-08 11:21:52 160
原创 [LeetCode] 239. Sliding Window Maximum @ python
一.题目:给定一个数组.还有一个滑动窗口长度k,窗口从最左边滑到最右边.返回每一次窗口中的最大值.Example:Input: nums = [1,3,-1,-3,5,3,6,7], and k = 3Output: [3,3,5,5,6,7] Explanation: Window position Max--------------- ...
2019-08-08 10:48:22 193
原创 [LeetCode] 206. Reverse Linked List @ python
一.题目:反转链表二.解题思路:非递归法:# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# self.val = x# self.next = Noneclass Solution(object): def r...
2019-08-08 00:18:41 133
原创 [LeetCode] 142. Linked List Cycle II @ python
一.题目:判断链表是否存在环路,若有则返回环路路口节点,否则返回-1.二.解题思路:快慢指针法:通过判断快指针和慢指针是否相遇来验证是否存在环路;当快慢指针相遇时,将慢指针指向链表头部,同时两指针移动速度都为1,再次相遇的地方就是环路路口.代码如下:# Definition for singly-linked list.# class ListNode(object):# ...
2019-08-08 00:10:44 93
原创 [LeetCode] 82. Remove Duplicates from Sorted List II @ python
一.题目:给一个排序好的链表,删除其中的重复数字.二.解题思路:设置两个变量pre,cur=pre.next,比较pre.next.val和cur.next.val的值是否相同,若相同则移动cur直至不相同.代码如下:# Definition for singly-linked list.# class ListNode(object):# def __init__(self...
2019-08-07 23:49:31 134
原创 [LeetCode] 236. Lowest Common Ancestor of a Binary Tree @ python
一.题目:求二叉树中两个节点的最近公共祖先.二.解题思路:首先,很通俗的解法就是找到两个节点的路径,然后对两条路径进行判断,分叉口的上一个节点就是这两个节点的最近公共祖先.代码如下:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# se...
2019-08-07 23:41:18 92
原创 [LeetCode] 111. Minimum Depth of Binary Tree @ python
一.题目:给一颗二叉树,求它的最小深度二.解题思路:给定根节点,我们只需要计算它的左子树的最小深度和右子树的最小深度的较小值+1.所以我们的递归函数就出来了,代码如下:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val =...
2019-08-07 23:09:06 118
原创 [LeetCode] 105. Construct Binary Tree from Preorder and Inorder Traversal @ python
一.题目:从前序遍历和中序遍历还原整棵树.二.解题思路:理解前序遍历和中序遍历的特点.代码如下:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x# self.left = None# ...
2019-08-07 23:02:08 86
原创 [LeetCode] 871. Minimum Number of Refueling Stops @ python
一.题目:初始油量startFuel,给一个到达目的地所需的油量target,还有沿途的加油站stations(包括到达加油站所需油量以及储备的油量),求达到目的地所需的最少加油次数,如果到不了返回-1.二.解题思路:首先看到最少加油次数,我们会想到从动态规划上解题.这里设dp[i]表示第i次加油之后可以达到的最远距离.每次遍历到第n个加油站时,我们都需要更新dp[1]-dp[n]之间的所有...
2019-08-07 22:23:45 159
原创 [LeetCode] 451. Sort Characters By Frequency @ python
一.题目:给一个字符串,将它按照字母的个数降序排列.二.解题思路:首先统计字符串中每个字母的个数,然后将键和值放入到堆中,这里注意细节是将值放在前面,这样堆中会默认根据值的大小来建立堆.其实还有一种简单的方法,即利用collections.Counter(s).most_common()这一方法直接得到按个数排列的列表.代码如下:class Solution(object): ...
2019-08-07 20:38:28 170
原创 [LeetCode] 295. Find Median from Data Stream @ python
一.题目:寻找数据流中的中位数,即数据会不断更新,求这个动态过程的中位数.二.解题思路:利用最大堆和最小堆实现,控制两个堆的数量相等.代码如下:class MedianFinder(object): def __init__(self): self.max_heap = [] # for half left self.min_heap = [] ...
2019-08-07 19:41:22 391
原创 [LeetCode] 23. Merge k Sorted Lists @ python
一.题目:合并K个有序链表.二.解题思路:利用最小堆排序,堆中元素为元组(包括链表节点和对应的值),每次取出堆顶元素,并将该元素所在链表的下个节点放入堆中,直至所有链表的节点都已访问.代码如下:# Definition for singly-linked list.# class ListNode(object):# def __init__(self, x):# ...
2019-08-07 18:40:09 105
原创 [LeetCode] 701. Insert into a Binary Search Tree @ python
一.题目:给一个二叉搜索树,和一个待插入的值,要求插入后仍是一颗二叉搜索树.二.解题思路:我们从根节点开始遍历,判断新的节点应该插入它的左子树还是右子树,然后进入更深一层的递归,注意每一层递归都是返回以当前节点为根节点的二叉树.代码如下:# Definition for a binary tree node.# class TreeNode(object):# def __i...
2019-08-07 18:23:13 113
原创 [LeetCode] 450. Delete Node in a BST @ python
一.题目:删除二叉树中指定一节点,并调整二叉树,使结果仍是BST。二.解题思路:我们应该逐个访问树上的节点,如果某个节点的值正好是目标值,那么:若它没有右子树,那么直接用它的左孩子替换它;若它有右子树.那么将它的值和它右子树中的最小节点的值调换。代码如下:# Definition for a binary tree node.# class TreeNode(object):# ...
2019-08-07 17:16:31 161
原创 [LeetCode] 230. Kth Smallest Element in a BST @ python
一.题目:给定一颗二叉查找树,找到其中第k小的元素并返回它的值.二.解题思路:我们可以按照中序遍历的递归框架去找到第k个元素,它肯定是第k小的元素.代码如下:# Definition for a binary tree node.# class TreeNode(object):# def __init__(self, x):# self.val = x#...
2019-08-07 15:39:46 184
原创 [LeetCode] 997. Find the Town Judge @ python
一.题目:寻找小镇子里的唯一一个法官,如果找不到就返回-1.二.解题思路:建立一个入度数组和一个出度数组,遍历图上的每一条边,更新入度数组和出度数组.之后遍历这N个节点,当满足入度为0出度为N-1时说明这个节点就是法官.代码如下:class Solution(object): def findJudge(self, N, trust): """ :...
2019-08-07 15:28:51 228
原创 [LeetCode] 785. Is Graph Bipartite? @ python
一.题目:判断一个无向图是不是二分图。二分图的定义是,可以把一个图划分成两部分,使得图中每条边的两个顶点分别来自这两部分。二.解题思路:参考这位的做法 负雪明烛,逐个遍历图上的节点,同时判断节点和其相邻的节点是否属于同一类别.代码如下:class Solution(object): def isBipartite(self, graph): """ ...
2019-08-07 14:35:51 151
原创 [LeetCode] 969. Pancake Sorting @ python
一.题目:煎饼排序.每次可以把前k个数字进行翻转,问达到有序状态时的翻转模式结果.二.解题思路:首先我们找到数组中的最大值,然后先将它和他前面的所有元素翻转一次,接着将整个数组翻转一次,如此循环最终将所有元素排序.代码如下:class Solution(object): def pancakeSort(self, A): """ :type A: ...
2019-08-07 13:52:35 181
原创 [LeetCode] 215. Kth Largest Element in an Array @ python
一.题目:给定一个数组,找到其中第k大的元素二.解题思路:(1)直接使用heapq库中的函数,代码很简单:class Solution(object): def findKthLargest(self, nums, k): """ :type nums: List[int] :type k: int :rtype: i...
2019-08-07 13:09:55 271
原创 [LeetCode] 148. Sort List @ python
一.题目:在时间复杂度O(n log n) 的情况下对链表排序.二.解题思路:很明显,这道题希望我们利用归并排序的方法对链表进行排序.所以首先我们需要找到链表的中点,可以用快慢指针;寻找链表中点的代码如下: #快慢指针寻找链表中点 slow = head; fast = head while f...
2019-08-07 12:36:41 171
原创 [LeetCode] 33. Search in Rotated Sorted Array @ python
一.题目:有一个不含重复数字的升序数组,可能做了一些旋转操作,给定一个数查询是否存在这个数,若存在返回下标否则返回-1.时间复杂度为O(log n).Example 1:Input: nums = [4,5,6,7,0,1,2], target = 0Output: 4Example 2:Input: nums = [4,5,6,7,0,1,2], target = 3Output...
2019-08-07 11:57:02 126
原创 [LeetCode] Coin Change @ python
一.题目:给一个代表各类硬币数值的数组,还有一个金额,问凑足这个金额的最小硬币数目,如果凑不齐返回-1.二.解题思路:这类问题很明显是用动态规划.直接贴代码吧:class Solution(object): def coinChange(self, coins, amount): """ :type coins: List[int] ...
2019-08-06 23:23:36 192
原创 [LeetCode] 300. Longest Increasing Subsequence @ python
一.题目:给一个数组,求它的最长递增子序列(不要求连续)的长度.二.解题思路:动态规划问题.dp[i]表示以nums[i]结尾的递增子序列的长度.需要用到双重循环.代码如下:class Solution(object): def lengthOfLIS(self, nums): """ :type nums: List[int] :...
2019-08-06 22:55:48 84
原创 [LeetCode] 72. Edit Distance @ python
一.题目:从一个字符串s变换到另一个字符串至少需要多少步,可以删除替换增加.二.解题思路:题中让我们求多少步,可以想到应该需要用动态规划去解题.这里的dp[i][j]表示word1[0:i]要变成word2[0:j]至少需要多少步.代码如下:class Solution(object): def minDistance(self, word1, word2): "...
2019-08-06 21:56:32 127
原创 [LeetCode] 70. Climbing Stairs @ python
一.题目:爬一个n层的楼梯,每一次可以爬两层或者一层,请问到达楼梯顶部时一共有多少种走法?二.解题思路:很显然,这是一道很简单的动态规划题.dp[i]表示爬到第i层时的走法,有状态转移方程为dp[i] = dp[i-1]+dp[i-2]所以代码如下:class Solution(object): def climbStairs(self, n): """ ...
2019-08-06 21:28:46 111
原创 [LeetCode] 32. Longest Valid Parentheses @ python
一.题目:找出一个只包含"(“和”)"的字符串中最长的有效子字符串的长度。有效的意思是指该子字符串中的括号都能正确匹配。Example 1:Input: "(()"Output: 2Explanation: The longest valid parentheses substring is "()"Example 2:Input: ")()())"Output: 4Expla...
2019-08-06 21:03:15 198
原创 [LeetCode] 42. Trapping Rain Water @ python
一.题目:给一个数组,里面都是非负数,求它们困住的水的最大体积是多少?Example:Input: [0,1,0,2,1,0,1,3,2,1,2,1]Output: 6二.解题思路:确定一个位置所能存住的水的体积是由其两边的较短的那根柱子决定的.所以我们首先确定两个变量left_max,right_max,并在遍历数组时更新它们的值.代码如下:class Solution(obj...
2019-08-06 14:51:33 155
原创 [LeetCode] 407. Trapping Rain Water II @ python
一.题目:给定一个m x n的矩阵,其中的值均为正整数,代表二维高度图每个单元的高度,请计算图中形状最多能接多少体积的雨水。二.解题思路:要想知道每个位置的盛水量,我们需要计算它的四邻域高度的最小值.另外,注意到里面位置的盛水量和外围的高度值有关系,所以我们可以从边界开始一层一层往里计算,使用广度优先搜索不断更新每个位置的高度值.代码如下:class Solution(object):...
2019-08-06 14:42:26 266
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人