自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Docker修改,保存与新建

https://zhuanlan.zhihu.com/p/57311853https://www.runoob.com/w3cnote/docker-use-container-create-image.html

2022-02-07 14:58:30 649

原创 Docker下载包的时候显示Connection failed [IP: 91.189.88.142 80]

之前使用Docker生成镜像的时候,有一些包因为网络问题出现Connection failed 和 failed to fetch,这种时候我们可以通过修改Dockerfile中的下载源来防止网络连接失败。具体操作为在Dockerfile FROM ***下面,加上以下代码:RUN sed -i s:/archive.ubuntu.com:/mirrors.tuna.tsinghua.edu.cn/ubuntu:g /etc/apt/sources.listRUN cat /etc/apt/sourc

2022-01-28 14:45:41 6785 8

原创 解决:docker: Error response from daemon: could not select device driver ““ with capabilities: [[gpu]].

在运行docker gui以后显示:docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].导致这个问题的主要原因是因为nvidia-container-toolkit没有装。可以通过输入以下指令安装。distribution=$(. /etc/os-release;echo $ID$VERSION_ID)curl -s -L https://nvidia.gi

2022-01-27 11:23:49 3292 1

原创 ubuntu20.04 This location could not be displayed. XXX perhaps it has recently be deleted.

重启就好了。

2021-12-24 13:41:24 1117

原创 ROS2 运行文件显示“ros2: command not found”

如果在安装正确的情况下,大概率是由于没有source导致的,可以运行以下命令行:source /opt/ros/foxy/setup.bash我这里是foxy版本,其他ros2版本需要在路径这里做改变。如果是刚创建了一个新包,那么还需要在工作空间(在ws路径下)运行一下环境变量,命令行如下:. install/setup.bash才能找到刚新创建的package。...

2021-12-09 10:00:04 9317 11

原创 Ubuntu 18.04 ROS Melodic 多轮差速机器人 Gazebo仿真设计 1 URDF建模

Ubuntu 18.04 ROS Melodic 多轮差速机器人 Gazebo仿真设计 1 URDF建模1. 项目介绍1.1 本章内容2. 准备工作2.1 创建工作空间2.2 创建硬件描述包3.Rivz 模型可视化3.1 创建URDF文件3.2 URDF 解析3.3 创建Launch文件3.4 运行Rivz4. Gazebo 模型导入4.1 创建xacro文件4.2 创建Launch文件4.3 运行Gazebo1. 项目介绍近期在做一个Gazebo机器人仿真项目,仿真对象是一台多轮差速机器人,名为MAP

2021-03-29 00:44:11 969

原创 LeetCode刷题日记 416. 分割等和子集

题目给出一个数组,数组中包含一些正整数,问能够将这个数组分成两个子集,使得这两个子集相等。首先一上来的想法是将数列中所有的数和求出,然后看数组中能不能将其中的某些数组成总和的一半。这里需要用到动态规划的思想。...

2020-10-11 13:05:45 471

原创 LeetCode刷日日记 5. 最长回文子串

