自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 运行Kalibr的rosbag包生成工具kalibr_bagcreater报错“No module named ImageFile“

运行kalibr_bagcreater报错"ImportError: No module named ImageFile"

2022-07-28 09:54:44 1194

原创 vSLAM学习笔记——边缘化

BA求解BABABA求解时对目标函数做线性化处理:12∣∣f(x+Δx)∣∣2≈12∑i=1m∑j=1n∣∣eij+FijΔξi+EijΔpj∣∣2(1)\frac{1}{2}||f(x+\Delta x)||^2\approx\frac{1}{2}\sum^m_{i=1}\sum^n_{j=1}||e_{ij}+F_{ij}\Delta\xi_i+E_{ij}\Delta p_j||^2\tag 121​∣∣f(x+Δx)∣∣2≈21​i=1∑m​j=1∑n​∣∣eij​+Fij​Δξi​+Eij​Δ

2022-01-10 16:39:59 842

原创 vSLAM学习笔记——最小化重投影误差求解PnP

BA的定义通常称把相机和三维点放在一起进行最小化的问题为Bundle Adjustment。重投影误差关于相机位姿李代数的一阶变化关系∂e∂δξ=lim⁡δξ→0e(δξ⨁ξ)−e(ξ)δξ=∂e∂P′∂P′∂δξ=−[fxZ′0−fxX′Z′2−fxX′Y′Z′2fx+fxX′2Z′2−fxY′Z′0fyZ′−fyY′Z′2−fy−fyY′2Z′2fyX′Y′Z′2fyX′Z′]\frac{\partial e}{\partial \delta \xi}=\lim_{\delta\xi\to0}\f

2022-01-07 14:41:27 1419

原创 Leetcode刷题笔记——剑指 Offer 41. 数据流中的中位数(困难)

文章目录题目描述解法复杂度分析C++代码实现参考链接题目描述如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。设计一个支持以下两种操作的数据结构:void addNum(int num) - 从数据流中添加一个整数到数据结构中。double findMedian() - 返回目前所有元素的中位数。解法给定一长度为 NNN 的无序数组,其中位数的计算方法

2022-01-07 10:24:11 230

原创 Leetcode刷题笔记——剑指 Offer 19. 正则表达式匹配(困难)

文章目录题目描述解法复杂度分析C++代码实现题目描述请实现一个函数用来匹配包含 '. ’ 和 ‘*’ 的正则表达式。模式中的字符 ‘.’ 表示任意一个字符,而 ‘*’ 表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但与"aa.a"和"ab*a"均不匹配。*示例 4:输入:s = “aab”p = “cab”输出: true解释: 因为 ‘*’ 表示零个或多个,这里 ‘c’ 为 0

2022-01-07 10:02:45 385

原创 vSLAM学习笔记——本质矩阵

记录一下本质矩阵的一些知识点。对极几何x2Tt∧Rx1=0.x_2^Tt^\wedge Rx_1=0.x2T​t∧Rx1​=0.p2TK−Tt∧RK−1p1=0.p_2^TK^{-T}t^\wedge RK^{-1}p_1=0.p2T​K−Tt∧RK−1p1​=0.对极几何的几何意义是O1,P,O2O_1,P,O_2O1​,P,O2​三者共面。对极约束中同时包含了平移和旋转。记:E=t∧RE=t^\wedge RE=t∧R, F=K−Tt∧RK−1F=K^{-T}t^\wedge RK^{-1}F=

2022-01-06 09:09:28 775

原创 Leetcode刷题笔记——剑指 Offer 67. 把字符串转换成整数(中等)

文章目录题目描述解法复杂度分析C++代码实现参考链接题目描述写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽

2022-01-05 10:29:46 174

原创 Leetcode刷题笔记——剑指 Offer 60. n个骰子的点数(中等)

