- 博客(41)
- 资源 (1)
- 收藏
- 关注
原创 gradient
gradient.h - 颜色渐变http://www.andrewnoske.com/wiki/Code_-_heatmaps_and_color_gradientsclass ColorGradient{ private: struct ColorPoint{ // 内部类,用于存储渐变中的不同颜色 float r, g, b; // Red, green and blue values of our color. float val;
2021-12-06 09:38:47 90
转载 ROS学习(1)简介和文件系统
目录1.ROS简介1.1机器人时代的到来中国大学MOOC—《机器人操作系统入门》配套讲义1.ROS简介机器人操作系统(Robot Operating System, ROS)是一个应用于机器人上的操作系统,它操作方便、功能强大,特别适用于机器人这种多节点多任务的复杂场景。 因此自ROS诞生以来,受到了学术界和工业界的欢迎,如今已经广泛应用于机械臂、移动底盘、无人机、无人车等许多种类的机器人上。1.1机器人时代的到来...
2021-11-12 11:27:30 469
原创 调试记录01:Ubuntu arm 设置源
遇到的问题:在安装ros功能包时报错404 NOT FIND IP:XXXXXXXXX还存在这依赖没有安装…先试试sudo apt-get update,不行的话换源arm ubuntu开发板的apt的库和普通ubuntu的库是不一样的,arm的是ubuntu-ports库。阿里云镜像网站:https://opsx.alibaba.com/mirror里面有ubuntu源的设置说明以ubuntu16.04为例:ubuntu 16.04 配置如下deb http://mirrors
2021-08-09 19:11:41 259
原创 漫画算法第五章
如何判断链表有环/** * 判断是否有环 * @param head 链表头节点 */ public static Boolean isCycle(Node head){ Node fast = head; Node slow = head; while(fast!=null&&fast.next!=null){ fast = fast.next.next; slow = slow.next; if(fast==slow){ return tr
2021-07-15 20:45:12 88
原创 面试题 04.08. 首个共同祖先
设计并实现一个算法,找出二叉树中某两个节点的第一个共同祖先。不得将其他的节点存储在另外的数据结构中。注意:这不一定是二叉搜索树。说明:所有节点的值都是唯一的。p、q 为不同节点且均存在于给定的二叉树中。class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { List<TreeNode> pPath = new ArrayList
2021-07-01 11:20:13 69
原创 面试题 04.06. 后继者
设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例 1:输入: root = [2,1,3], p = 12/ 1 3输出: 2示例 2:输入: root = [5,3,6,2,4,null,null,1], p = 65/ 3 6/ 2 4/1输出: nullclass Solution { boolean find = false; public Tre
2021-07-01 10:49:52 84
原创 面试题 04.05. 合法二叉搜索树
实现一个函数,检查一棵二叉树是否为二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。根节点的值为 5 ,但是其右子节点值为 4 。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode l
2021-07-01 10:36:42 91
原创 面试题 04.04. 检查平衡性
实现一个函数,检查二叉树是否平衡。在这个问题中,平衡树的定义如下:任意一个节点,其两棵子树的高度差不超过 1。示例 1:给定二叉树 [3,9,20,null,null,15,7]3/ 9 20/ 15 7返回 true 。示例 2:给定二叉树 [1,2,2,3,3,null,null,4,4]1/ 2 2/ 3 3/ 4 4返回 false 。题解这道题中的平衡二叉树的定义是:二叉树的每个节点的左右子树的高度差的绝对值不超过 1,则二叉树是
2021-07-01 10:33:23 75
原创 面试题 04.01. 节点间通路
节点间通路。给定有向图,设计一个算法,找出两个节点之间是否存在一条路径。示例1:输入:n = 3, graph = [[0, 1], [0, 2], [1, 2], [1, 2]], start = 0, target = 2输出:true示例2:输入:n = 5, graph = [[0, 1], [0, 2], [0, 4], [0, 4], [0, 1], [1, 3], [1, 4], [1, 3], [2, 3], [3, 4]], start = 0, target = 4输出
2021-07-01 09:41:33 82
原创 面试题 04.03. 特定深度节点链表
给定一棵二叉树,设计一个算法,创建含有某一深度上所有节点的链表(比如,若一棵树的深度为 D,则会创建出 D 个链表)。返回一个包含所有深度的链表的数组。示例:输入:[1,2,3,4,5,null,7,8] 1 / \ 2 3 / \ \ 4 5 7/8输出:[[1],[2,3],[4,5,7],[8]]/** * Definition for a binary tree node. * public class TreeNode {
2021-07-01 09:28:22 98
原创 面试题 04.02. 最小高度树
面试题 04.02. 最小高度树给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 /** * Definition for a binary tree node. * public class Tre
2021-07-01 09:28:08 61
原创 面试题 03.06. 动物收容所
动物收容所。有家动物收容所只收容狗与猫,且严格遵守“先进先出”的原则。在收养该收容所的动物时,收养人只能收养所有动物中“最老”(由其进入收容所的时间长短而定)的动物,或者可以挑选猫或狗(同时必须收养此类动物中“最老”的)。换言之,收养人不能自由挑选想收养的对象。请创建适用于这个系统的数据结构,实现各种操作方法,比如enqueue、dequeueAny、dequeueDog和dequeueCat。允许使用Java内置的LinkedList数据结构。enqueue方法有一个animal参数,animal[0]
2021-07-01 09:27:41 101
原创 面试题 03.05. 栈排序
栈排序。 编写程序,对栈进行排序使最小元素位于栈顶。最多只能使用一个其他的临时栈存放数据,但不得将元素复制到别的数据结构(如数组)中。该栈支持如下操作:push、pop、peek 和 isEmpty。当栈为空时,peek 返回 -1。示例1:输入:[“SortedStack”, “push”, “push”, “peek”, “pop”, “peek”][[], [1], [2], [], [], []]输出:[null,null,null,1,null,2]示例2:输入:[“Sor
2021-07-01 09:27:24 82
原创 面试题 03.03. 堆盘子
堆盘子。设想有一堆盘子,堆太高可能会倒下来。因此,在现实生活中,盘子堆到一定高度时,我们就会另外堆一堆盘子。请实现数据结构SetOfStacks,模拟这种行为。SetOfStacks应该由多个栈组成,并且在前一个栈填满时新建一个栈。此外,SetOfStacks.push()和SetOfStacks.pop()应该与普通栈的操作方法相同(也就是说,pop()返回的值,应该跟只有一个栈时的情况一样)。 进阶:实现一个popAt(int index)方法,根据指定的子栈,执行pop操作。当某个栈为空时,应当删除
2021-07-01 09:27:01 61
原创 面试题 03.04. 化栈为队
实现一个MyQueue类,该类用两个栈来实现一个队列。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false说明:你只能使用标准的栈操作 – 也就是只有 push to top, peek/pop from top, size 和 isempty 操作是合法的。你所使用的语言也许
2021-06-30 15:15:00 63
原创 面试题 03.02. 栈的最小值
请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> 返回 -3.minStack.pop();minStack.top(); -->
2021-06-30 14:29:59 64
原创 面试题 03.01. 三合一
三合一。描述如何只用一个数组来实现三个栈。你应该实现push(stackNum, value)、pop(stackNum)、isEmpty(stackNum)、peek(stackNum)方法。stackNum表示栈下标,value表示压入的值。构造函数会传入一个stackSize参数,代表每个栈的大小。示例1:输入:[“TripleInOne”, “push”, “push”, “pop”, “pop”, “pop”, “isEmpty”][[1], [0, 1], [0, 2], [0],
2021-06-30 14:25:14 68
原创 面试题 02.08. 环路检测
给定一个链表,如果它是有环链表,实现一个算法返回环路的开头节点。如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意:pos 不作为参数进行传递,仅仅是为了标识链表的实际情况。示例 1:输入:head = [3,2,0,-4], pos = 1输出:tail connects to node index 1解释:链表中
2021-06-30 13:13:39 64
原创 面试题 02.07. 链表相交
给定两个(单向)链表,判定它们是否相交并返回交点。请注意相交的定义基于节点的引用,而不是基于节点的值。换句话说,如果一个链表的第k个节点与另一个链表的第j个节点是同一节点(引用完全相同),则这两个链表相交。示例 1:输入:intersectVal = 8, listA = [4,1,8,4,5], listB = [5,0,1,8,4,5], skipA = 2, skipB = 3输出:Reference of the node with value = 8输入解释:相交节点的值为 8 (注意,
2021-06-30 13:08:54 61
原创 面试题 02.06. 回文链表
编写一个函数,检查输入的链表是否是回文的。示例 1:输入: 1->2输出: false示例 2:输入: 1->2->2->1输出: true进阶:你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(i
2021-06-30 13:06:26 52
原创 面试题 02.05. 链表求和
给定两个用链表表示的整数,每个节点包含一个数位。这些数位是反向存放的,也就是个位排在链表首部。编写函数对这两个整数求和,并用链表形式返回结果。示例:输入:(7 -> 1 -> 6) + (5 -> 9 -> 2),即617 + 295输出:2 -> 1 -> 9,即912进阶:思考一下,假设这些数位是正向存放的,又该如何解决呢?示例:输入:(6 -> 1 -> 7) + (2 -> 9 -> 5),即617 + 295输出:
2021-06-30 13:02:03 59
原创 面试题 02.04. 分割链表
编写程序以 x 为基准分割链表,使得所有小于 x 的节点排在大于或等于 x 的节点之前。如果链表中包含 x,x 只需出现在小于 x 的元素之后(如下所示)。分割元素 x 只需处于“右半部分”即可,其不需要被置于左右两部分之间。示例:输入: head = 3->5->8->5->10->2->1, x = 5输出: 3->1->2->10->5->5->8/** * Definition for singly-linked
2021-06-30 11:55:38 55
原创 面试题 02.03. 删除中间节点
若链表中的某个节点,既不是链表头节点,也不是链表尾节点,则称其为该链表的「中间节点」。假定已知链表的某一个中间节点,请实现一种算法,将该节点从链表中删除。例如,传入节点 c(位于单向链表 a->b->c->d->e->f 中),将其删除后,剩余链表为 a->b->d->e->f示例:输入:节点 5 (位于单向链表 4->5->1->9 中)输出:不返回任何数据,从链表中删除传入的节点 5,使链表变为 4->1-&g
2021-06-30 11:55:27 63
原创 面试题 02.02. 返回倒数第 k 个节点
实现一种算法,找出单向链表中倒数第 k 个节点。返回该节点的值。注意:本题相对原题稍作改动示例:输入: 1->2->3->4->5 和 k = 2输出: 4说明:给定的 k 保证是有效的。快慢指针class Solution { public int kthToLast(ListNode head, int k) { ListNode first = head; ListNode secound = head;
2021-06-30 11:55:05 65
原创 面试题 02.01. 移除重复节点
编写代码,移除未排序链表中的重复节点。保留最开始出现的节点。示例1:输入:[1, 2, 3, 3, 2, 1]输出:[1, 2, 3]示例2:输入:[1, 1, 1, 1, 2]输出:[1, 2]提示:链表长度在[0, 20000]范围内。链表元素在[0, 20000]范围内。进阶:如果不得使用临时缓冲区,该怎么解决?/** * Definition for singly-linked list. * public class ListNode { * int
2021-06-29 21:44:38 58
原创 面试题 01.09. 字符串轮转
字符串轮转。给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成(比如,waterbottle是erbottlewat旋转后的字符串)。示例1:输入:s1 = “waterbottle”, s2 = “erbottlewat”输出:True示例2:输入:s1 = “aa”, s2 = “aba”输出:False提示:字符串长度在[0, 100000]范围内。说明:你能只调用一次检查子串的方法吗?class Solution { public boolean
2021-06-29 21:33:16 50
原创 面试题 01.08. 零矩阵
编写一种算法,若M × N矩阵中某个元素为0,则将其所在的行与列清零。示例 1:输入:[[1,1,1],[1,0,1],[1,1,1]]输出:[[1,0,1],[0,0,0],[1,0,1]]示例 2:输入:[[0,1,2,0],[3,4,5,2],[1,3,1,5]]输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]]class Solution { public void setZeroes(int[][] matri
2021-06-29 21:30:05 72
原创 面试题 01.07. 旋转矩阵
给你一幅由 N × N 矩阵表示的图像,其中每个像素的大小为 4 字节。请你设计一种算法,将图像旋转 90 度。不占用额外内存空间能否做到?示例 1:给定 matrix =[[1,2,3],[4,5,6],[7,8,9]],原地旋转输入矩阵,使其变为:[[7,4,1],[8,5,2],[9,6,3]]示例 2:给定 matrix =[[ 5, 1, 9,11],[ 2, 4, 8,10],[13, 3, 6, 7],[15,14,12,16]],原地旋转输
2021-06-29 21:27:19 66
原创 面试题 01.06. 字符串压缩
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa会变为a2b1c5a3。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)。示例1:输入:“aabcccccaaa”输出:“a2b1c5a3”示例2:输入:“abbccd”输出:“abbccd”解释:“abbccd"压缩后为"a1b2c2d1”,比原字符串长度更长。提示:字符串长度在[0, 50000]范围内。class
2021-06-29 21:25:51 66
原创 面试题 01.05. 一次编辑
字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。示例 1:输入:first = “pale”second = “ple”输出: True示例 2:输入:first = “pales”second = “pal”输出: Falseclass Solution { public boolean oneEditAway(String first, String second) {
2021-06-29 21:17:33 57
原创 面试题 01.04. 回文排列
给定一个字符串,编写一个函数判定其是否为某个回文串的排列之一。回文串是指正反两个方向都一样的单词或短语。排列是指字母的重新排列。回文串不一定是字典当中的单词。示例1:输入:“tactcoa”输出:true(排列有"tacocat"、“atcocta”,等等)统计各字符出现的次数,为奇数次的次数不能超过1次class Solution { public boolean canPermutePalindrome(String s) { Map<Characte
2021-06-29 20:48:54 68
原创 面试题 01.03. URL化
URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)示例 1:输入:"Mr John Smith ", 13输出:“Mr%20John%20Smith”示例 2:输入:" “, 5输出:”%20%20%20%20%20"提示:字符串长度在 [0, 500000] 范围内。class Solution
2021-06-29 20:40:09 54
原创 面试题 01.02. 判定是否互为字符重排
给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串。https://leetcode-cn.com/problems/check-permutation-lcci/示例 1:输入: s1 = “abc”, s2 = “bca”输出: true示例 2:输入: s1 = “abc”, s2 = “bad”输出: false说明:0 <= len(s1) <= 1000 <= len(s2) <= 10
2021-06-29 20:30:44 111
原创 面试题 01.01. 判定字符是否唯一
实现一个算法,确定一个字符串 s 的所有字符是否全都不同。https://leetcode-cn.com/problems/is-unique-lcci/示例 1:输入: s = “leetcode”输出: false示例 2:输入: s = “abc”输出: true限制:0 <= len(s) <= 100如果你不使用额外的数据结构,会很加分。1.使用HashSetclass Solution { public boolean isUnique(S
2021-06-29 20:18:27 75
原创 排序算法汇总(java实现)
排序算法1.冒泡排序2、选择排序(Selection Sort)3、插入排序(Insertion Sort)4.希尔排序(Shell Sort)5、归并排序(Merge Sort)6、快速排序(Quick Sort)7、堆排序(Heap Sort)8、计数排序(Counting Sort)1.冒泡排序冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是
2021-06-08 10:14:49 51
转载 ubuntu安装armadillo说明
1. armadillo说明armadillo是目前使用比较广的C++矩阵运算库之一,相当于Matlab的C++替代库。许多Matlab的矩阵操作函数都可以找到对应,这对习惯了Matlab的人来说实在是非常方便,另外如果要将Matlab下做研究的代码改写成C++,使用Armadillo也会很方便。armadillo特性如下:Armadillo是一种用于C ++语言的高质量线性代数库(矩阵数学),旨在在速度和易用性之间取得良好的平衡提供类似于Matlab的高级语法和功能可用于直接在C +
2021-05-07 16:57:47 784
原创 自定义全局规划算法插件
文章目录VScode使用编写路径规划类注册插件介绍在ROS中编写和使用分级路径规划器的步骤,提供从编写路径计划程序类开始直到将其部署为插件的所有步骤。 首先要知道的是,为了向ROS添加一个新的分层路径规划器,新的路径规划器必须遵守nav_core包中定义的nav_core :: BaseGlobalPlanner C ++接口。插件添加到ROS中,煞它可以被move_base包使用。VScode使
2021-03-19 17:38:20 535
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人