- 博客(38)
- 资源 (3)
- 收藏
- 关注
原创 leetcode刷题36——丑数系列
1.丑数给你一个整数 n ,请你判断 n 是否为 丑数 。如果是,返回 true ;否则,返回 false 。丑数 就是只包含质因数 2、3 和/或 5 的正整数。class Solution {public: bool isUgly(int n) { if(n==0) return false; while(n!=1) { if(n%5==0) n/=5; else if(n%3==0)
2021-04-26 12:35:40 885
原创 leetcode刷题35——二叉树的最近公共祖先系列
1.二叉搜索树的最近公共祖先给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”考察知识点:递归class Solution {public: TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
2021-04-22 16:01:22 159
原创 leetcode刷题34——存在重复元素系列
1.存在重复元素给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。考察知识点:哈希表class Solution {public: bool containsDuplicate(vector<int>& nums) { unordered_map<int,int> mp; for(int i=0;i<nums.size();++
2021-04-22 15:54:45 141
原创 leetcode刷题33——打家劫舍系列
1.打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。考察知识点:动态规划class Solution {public: int rob(vector<int>& nums) { int n=nums.size
2021-04-20 20:43:02 146
原创 leetcode刷题32——链表排序系列
1.对链表进行插入排序对链表进行插入排序。插入排序算法:(1)插入排序是迭代的,每次只移动一个元素,直到所有元素可以形成一个有序的输出列表。(2)每次迭代中,插入排序只从输入数据中移除一个待排序的元素,找到它在序列中适当的位置,并将其插入。(3)重复直到所有输入数据插入完为止。class Solution {public: ListNode* insertionSortList(ListNode* head) { ListNode* dummy=new ListNode
2021-04-19 20:25:57 304
原创 leetcode刷题31——二叉树的遍历系列
1.二叉树的前序遍历给你二叉树的根节点 root ,返回它节点值的前 遍历。递归解法:迭代解法:2.二叉树的中序遍历给定一个二叉树的根节点 root ,返回它的中序遍历。递归解法:迭代解法:3.二叉树的后序遍历给定一个二叉树的根节点 root ,返回它的后序遍历。递归解法:迭代解法:...
2021-04-19 18:44:34 237
原创 leetcode刷题30——单词拆分系列
1.单词拆分给定一个非空字符串 s 和一个包含非空单词的列表 wordDict,判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。说明:拆分时可以重复使用字典中的单词;你可以假设字典中没有重复的单词。考察知识点:动态规划class Solution {public: bool wordBreak(string s, vector<string>& wordDict) { vector<bool> dp(s.size()+1,fals
2021-04-19 15:09:26 188
原创 leetcode刷题29——只出现一次的数字系列
1.只出现一次的数字给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。说明:你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗?考察知识点:位运算class Solution {public: int singleNumber(vector<int>& nums) { for(int i=1;i<nums.size();++i) nums[0]^=nums[i];
2021-04-19 12:39:06 324
原创 leetcode刷题28——买卖股票的最佳时机系列
1.买卖股票的最佳时机给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择某一天买入这只股票,并选择在未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0 。class Solution {public: int maxProfit(vector<int>& prices) { int sum=0,ans
2021-04-18 15:18:15 701
原创 leetcode刷题27——杨辉三角系列
1.杨辉三角给定一个非负整数numRows,生成杨辉三角的前numRows 行。在杨辉三角中,每个数是它左上方和右上方的数的和。考察知识点:动态规划class Solution {public: vector<vector<int>> generate(int numRows) { vector<vector<int>> ans(numRows); for(int i=0;i<numRows;++i)
2021-04-18 13:31:27 104
原创 leetcode刷题26——填充二叉树节点指针系列
1.填充每个节点的下一个右侧节点指针给定一个完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。考察知识点:递归class Solution {public:
2021-04-17 22:22:31 153
原创 leetcode刷题25——构造二叉树系列
1.从前序与中序遍历序列构造二叉树根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。考察知识点:递归class Solution {public: TreeNode* buildTree(vector<int>& preorder, vector<int>& inorder) { return Tree(0,preorder.size()-1,0,inorder.size()-1,preorder,inord
2021-04-17 20:01:39 149
原创 leetcode刷题24——二叉树的深度系列
1.二叉树的最大深度给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。考察知识点:递归class Solution {public: int maxDepth(TreeNode* root) { if(!root) return 0; return max(maxDepth(root->left),maxDepth(root->right))+1; }};
2021-04-17 19:54:52 219
原创 leetcode刷题23——二叉树的层序遍历系列
1.二叉树的层序遍历给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)。DFS解法:class Solution {public: vector<vector<int>> ans; vector<vector<int>> levelOrder(TreeNode* root) { dfs(root,0); return ans; } void dfs(T
2021-04-17 17:29:49 137
原创 leetcode刷题22——二叉搜索树系列
1.不同的二叉搜索树给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?考察知识点:动态规划结题思路:假设n个节点存在二叉排序树的个数是G(n),1为根节点,2为根节点,…,n为根节点;当1为根节点时,其左子树节点个数为0,右子树节点个数为n-1,同理当2为根节点时,其左子树节点个数为1,右子树节点为n-2,所以可得G(n) = G(0)G(n-1)+G(1)(n-2)+…+G(n-1)*G(0)。class Solution {public: int numTrees(i
2021-04-17 13:44:01 375
原创 leetcode刷题21——求众数系列
1.求众数给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。你可以假设数组是非空的,并且给定的数组总是存在多数元素。考察知识点:摩尔投票法class Solution {public: int majorityElement(vector<int>& nums) { int n=0,num; for(int i=0;i<nums.size();++i) {
2021-04-17 12:47:48 183
原创 leetcode刷题20——搜索矩阵系列
1.搜索二维矩阵编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:每行中的整数从左到右按升序排列;每行的第一个整数大于前一行的最后一个整数。考察知识点:二分查找思路:若将矩阵每一行拼接在上一行的末尾,则会得到一个升序数组,我们可以在该数组上二分找到目标元素。代码实现时,可以二分升序数组的下标,将其映射到原矩阵的行和列上。class Solution {public: bool searchMatrix(vector<vector<int&g
2021-04-16 15:06:03 246
原创 leetcode刷题19——删除排序链表中的重复元素系列
1.删除排序链表中的重复元素存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素只出现一次 。返回同样按升序排列的结果链表。递归解法:class Solution {public: ListNode* deleteDuplicates(ListNode* head) { if(!head) return head; if(head->next&&head->val==
2021-04-16 14:40:18 219
原创 leetcode刷题18——子集系列
1.子集给你一个整数数组nums,数组中的元素互不相同 。返回该数组所有可能的子集(幂集)。解集不能包含重复的子集。你可以按任意顺序返回解集。考察知识点:DFSclass Solution {public: vector<vector<int>> ans; vector<int> v; vector<vector<int>> subsets(vector<int>& nums) {
2021-04-16 13:41:25 172
原创 leetcode刷题17——计算器系列
1.基本计算器给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。1 <= s.length <= 3 * 105;s 由数字、’+’、’-’、’(’、’)’、和 ’ ’ 组成;s 表示一个有效的表达式。考察知识点:括号展开、栈class Solution {public: int calculate(string s) { stack<int> st; st.push(1); int sign
2021-04-16 13:14:06 304
原创 leetcode刷题16——爬楼梯系列
1.爬楼梯假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?考察知识点:动态规划class Solution {public: int climbStairs(int n) { if(n == 1){return 1;} if(n == 2){return 2;} int a = 1, b = 2, temp; for(int i = 3; i <= n;
2021-04-16 12:17:55 220
原创 leetcode刷题15——路径总和系列
1.路径总和给你二叉树的根节点 root 和一个表示目标和的整数 targetSum ,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和 targetSum。叶子节点是指没有子节点的节点。考察知识点:DFSclass Solution {public: bool hasPathSum(TreeNode* root, int targetSum) { if(!root) return false; if(!root->lef
2021-04-15 10:44:45 225
原创 leetcode刷题14——不同路径系列
1.不同路径一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?考察知识点:动态规划class Solution {public: int uniquePaths(int m, int n) { vector<vector<int>> dp(m,vector<int>(n));
2021-04-14 22:21:13 187
原创 leetcode刷题13——螺旋矩阵系列
1.螺旋矩阵给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。考察知识点:模拟class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { vector <int> v; int up=0, down = matrix.size()-1, left=0, right
2021-04-14 21:23:52 283
原创 leetcode刷题12——区间系列
1.合并区间以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。请你合并所有重叠的区间,并返回一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间。考察知识点:排序class Solution {public: vector<vector<int>> merge(vector<vector<int>>& intervals) { sort(in
2021-04-14 18:55:57 193
原创 leetcode刷题11——旋转排序数组系列
1.搜索旋转排序数组整数数组 nums 按升序排列,数组中的值 互不相同 。在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], …, nums[n-1], nums[0], nums[1], …, nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。给你旋转后的数组nums和
2021-04-14 11:28:08 350
原创 leetcode刷题10——环形链表系列
1.环形链表给定一个链表,判断链表中是否有环。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。如果链表中存在环,则返回 true 。 否则,返回 false 。考察知识点:快慢指针class Solution {public: bool hasCyc
2021-04-13 18:32:37 96
原创 leetcode刷题9——反转链表系列
1.反正链表反转一个单链表。递归解法:class Solution {public: ListNode* reverseList(ListNode* head) { if (!head || !head->next) return head; ListNode* newHead = reverseList(head->next); head->next->next = head;
2021-04-13 17:12:14 198
原创 leetcode刷题8——合并链表系列
1.合并两个有序链表将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。递归解法:class Solution {public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if (l1 == nullptr) { return l2; } else if (l2 == nullptr)
2021-04-13 16:49:44 180
原创 leetcode刷题7——跳跃游戏系列
1.跳跃游戏给定一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标。考察知识点:贪心算法解题思路:(1)如果某一个作为 起跳点 的格子可以跳跃的距离是 3,那么表示后面 3 个格子都可以作为 起跳点。(2)可以对每一个能作为 起跳点 的格子都尝试跳一次,把 能跳到最远的距离 不断更新。(3)如果可以一直跳到最后,就成功了.bool canJump(vector<int>& num
2021-04-13 14:33:27 438
原创 leetcode刷题6——组合系列
1.组合给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。考察知识点:DFSclass Solution {public: vector<vector<int>> ans; vector<int> vec; vector<vector<int>> combine(int n, int k) { dfs(n,k,0); return ans; }
2021-04-13 11:25:23 187
原创 leetcode刷题5——排列系列
1.下一个排列实现获取 下一个排列 的函数,算法需要将给定数字序列重新排列成字典序中下一个更大的排列。如果不存在下一个更大的排列,则将数字重新排列成最小的排列(即升序排列)。必须 原地 修改,只允许使用额外常数空间。考察知识点:两遍扫描思路:1.首先从后向前查找第一个顺序对(i,i+1),满足 a[i] < a[i+1]。这样「较小数」即为a[i]。此时 [i+1,n)必是下降序列。2.如果找到了顺序对,那么在区间 [i+1,n)中从后向前查找第一个元素 j 满足 a[i] < a
2021-04-12 12:51:02 284
原创 leetcode刷题4——整数与罗马数字互转系列
1.整数转罗马数字考察知识点:查表法class Solution {public: string intToRoman(int num) { int values[]={1000,900,500,400, 100,90,50,40, 10,9,5,4,1}; string reps[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; string s="";
2021-04-11 17:20:38 115
原创 leetcode刷题3——回文串系列
1.最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。考察知识点:动态规划用 P(i,j)表示字符串s的第i到第j个字母组成的串是否为回文串,状态转移方程为class Solution {public: string longestPalindrome(string s) { vector<vector<int>> dp(s.length(), vector<int>(s.length())); string
2021-04-11 16:42:01 444
原创 leetcode刷题2———子串系列
1.无重复字符的最长子串给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。class Solution {public://i表示字串起始位置,j表示子串终止位置。当未出现重复时,字符串的长度即为字符串的结束位置减去起始位置。//出现重复时,重复字符位置如果在原起始位置前,则起始位置不用更新;如果在原起始位置后,则用重复字符的位置去更新起始位置。 int lengthOfLongestSubstring(string s) { int maxlen=0;
2021-04-10 23:32:36 242
原创 leetcode刷题1——两数之和系列
两数之和给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。考察知识点:哈希表class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { unordered_ma.
2021-04-10 21:06:09 250
原创 线扫激光点云拼接——运动机构法
假设线扫激光已经可以得到单帧点云。滑台运动方向标定:其中(xstart,ystart,zstart)是标定板初始位姿在相机坐标系下的坐标,(xend,ystart,zstart)是标定板最终位姿在相机坐标系下的坐标。再将(△x,△y,△z)单位化即可得到滑台的运动方向。在相机坐标系下拼接的坐标变换矩阵为其中l为滑台运动的位移。转台旋转轴线标定:方法有多种,这里给出其中一种较简单的方法。通过共面参照物标定的方法测出一个平面上的特征点在旋转过程中几个位置处的空间坐标,然后对分别对每个点做圆拟
2021-04-09 21:03:25 2551
原创 pointnet语义分割_训练并预测自己的数据
没想到吧。。时隔一年我又回来了。这一年因为一些原因放弃了一些东西,也学到了一些东西。这几天想用深度学习做一下点云的分割试验,网上搜了一下相关标题的blog有很多,但大部分只是简单的介绍文章内容,干活并不多。经过五天的摸索,在缺乏相关资料和帮助的情况下,本人大致搞清楚了pointnet进行sem_seg的流程。可能步骤存在问题甚至是错的,因为也没有人交流,但从试验结果看来还行。欢迎阅读我的其他文章:windows下运行pointnet(全)windows下运行pointcnn训练首先准备自己的数据
2021-04-05 15:45:25 11895 131
两百行C++代码实现yolov5车辆计数部署
2024-06-10
pyqt界面 计算树木las点云的树高、胸径、地径和冠幅面积
2024-06-01
点云裁剪界面qt+pcl+vtk
2024-05-27
自动驾驶环境感知网课视频
2023-11-11
ICP算法的几种不同实现
2023-11-05
yolov5+SORT多目标跟踪
2023-08-24
机械臀位姿估计与抓取网课视频
2023-08-17
三维点云网课视频(七套)
2023-08-17
yolov5目标检测多线程Qt界面
2023-08-12
yolov5目标检测多线程C++部署
2023-08-12
《从零搭建一套结构光3D重建系统》网课视频
2023-08-06
《机械臂抓取从入门到实战》课程视频及配套资料
2023-08-06
Qt+PCL+VTK开发的点云标注工具
2023-07-05
《图像分割实战》课程视频教程
2023-06-30
yolov8量化部署(基于openvino和tensorrt)
2023-06-11
texture mapping纹理贴图
2023-05-06
Qt开发的labelimg-yolo
2023-03-27
yolov5-v7.0网络分类、检测和分割OpenCV C++部署demo
2023-03-24
pointnet-qt
2022-12-04
VS2019+CUDA11.1 Release x64编译的OpenCV4.5.5(带CUDA和contrib模块)
2022-11-26
ICP算法加速优化-多线程和GPU
2022-11-25
opencv+qt人脸检测demo
2022-11-20
《Linux/UNIX网络编程》-甘刚.rar
2021-05-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人