文章目录题目描述解法复杂度分析C++代码实现参考链接题目描述把n个骰子扔在地上,所有骰子朝上一面的点数之和为s。输入n,打印出s的所有可能的值出现的概率。你需要用一个浮点数数组返回答案,其中第 i 个元素代表这 n 个骰子所能掷出的点数集合中第 i 小的那个的概率。示例 1:输入: 2输出: [0.02778,0.05556,0.08333,0.11111,0.13889,0.16667,0.13889,0.11111,0.08333,0.05556,0.02778]解法设输入 nn

2022-01-05 09:30:14 515

原创 Leetcode刷题笔记——剑指 Offer 66. 构建乘积数组(中等)

文章目录题目描述解法复杂度分析C++代码实现参考链接题目描述给定一个数组 A[0,1,…,n-1],请构建一个数组 B[0,1,…,n-1],其中 B[i] 的值是数组 A 中除了下标 i 以外的元素的积, 即 B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。示例:输入: [1,2,3,4,5]输出: [120,60,40,30,24]解法本题的难点在于 不能使用除法 ,即需要 只用乘法 生成数组 BBB 。根据题目对 B[i]B[i]B[i

2022-01-04 14:15:24 282

原创 Leetcode刷题笔记——剑指 Offer 49. 丑数(中等)

文章目录题目描述解题思路复杂度分析C++代码实现参考链接题目描述我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。解题思路丑数的递推性质: 丑数只包含因子 2,3,52, 3, 52,3,5 ,因此有 “丑数 == 某较小丑数 ×\times× 某因子” (例如:10=5×210 = 5 \times 210=5×2)。设已知长度为 nnn 的丑数序列 x1,x2,⋯ ,xnx_1, x_2, \cdots , x_nx1​,x2

2022-01-04 11:24:47 465

原创 vSLAM学习笔记——高斯牛顿法

文章目录高斯牛顿法一、pandas是什么?二、使用步骤1.引入库2.读入数据总结高斯牛顿法提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):import numpy as npi

2021-12-30 14:51:09 866

原创 Leetcode刷题笔记——剑指 Offer 48. 最长不含重复字符的子字符串(中等)

文章目录题目描述解题思路方法一:动态规划+哈希表复杂度分析C++代码实现方法二:动态规划+线性遍历复杂度分析C++代码实现方法三:双指针 + 哈希表复杂度分析C++代码实现参考链接题目描述请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。解题思路长度为 NNN 的字符串共有 (1+N)N2\frac{(1 + N)N}{2}2(1+N)N​ 个子

2021-12-30 10:19:14 587

原创 Leetcode刷题笔记——剑指 Offer 12. 矩阵中的路径(中等)

文章目录题目描述解法:动态规划复杂度分析C++代码实现参考链接题目描述在一个 m*n 的棋盘的每一格都放有一个礼物,每个礼物都有一定的价值(价值大于 0)。你可以从棋盘的左上角开始拿格子里的礼物,并每次向右或者向下移动一格、直到到达棋盘的右下角。给定一个棋盘及其上面的礼物的价值,请计算你最多能拿到多少价值的礼物?示例 1:输入:[[1,3,1],[1,5,1],[4,2,1]]输出: 12解释: 路径 1→3→5→2→1 可以拿到最多价值的礼物解法:动态规划题目说明:从棋盘的左上

2021-12-29 17:31:51 238

原创 Leetcode刷题笔记——剑指 Offer 46. 把数字翻译成字符串(中等)

文章目录题目描述解法:动态规划方法一:字符串遍历复杂度分析C++代码实现方法二:数字求余复杂度分析C++代码实现参考链接题目描述给定一个数字,我们按照如下规则把它翻译为字符串:0 翻译成 “a” ,1 翻译成 “b”,……,11 翻译成 “l”,……,25 翻译成 “z”。一个数字可能有多个翻译。请编程实现一个函数,用来计算一个数字有多少种不同的翻译方法。示例 1:输入: 12258输出: 5解释: 12258有5种不同的翻译,分别是"bccfi", “bwfi”, “bczi”, “mcfi

2021-12-29 10:10:42 421

原创 Leetcode刷题笔记——剑指 Offer 44. 数字序列中某一位的数字(中等)