第一次纯自己debug写出的medium,用的中心扩散法。没有力气写解释了,注释写了很多。这道题还可以用动态规划,但我现在还不是很熟练,也许以后可以更新一下。代码如下:class Solution {public: string longestPalindrome(string s) { int len = s.length(); //记录字符串长度 if(len == 1) return s; //如果字符串中只有一个字符,则返回原本字符

2020-10-10 00:21:36 99

原创 LeetCode刷题日记 20. 有效的括号

第一次做栈相关的题目,还不是很熟悉栈的操作。所以看完题目就直接看了标准答案,答案用的栈+哈希表。先把答案贴上,顺便复习以下unordered_map的操作。class Solution {public: bool isValid(string s) { int n = s.size(); if (n % 2 == 1) { return false; } unordered_map<char, c

2020-10-09 11:32:38 1936 1

原创 LeetCode刷题日记 14. 最长公共前缀

题目给出一个数组,数组中每项包含一个字符串,要求找出字符串数组中的最长公共前缀。代码如下:class Solution {public: string longestCommonPrefix(vector<string>& strs) { int len = strs.size(); //获取总字符串数量 int minlength = INT_MIN; //用于记录最短字符串长度,防止数组越界 string answer;

2020-10-08 22:36:19 123

原创 LeetCode刷题日记 13. 罗马数字转整数

题目太长了,有点复杂,我直接复制过来吧。罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做XXVII...

2020-10-08 21:32:28 115

原创 Ubuntu 18.04 ROS melodic rqt_joint_trajectory_controller在Plugins->RobotTools菜单中无法显示解决办法

首先确保ROS中已经安装了rqt_joint_trajectory_controller的pkg。输入一下代码:sudo apt-get install ros-melodic-rqt-joint-trajectory-controller ros-melodic-control-msgs ros-melodic-controller-manager-msgs ros-melodic-rospy ros-melodic-rqt-gui ros-melodic-rqt-gui-py ros-melodi

2020-10-08 19:28:38 1882

原创 LeetCode刷题日记 344. 反转字符串

这题是我第一道一遍写出的题目,每一次进步都值得庆贺。不过事实上最近确实每天都在被supervised learning毒打。题目给出一个数组,数组中包含一串字符串,要求在不使用额外数组的情况下,原地将数组中字符串的顺序反转。第一个想到的是用swap()函数,然后将数组中对称部分反转。对称的情况下奇数个数与偶数个数需要分开考虑。代码如下:class Solution {public: void reverseString(vector<char>& s) {

2020-10-08 08:04:55 96

原创 LeetCode刷图日记 9. 回文数

题目给出一个数字,要求检查它是否是回文数。第一想法是先讲数字保存到一段列表当中,然后检查列表的长度,根据长度的奇偶数来进行分类。检查数组中互相对称的值是否全部相等,如果全部相等,则为回文数,如果不等,则不为回文数。代码如下:class Solution {public: bool isPalindrome(int x) { if( x < 0) return false; //若x为奇数,则必定不为回文数 vector<int> temp

2020-10-07 12:14:16 84

原创 LeetCode刷题日记 56. 合并区间

第一次完全靠自己debug写出的medium题,大概花了一个半小时。公司面试数据结构算法大概需要40分钟写出两道medium,自己离这个距离相差还很远,希望能一直努力一直进步。题目给出一个区间的集合,要求合并所有重叠的区间,返回最后不重叠的区间。这道题主要有两个点让我在写代码是遇到困难:1. 写之前在考虑如果后面的区间完全包含前面的区间应该如何处理,实际上先使用sort(intervals.begin(), intervals.end())就可以处理这一问题。2. 在建立答案数组的时候无法.

2020-10-07 10:49:59 119

原创 LeetCode刷题日记 75. 颜色分类

今天是10月7日星期三,开学的第三天,昨天学习压力一下子大了很多,写leetcode的题就有一些囫囵吞枣,也没有写日记,以后无比要改正。今天比较幸运,每日一题给的比较简单,一个起泡算法就解决了。题目如下,一个数组中包含0,1,2三种数字,数组中的数字顺序是无序的,要求写一段程序将0,1,2从小到大重新排序。代码如下:class Solution {public: void sortColors(vector<int>& nums) { int len

2020-10-07 08:27:40 111

原创 LeetCode刷题日记 剑指 Offer 03. 数组中重复的数字

今天的每日一题需要用到哈希表,之前每次看到哈希表的题都是跳过的,既然这次躲不开了,就学习了一下哈希表。学习没有很深入,先描述一下我对哈希表使用的理解。C++ 中, 使用 unordered_map<int,bool> map; 来建立一个哈希表,其中第一个int表示哈希表key值的数字形式,用于记录他的存储位置,bool型为存储位置中存储的数字。这道题给出一个数组,其中包含若干个数字,要求检查数组中是否存在随机的数。若存在,则返回随机的这个数字。这里,可以建立一个哈希表,数组中的数字为k

2020-10-05 08:07:36 95

原创 LeetCode刷题日记 19. 删除链表的倒数第N个节点

题目给出一个链表,给出一个整数n,要求返回删除了倒数第n个节点的链表。这道题可以使用快慢指针法,让fast先向后移n个节点,然后让快慢指针同时向后移,直到快指针达到最后一个节点。此时,慢指针指向的下一个节点及为需要删除的节点,将其删除,代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val

2020-10-04 11:55:53 105

原创 LeetCode刷题日记 2. 两数相加

题目给出两个链表,两个分别展示两个以逆序形式表示的十进制数,要求返回一个链表,以逆序形式表示这两个十进制数的和。这道题主要难点有两个,一个是当两个数位数不同的情况如何考虑,另一个是当末尾还需进位的时候需要再加一。根据条件,我们创造第三个链表head作为两个链表的和,代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNo

2020-10-04 11:21:01 92

原创 LeetCode刷题日记 746. 使用最小花费爬楼梯

这又是一道动态规划的题,与计算上楼梯的方法数类似。这一次题目给出一个数组,数组中每个数代表一级楼梯,而其数的值代表上该楼梯所虚花费的体力,要求得出上楼梯所虚花费的最小值。首先我们通过cost.length()得到级数n,f(n)为代表上n级楼梯所需要的体力数。当楼梯有两级时,我们需要比较第一级与第二级哪个楼梯耗费的体力更少,故能得到方程:当楼梯有三级时,我们可以得到以下公式:由此我们可以得出状态转移方程:class Solution {public: int mi

2020-10-03 08:46:31 86

原创 LeetCode刷题日记 392. 判断子序列

题目给出一个短字符串s和一个长字符串t,要求判断s是否为t的子序列。子序列的定义为,母序列在删去一些字符后,在不改变顺序的情况下,可以变得与子序列完全一致。首先的想法是生成一个s下标,赋值为0,在长字符串中寻找第一个下标的值,如果能找到,则下标向后移动一位。如果全能找到,则会退出循环,下标与s长度相等。如果不能找到,则说明s不是t的子序列,此时下标小于s的长度。代码如下:class Solution {public: bool isSubsequence(string s, string t

2020-10-02 20:16:11 143

原创 LeetCode刷题日记 198. 打家劫舍

题目给出一个数组,数组中每个数代表一个房屋,其数值代表房屋中的金钱数。小偷不能偷相邻的房屋,求小偷一夜之间能偷窃到的最高金额为多少。这里可以采用动态规划的思想。当只有一间房屋时,无需进行比较,小偷会直接偷这间屋子。而当有两件房屋时,小偷要在第一间与第二间之间选择金钱更多的房间。故,可列出如下方程:如果有第三间房屋时,小偷可以选择偷第一间和第三间,或者选择不偷第三间而去偷第二间。此时的小偷出现了两种选择,即是否偷当前这个房屋,故可以列出如下状态转移方程:通过以上方程,我们可以得到如下代码:

2020-10-02 11:40:49 137

原创 LeetCode刷题日记 70. 爬楼梯

今天学习了动态规划,其本质是将一个大问题拆成几个子问题,分别求解这些子问题,从而推断出大问题的解。思想上有一些类似递归,但时间复杂度上比递归更胜一筹。以下是第一道动态规划题:给出一个正整数n,为当前需要爬的楼梯数,我们可以爬一节或者爬两节,求一共有多少种不同的方法可以爬上楼梯。这里我们设f(n) 为不同方法的个数,因为每一次我们都可以选择爬一节或者爬两节,所以当前爬n节楼梯总方法数可以表示为爬n-1节楼梯方法数和爬n-2节楼梯方法数的和,表示为:由此,通过动态规划,我们可以写出以下代码:c

2020-10-02 10:29:50 120 1

原创 LeetCode刷题日记 771. 宝石与石头

今天开始每天把每日一题写了。这道题为字符串处理。题目给定字符串J和字符串S,其中字符串J说明为宝石的字符类型,S说明我们手中所有的石头,要求求出手中宝石的数量。string处理方式与set比较相似,先尝试一下像set一样来处理:class Solution {public: int numJewelsInStones(string J, string S) { int Jlength = J.length(); int Slength = S.length()

2020-10-02 08:10:18 52

原创 LeetCode刷题日记 剑指 Offer 53 - II. 0~n-1中缺失的数字

题目给出一个长度为n-1的递增排序数组,数组中有且只有一个数字不在该数组中,求这个数字。根据观察,可以通过检查数组中的每个数字是否与其下标相等,若相等,则说明缺失的数字在后面,若不相等,则说明缺失的数字在前面。另外最后考虑数组中没有缺失数字的情况,返回数组最后一个数字加一。代码如下:class Solution {public: int missingNumber(vector<int>& nums) { int size = nums.size();

2020-10-02 00:07:28 113

原创 LeetCode刷题日记 剑指 Offer 53 - I. 在排序数组中查找数字 I

题目给出一个有序数组,要求统计目标数字在数组中出现的次数。最开始尝试使用暴力解法会超时,故使用二分法,代码如下:class Solution {public: int search(vector<int>& nums, int target) { if(nums.empty())return 0; //判断数组为空时返回0 int size = nums.size(); //得到数组大小 int left = 0;//二分法

2020-10-01 23:26:05 99

原创 LeetCode刷题日记 剑指 Offer 29. 顺时针打印矩阵

之前几天在看吴恩达,LeetCode停了几天,今天重新开始,希望之后每天能抽出时间写几道。这道题目是剑指offer上的第29题,顺势正打印矩阵。题目给出一个由数组构成的矩阵,要求顺时针顺序从里到外打印出每一个数字,代码如下:class Solution {public: vector<int> spiralOrder(vector<vector<int>>& matrix) { if (matrix.size() == 0 ||

2020-10-01 22:13:25 81

原创 LeetCode刷题日记 剑指 Offer 04. 二维数组中的查找

最近刷了一些easy难度的数组题,尝试一下剑指里的数组题。该题给出一个n*m的二维数组,给出一个int 数target,要求遍历二维数组,若数组中有target,则返回true,若没有,则返回false。首先使用暴力解法,两层循环,分别对每一行与每一列遍历,若发现target,则返回true,若没有,则返回false。代码如下:class Solution {public: bool findNumberIn2DArray(vector<vector<int>>&

2020-09-24 23:50:11 1589

原创 LeetCode刷题日记 88. 合并两个有序数组

题目给出两个有序整数数组,并给出两个数组各自的元素数量m和n,数组一的长度为m+n,要求将数组一和数组二的元素按大小顺序整理进数组一。这道题从两个数组各自的后端开始确定,代码如下:class Solution {public: void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) { int i = nums1.size() - 1; //得出数组1最后一位下标

2020-09-22 18:45:32 63

原创 LeetCode刷题日记 66. 加一

题目给出一个数组,数组中的每一个数代表其十进制的每一位数,要求用数组返回该十进制数加一的数字,代码如下:class Solution {public: vector<int> plusOne(vector<int>& digits) { int size = digits.size(); for(int i = digits.size()-1; i >= 0; i--) { ++ d

2020-09-21 20:53:01 162

原创 LeetCode刷题日记 53. 最大子序和

题目给出一个整数数组nums,要求在数组中找到具有最大和的连续子数组。这里首先使用暴力求解法,代码如下:class Solution {public: int maxSubArray(vector<int>& nums) { int maxsum = 0; if(nums.size() == 1) return nums[0]; for(int i = 0; i < nums.size() ; i++)

2020-09-21 20:28:41 75

原创 LeetCode刷题日记 35. 搜索插入位置

第一次用暴力法写出来的程序再用时击败了96.1%的用户,同时在内存击败了98.15%的用户,不过可能主要原因是这是一道考察二分法的题目。(突然发现相同代码多次提交,执行用时会发生变化...震惊)题目要求,给出一个排序数组和一个目标值,若在数组中能找到目标值,则返回该目标值在数组中的下标,若数组中不存在该目标值,则返回该目标值在数组中应该插入的位置。自己写的时候用了flag和暴力法,代码如下:class Solution {public: int searchInsert(vector&l

2020-09-19 20:06:41 77

原创 LeetCode刷题日记 26. 删除排序数组中的重复项

这道题给出一个有序数组,要求原地删除重复出现的元素,使得每个元素只能出现一次。本题可以采用双指针法,当发现当前下标与下一个下标中的数不一致时,将该值记录重新记录进数组。代码如下:class Solution {public: int removeDuplicates(vector<int>& nums) { if (nums.empty()) return 0; // 别忘记空数组的判断 int slowIndex = 0; //慢下标

2020-09-19 18:58:48 91

原创 LeetCode刷题日记 剑指 Offer 22. 链表中倒数第k个节点

题目给出一个链表,同时给出一个整数k。要求返回该链表倒数第k个节点。这里可以使用快慢指针法,先让快指针向前移动k个节点,然后快慢指针同时移动,直至快指针移动到底部。返回慢指针,该值即为倒数第k个节点,代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {}

2020-09-19 16:01:01 72

原创 LeetCode刷题日记 剑指 Offer 06. 从尾到头打印链表

题目给出一个链表的头节点,从尾到投返回每一个节点的值,并用数组返回,代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: vector<int> reverseP

2020-09-19 13:09:18 88

原创 LeetCode刷题日记 1290. 二进制链表转整数

题目给出一个单链表,链表中的每个节点的值不是0就是1,将出出的完整链表视为一个二进制数,要求返回该二进制数的十进制形式。 例如,101 返回 5。这个答案可以通过 (((0*2+1)*2+0)*2+1) = 5来表示。代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), nex.

2020-09-19 10:24:45 60

原创 LeetCode刷题日记 876. 链表的中间节点

题目给出一个有头节点的非空单链表,要求返回链表的中间节点。如果链表节点数为偶数时,返回第二个中间节点,代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNod

2020-09-16 00:28:36 81

原创 LeetCode刷题日记 234. 回文链表

判断一个给定的链表是否为回文链表。我首先想到的第一个方案是用反转链表中的步骤将整个链表反转,然后比较反转后的链表与反转前链表是否相同,代码如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {publi

2020-09-15 23:53:30 75

原创 LeetCode刷题日记 206. 反转链表

反转一个单链表。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* reverseList(ListNode* head) { ListNo.

2020-09-15 18:13:32 82

原创 LeetCode刷题日记 203. 移除链表元素

删除链表中等于给定值val的所有节点。/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public: ListNode* removeElements(ListNode* head, int..

2020-09-15 17:24:32 146

空空如也

空空如也

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

TA关注的人

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