文章目录题目描述解法复杂度分析C++代码实现参考链接题目描述数字以0123456789101112131415…的格式序列化到一个字符序列中。在这个序列中,第5位(从下标0开始计数)是5,第13位是1,第19位是4,等等。请写一个函数,求任意第n位对应的数字。解法将 101112⋯101112 \cdots101112⋯ 中的每一位称为 数位 ,记为 nnn ;将 10,11,12,⋯10, 11, 12, \cdots10,11,12,⋯ 称为 数字 ,记为 numnumnum ;数字

2021-12-28 21:19:03 162

原创 Leetcode刷题笔记——剑指 Offer 38. 字符串的排列(中等)

文章目录题目描述解法:回溯法复杂度分析C++代码实现参考链接题目描述输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]解法:回溯法对于一个长度为 nnn 的字符串(假设字符互不重复),其排列方案数共有:n×(n−1)×(n−2)…×2×1n×(n−1)×(n−2)…×2×1n×(n−1)×(n−2)…×2×1排列方案的生成

2021-12-28 10:40:14 295

原创 Leetcode刷题笔记——剑指 Offer 20. 表示数值的字符串(中等)

文章目录题目描述解法:有限状态自动机复杂度分析:C++代码实现参考链接题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。数值(按顺序)可以分成以下几个部分:若干空格一个 小数 或者 整数(可选)一个 ‘e’ 或 ‘E’ ,后面跟着一个 整数若干空格小数(按顺序)可以分成一下几个部分:(可选)一个符号字符(’+’ 或 ‘-’)下述格式之一:至少一位数字,后面跟着一个点 ‘.’至少一位数字,后面跟着一个点 ‘.’ ,后面再跟着至少一位数字一个点 ‘.’ ,后

2021-12-27 21:17:13 182

原创 Leetcode刷题笔记——剑指 Offer 16. 数值的整数次方(中等)

文章目录题目描述解法复杂度分析C++代码实现参考链接题目描述实现 pow(x,n)pow(x, n)pow(x,n) ,即计算 xxx 的 nnn 次幂函数(即,xnx^nxn)。不得使用库函数,同时不需要考虑大数问题。解法求 xnx^nxn 最简单的方法是通过循环将 nnn 个 xxx 乘起来,依次求 x1,x2,...,xn−1,xnx^1, x^2, ..., x^{n-1}, x^nx1,x2,...,xn−1,xn ,时间复杂度为 O(n)O(n)O(n) 。快速幂法 可将时间复杂度降

2021-12-27 09:17:09 468

原创 Leetcode刷题笔记——剑指 Offer 14- I. 剪绳子(中等)

文章目录题目描述解法复杂度分析C++代码实现贪心解法参考链接题目描述给你一根长度为 nnn 的绳子,请把绳子剪成整数长度的 mmm 段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m−1]k[0],k[1]...k[m-1]k[0],k[1]...k[m−1] 。请问 k[0]∗k[1]∗...∗k[m−1]k[0]*k[1]*...*k[m-1]k[0]∗k[1]∗...∗k[m−1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长

2021-12-25 13:48:35 515

原创 vSLAM学习笔记——四元数到其他旋转表示的转换

文章目录四元数表示四元数到旋转矩阵四元数到旋转向量四元数表示q=q0+q1i+q2j+q3kq=q_0+q_1i+q_2j+q_3kq=q0​+q1​i+q2​j+q3​k四元数到旋转矩阵R=vvT+s2I+2sv∧+(v∧)2R=vv^T+s^2I+2sv^{\wedge}+(v^\wedge)^2R=vvT+s2I+2sv∧+(v∧)2四元数到旋转向量对上式两侧求迹,得:tr(R)=tr(vvT+s2I+2sv∧+(v∧)2)=v12+v22+v32+3s2−2(v12+v22+v32)

2021-12-25 08:53:41 440

转载 Leetcode刷题笔记——剑指 Offer 12. 矩阵中的路径(中等)

文章目录题目描述解法复杂度分析C++代码实现题目描述给定一个 m×nm × nm×n 二维字符网格 boardboardboard 和一个字符串单词 wordwordword 。如果 wordwordword 存在于网格中,返回 truetruetrue ;否则,返回 falsefalsefalse 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例 1:输入:board = [[“A”,“B”,“

2021-12-23 20:44:16 163

原创 Leetcode刷题笔记——剑指 Offer 13. 机器人的运动范围(中等)

文章目录题目描述解题思路方法一:深度优先遍历DFS复杂度分析C++代码实现方法二:广度优先遍历BFS复杂度分析C++代码实现参考连接题目描述地上有一个m行n列的方格,从坐标 [0,0] 到坐标 [m-1,n-1] 。一个机器人从坐标 [0, 0] 的格子开始移动,它每次可以向左、右、上、下移动一格(不能移动到方格外),也不能进入行坐标和列坐标的数位之和大于k的格子。例如,当k为18时,机器人能够进入方格 [35, 37] ,因为3+5+3+7=18。但它不能进入方格 [35, 38],因为3+5+3+

2021-12-23 11:26:43 359

原创 Leetcode刷题笔记——剑指 Offer 34. 二叉树中和为某一值的路径(中等)

文章目录题目描述方法一:回溯法复杂度分析C++代码实现题目描述给你二叉树的根节点 rootrootroot 和一个整数目标和 targetSumtargetSumtargetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。方法一:回溯法本问题是典型的二叉树方案搜索问题,使用回溯法解决,其包含 先序遍历 + 路径记录 两部分。先序遍历: 按照 “根、左、右” 的顺序,遍历树的所有节点。路径记录: 在先序遍历中,记录从根节点到当前节点的路径

2021-12-20 19:43:42 297

原创 Leetcode刷题笔记——剑指 Offer 07. 重建二叉树(中等)

文章目录题目描述方法一:递归复杂度分析C++代码实现方法二:迭代复杂度分析C++代码实现方法三:分治算法复杂度分析C++代码实现参考连接题目描述输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]方法一:递归对于任意一颗树而言,前序遍历时

2021-12-20 16:55:40 560

原创 Leetcode刷题笔记——剑指 Offer 56 - I. 数组中数字出现的次数(中等)

文章目录题目描述解法:分组异或复杂度分析C++代码实现题目描述一个整型数组 numsnumsnums 里除两个数字之外,其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n)O(n)O(n),空间复杂度是O(1)O(1)O(1)。示例 2:输入:nums = [1,2,10,4,1,4,3,3]输出:[2,10] 或 [10,2]解法:分组异或如果除了一个数字以外,其他数字都出现了两次,对全员进行异或操作,则成对出现的数字的所有位会两两抵消为 000,最终得到的结

2021-12-19 15:08:48 319

原创 Leetcode刷题笔记——剑指 Offer 56 - II. 数组中数字出现的次数 II(中等)

文章目录题目描述解题思路方法一:有限状态自动机复杂度分析:C++代码实现方法二:遍历统计复杂度分析C++代码实现题目描述在一个数组 nums 中除一个数字只出现一次之外,其他数字都出现了三次。请找出那个只出现一次的数字。示例 2:输入:nums = [9,1,7,9,7,9,7]输出:1解题思路如下图所示,考虑数字的二进制形式,对于出现三次的数字,各 二进制位 出现的次数都是 333 的倍数。因此,统计所有数字的各二进制位中 111 的出现次数,并对 333 求余,结果则为只出现一次的数字

2021-12-19 14:16:02 214

原创 Leetcode刷题笔记——剑指 Offer 64. 求1+2+…+n(中等)

文章目录题目描述方法一:递归复杂度分析C++代码实现题目描述求 1+2+...+n1+2+...+n1+2+...+n ,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。方法一:递归如果不加限制地使用递归的方法来实现这道题可以用以下方法来解题:class Solution {public: int sumNums(int n) { return n == 0 ? 0 : n + sumNums(n -

2021-12-18 11:20:39 1083

原创 Leetcode刷题笔记——剑指 Offer 45. 把数组排成最小的数(中等)

文章目录题目描述解法复杂度分析C++代码实现1.快速排序法2.内置函数排序规则的传递性证明题目描述输入一个非负整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。示例 1:输入: [10,2]输出: “102”示例 2:输入: [3,30,34,5,9]输出: “3033459”说明:输出结果可能非常大,所以你需要返回一个字符串而不是整数拼接起来的数字可能会有前导 0,最后结果不需要去掉前导 0解法该题本质上是一个排序问题。设数组 numsnumsn

2021-12-18 10:15:56 353

原创 Leetcode刷题笔记——剑指 Offer 36. 二叉搜索树与双向链表(中等)

文章目录题目描述方法一:中序遍历复杂度分析C++代码实现题目描述输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的循环双向链表。要求不能创建任何新的节点,只能调整树中节点指针的指向。方法一:中序遍历二叉搜索树的中序遍历为递增序列 。将 二叉搜索树转换成一个“排序的循环双向链表” ,其中包含三个要素:排序链表: 节点应从小到大排序,因此应使用中序遍历 “从小到大”访问树的节点。双向链表: 在构建相邻节点的引用关系时,设前驱节点 preprepre 和当前节点 curcurcur ,不仅应构建

2021-12-15 17:25:17 1596

原创 Leetcode刷题笔记——剑指 Offer 33. 二叉搜索树的后序遍历序列(中等)

文章目录题目描述方法一:递归分治复杂度分析C++代码实现方法二:辅助单调栈题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。注:1.后序遍历定义: [ 左子树 | 右子树 | 根节点 ] ,即遍历顺序为 “左、右、根” 。2.二叉搜索树定义: 左子树中所有节点的值 < 根节点的值;右子树中所有节点的值 > 根节点的值;其左、右子树也分别为二叉搜索树。方法一:递归分治终止条件

2021-12-15 14:50:05 3578

原创 Leetcode刷题笔记——剑指 Offer 31. 栈的压入、弹出序列(中等)

文章目录题目描述方法一二、使用步骤1.引入库2.读入数据总结题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。示例 1:输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1]输出:true解释:我们可以按以下顺序执

2021-12-07 11:11:33 125

原创 vSLAM学习笔记——EKF卡尔曼增益计算

今天梳理了MSCKF代码中EKF部分的实现细节,记录一下学习笔记,如有错误请各位大佬指正。文章目录卡尔曼增益公式求解方式代码实现卡尔曼增益公式计算公式如下:Kk=PˇkHT(HPˇkHT+Qk)−1K_k=\check{P}_kH^T(H\check{P}_kH^T+Q_k)^{-1}Kk​=Pˇk​HT(HPˇk​HT+Qk​)−1求解方式关于卡尔曼增益的计算方式有两种,一种是直接根据上面的公式进行计算,另一种是将上述方程转换为线性方程进行求解,具体步骤如下:先将上述方程整体进行转置处理:

2021-12-04 15:07:54 1560

原创 vSLAM学习笔记——特征点三角化

记录最近学习vSLAM的一些理论和代码实现。文章目录三角化的数学描述代码实现三角化的数学描述考虑某路标点 y 在若干个关键帧 k = 1,…,n 中看到。y∈R4R^4R4,取齐次坐标。每次观测为xkx_kxk​=[uku_kuk​, vkv_kvk​,1]T^TT,取归一化平面坐标(这样可以忽略掉内参)。从World系到Camera系的投影矩阵PkP_kPk​=[&R_K&,tkt_ktk​]∈R3×4R^{3×4}R3×4。投影关系:∀k,λkxk=Pky...

2021-12-01 14:24:08 299

原创 Leetcode刷题笔记——剑指 Offer 32 - II. 从上到下打印二叉树 II(简单)

Leetcode刷题笔记——剑指 Offer 32 - II. 从上到下打印二叉树 II(简单)题目描述方法一:层序遍历BFS复杂度分析C++代码参考链接题目描述从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。例如:给定二叉树: [3,9,20,null,null,15,7],返回其层次遍历结果:[[3],[9,20],[15,7]]方法一:层序遍历BFSI. 按层打印:题目要求的二叉树的从上至下打印(即按层打印),又称为二叉树的广度优先搜索(BFS)。B

2021-11-03 10:53:51 249

原创 Leetcode刷题笔记——剑指 Offer 28. 对称的二叉树(简单)

Leetcode刷题笔记——剑指 Offer 28. 对称的二叉树(简单)题目描述方法一:递归复杂度分析C++代码参考链接题目描述请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。方法一:递归从顶至底递归,判断每对节点是否对称,从而判断树是否为对称二叉树。算法流程:isSymmetric(root) :特例处理:若根节点 root 为空,则直接返回 true 。返回值:即 recur(root.left, root.right) ;recu

2021-11-03 10:27:30 473

原创 Leetcode刷题笔记——剑指 Offer 27. 二叉树的镜像(简单)

Leetcode刷题笔记——剑指 Offer 27. 二叉树的镜像(简单)题目描述方法一:递归复杂度分析C++代码方法二:辅助栈(队列)复杂度分析C++代码参考链接题目描述请完成一个函数,输入一个二叉树,该函数输出它的镜像。示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]方法一:递归从根节点开始,递归地对树进行遍历(dfs),并从叶子节点先开始翻转得到镜像。如果当前遍历到的节点 root 的左右两棵子树都已经翻转得到镜像,那么我们只需要交换两棵

2021-11-03 09:02:24 193

原创 Leetcode刷题笔记——剑指 Offer 65. 不用加减乘除做加法(简单)

Leetcode刷题笔记——剑指 Offer 65. 不用加减乘除做加法(简单)题目描述方法一:位运算复杂度分析C++代码参考链接题目描述写一个函数,求两个整数之和,要求在函数体内不得使用 “+”、“-”、“*”、“/” 四则运算符号。示例:输入: a = 1, b = 1输出: 2提示:a, b 均可能是负数或 0结果不会溢出 32 位整数方法一:位运算设两数字的二进制形式 a, ba,b ,其求和 s = a + bs=a+b ,a(i)a(i) 代表 aa 的二进制第 ii 位,

2021-11-02 10:01:48 271

原创 Leetcode刷题笔记——剑指 Offer 53 - II. 0~n-1中缺失的数字(简单)

Leetcode刷题笔记——剑指 Offer 53 - II. 0~n-1中缺失的数字(简单)题目描述方法一:二分法复杂度分析C++代码方法二复杂度分析C++代码参考链接题目描述一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。示例 2:输入: [0,1,2,3,4,5,6,7,9]输出: 8方法一:二分法根据题意,数组可以按照以下规则划分为两部分。左子数组: nums[i]

2021-11-02 09:35:16 281

原创 Leetcode刷题笔记——剑指 Offer 30. 包含min函数的栈(简单)

Leetcode刷题笔记——剑指 Offer 30. 包含min函数的栈(简单)题目描述方法一复杂度分析C++代码参考链接题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈的最小元素的 min 函数在该栈中,调用 min、push 及 pop 的时间复杂度都是 O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.min();

2021-11-01 10:26:26 247

原创 Leetcode刷题笔记——剑指 Offer 06. 从尾到头打印链表(简单)

Leetcode刷题笔记——剑指 Offer 06. 从尾到头打印链表(简单)题目描述方法一复杂度分析C++代码方法二:递归C++代码参考链接题目描述输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。示例 1:输入:head = [1,3,2]输出:[2,3,1]方法一主要思想就是将链表元素压入一个栈中,再从栈顶按顺序读出即可实现倒序。由于函数返回值的要求,所以需要再另外创建一个整形vector对元素进行保存和操作。复杂度分析时间复杂度:O(n)。正向遍历一遍链表,然后

2021-11-01 09:56:20 371

空空如也

空空如也

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

TA关注的人

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