自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 vim中空格键和tab键的问题

可以在.vimrc文件中加入set ts=4 #一个tab四个空格set expandtab #tab换成空格set autoindent #换行自动缩进set shiftwidth=4 #自动缩进时也是四个空格这样可以防止写代码时对不齐等问题的发生...

2020-09-02 11:23:10 341

原创 centos如何在vim和终端中相互操作

我看好多文章中说到使用vim --version | grep clipboard看一下输出结果中baiclipboard前面是+还是-,如果是+,这就意du味着vim是可以与系统共享剪切板的,然后直接选中复制粘贴但是我的vim死活就打不开这个功能,试了好多种方法,最后在.vimrc文件中加setmose=a和setmouse=v,就可以了,具体原因还不知道,先码住,以后再探索。...

2020-08-31 00:39:21 256 1

原创 算法图解第二章之选择排序C++代码实现

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理是:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。没什么好说的,直接上代码:void Selection_Sort(int a[],int length){ int index;//表中最小元素的下标 for(int i=0;i<le.

2020-06-09 19:23:16 250

原创 算法图解第一章算法简介之二分查找C++代码实现

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列这一块没什么好说的,书上讲的很清楚,这里默认是有序的数组,如果无序可以在查找前加一个排序再查找,用一个最适合的排序算法就好,排序算法我就不在这里讲了。另外,用递归也能实现二分查找,但是不建议,因为太消耗空间了。以下是C++代码实现:int BS(vector<int>& a,int key){ int l=0,r=a.size.

2020-06-09 18:50:24 216

原创 LeetCode 27.移除元素 C++代码实现

题目描述:给定一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。示例 1:给定 nums = [3,2,2,3], val = 3,函数应该返回新的长度 2, 并且 n...

2018-08-29 15:52:20 402

原创 LeetCode 80. 删除排序数组中的重复项 II C++代码实现

题目描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定 nums = [1,1,1,2,2,3],函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。你不需要考虑数组...

2018-08-25 17:15:18 380

原创 LeetCode 26. 删除排序数组中的重复项 C++代码实现

题目描述:给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。...

2018-08-25 16:29:20 649

原创 LeetCode 82.删除排序链表中的重复元素Ⅱ

题目描述:给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中没有重复出现的数字。示例1:输入: 1-&gt;2-&gt;3-&gt;3-&gt;4-&gt;4-&gt;5输出: 1-&gt;2-&gt;5示例2:输入: 1-&gt;1-&gt;1-&gt;2-&gt;3输出: 2-&gt;3解题思路:总体思路就是把每个不重复的值重新重新放...

2018-08-24 16:53:53 167

原创 LeetCode 83.删除排序链表中的重复元素

题目描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1-&gt;1-&gt;2输出: 1-&gt;2示例 2:输入: 1-&gt;1-&gt;2-&gt;3-&gt;3输出: 1-&gt;2-&gt;3 解题思路:因为是排序链表,所以只用看当前指针之后的指针域即可,如果相等则删除后者,否则指针向后移动 代码实现:...

2018-08-23 17:20:44 185

原创 LeetCode 104.二叉树的最大深度

题目描述:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 解题思路:此题可以用层次遍历来解,每层设定一个count值...

2018-08-16 15:58:42 182

原创 LeetCode 107.二叉树的层次遍历Ⅱ

题目描述:给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其自底向上的层次遍历为:[ [15,7], [9,20], [3]] 解题思路:此...

2018-08-15 17:26:17 363

原创 LeetCode 102.二叉树的层次遍历 C++代码实现

题目描述:给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。例如:给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]] 解题思路:可以设定一个count值来存储每层的变...

2018-08-14 19:17:55 780

原创 LeetCode 61.旋转链表 C++代码实现

题目描述:给定一个链表,旋转链表,将链表每个节点向右移动 k 个位置,其中 k 是非负数。示例 1:输入: 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;NULL, k = 2输出: 4-&gt;5-&gt;1-&gt;2-&gt;3-&gt;NULL解释:向右旋转 1 步: 5-&gt;1-&gt;2-&gt;3-&gt;4-&gt;NULL向右旋转

2018-08-07 19:21:16 294

原创 LeetCode 145.二叉树的后序遍历 C++代码实现

题目描述:给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [3,2,1] 解题思路:1.递归实现:按照后序遍历的定义(依次访问左右根)即可   2.非递归实现,因为涉及到最后访问根节点,所以要设一个结点来保存上一个的值。 代码实现:1.递归实现templa...

2018-08-06 19:51:14 409

原创 LeetCode 94.二叉树的中序遍历 C++代码实现

题目描述:给定一个二叉树,返回它的中序 遍历。示例:输入: [1,null,2,3] 1 \ 2 / 3输出: [1,3,2] 思路:1.递归:按照中序遍历的定义(左根右进行访问)2.非递归:任何递归都可以通过栈来实现非递归,所以将左边依次压入栈中然后访问最左边的,依次循环即可。 代码实现:1.递归实现templat...

2018-08-06 19:44:13 382

原创 LeetCode 144.二叉树的前序遍历 C++代码实现

题目描述:给定一个二叉树,返回它的 前序 遍历。 示例:输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,2,3] 思路:1.递归实现,按照前序遍历的定义(根左右),依次递归遍历即可,没有太大难度。            2.非递归实现,任何递归都可以通过栈来实现非递归,前序遍历只需要将结点边输出边压入栈即可...

2018-08-06 19:37:01 943

原创 LeetCode 24.两两交换链表中的结点 C++代码实现

题目描述:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。示例:给定 1-&gt;2-&gt;3-&gt;4, 你应该返回 2-&gt;1-&gt;4-&gt;3.说明:你的算法只能使用常数的额外空间。 你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。 解题思路:因为涉及到头指针问题,所以先让前两个交换,交换后再循环后面的交换 代码实现...

2018-07-30 22:34:02 250

原创 LeetCode 21.合并两个有序链表 C++代码实现

题目描述:将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例:输入:1-&gt;2-&gt;4, 1-&gt;3-&gt;4输出:1-&gt;1-&gt;2-&gt;3-&gt;4-&gt;4 思路:这道题应该没什么大问题,分别比较两个链表里面的值的大小,然后放到新的链表中,最后把剩下未排完的链表全部放入。 代码实现:...

2018-07-30 21:22:02 630

原创 LeetCode 19.删除链表的倒数第n个节点 C++代码实现

题目描述:给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。示例:给定一个链表: 1-&gt;2-&gt;3-&gt;4-&gt;5, 和 n = 2.当删除了倒数第二个节点后,链表变为 1-&gt;2-&gt;3-&gt;5.说明:给定的 n 保证是有效的。进阶:你能尝试使用一趟扫描实现吗? 思路:1.暴力法,第一遍扫描链表长度,第...

2018-07-29 21:22:52 382

原创 LeetCode 1.两数之和 C++代码实现

给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1] 思路:1.此题难度不大,直接遍历即可,当找到两数时直接返回。          ...

2018-07-25 20:40:16 563

原创 LeetCode 3.无重复字符的最长字串 C++实现

给定一个字符串,找出不含有重复字符的最长子串的长度。示例:给定 "abcabcbb" ,没有重复字符的最长子串是 "abc" ,那么长度就是3。给定 "bbbbb" ,最长的子串就是 "b" ,长度是1。给定 "pwwkew" ,最长子串是 "wke" ,长度是3。请注意答案必须是一个子串,"pwke" 是 子序列  而不是子串。 思路:1.可直

2018-07-25 20:31:36 1708

原创 LeetCode 2.两数相加 C++代码实现

题目描述:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -&gt; 4 -&gt; 3) + (5 -&gt; 6 -&gt; 4)输出:7 -&gt; 0 -&gt; 8原因:342 + 465 = 807思路:1.首先要理解两...

2018-07-23 21:52:42 1600

原创 PJSIP协议栈在Linux下通信测试

由于要进行voip方面的开发,需要用到PJSIP协议栈,所以进行了一番测试。本人测试用的是ubuntu16.04系统,PJSIP-2.5.5。下面介绍如何测试使用PJSIP下载相关工具 http://www.pjsip.org可以下载PJSIP的压缩包,解压到home即可。进入文件夹下依次运行这三条命令 ./config make dep make进行测试

2016-11-09 11:21:30 915 1

原创 linux下Qt5 编译出现cannot find -IGL问题修复

linux下使用QT5运行时出现两个问题:cannot find -lGLcollect2:error:ld returned 1 exit status这是因为系统缺少链接库,执行两条命令即可sudo apt-get install libgl1-mesa-dev sudo apt-get install libglu1-mesa-dev freeglut3-dev

2016-09-27 12:37:24 3826 2

原创 ubuntu下搜狗输入法的安装

首先给大家科普一下这个搜狗输入法,这是一个建立在fcitx输入法框架之上的输入法,个人觉得fcitx并没有ibus好用,但是这个搜狗确实出奇的好用,以至于我改变了这个观点。下面介绍一下安装教程:首先需要去搜狗官网下载linux版的搜狗输入法然后先直接在软件市场先安装fcitx再安装那个.deb文件即可最后重新登陆一下

2016-09-03 00:29:46 279

转载 Linux 下QT开发环境的构造

最近由于学校实训树莓派开发,需要在Linux 下使用QT,在机房有老师给配好觉得很简单,但是在自己电脑上一实践发现问题多多,竟然连QT安装都不会,更别说用QT开发了,于是在网上找了许多大神的文章看了看,发现了一个差不多的(由于我是ubuntu14.04,所以这个文章就是在ubuntu下进行的) 以下是我总结的:首先需要去官网下载QT离线安装包,为qt-opensource-linux-x86-5.4

2016-09-02 00:27:49 340

转载 双系统ubuntu14.04无法引导win10问题

WIN10下装ubuntu14.04双系统,本人小白,装ubuntu时引导放到了win10的500M隐藏分区 本以为可以一箭双雕,谁知ubuntu引导win10时虽然有win10的启动项,但点进去win10就弹回了引导区,导致win10进不去,无奈之下在网上狂翻,最终找到一位大神的解答完美解决了我的问题。以下是大神所讲:因为能进去ubuntu,所以只需要增加一段自动搜索 的代码即可sudo gedi

2016-09-01 00:49:51 478

原创 Hanoi塔算法分析

题目:有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子C上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动解析: 当n=1时 只需要直接将A上的圆盘放到C上即可 当n>1时 要设法将n-1个较小的圆盘依照移动规则从a移到b上,然后将a上最大的圆盘放到c上,最后再设法将n-1个较小的圆盘按照规则从b

2016-03-24 23:02:03 958

原创 全排列与整数划分算法分析

1.全排列算法 题目:求出1-n的全排列.思想:交换第1个元素与第i个元素,得到n个序列;把每个序列分成两部分:第一个元素,其余的元素;对其余元素执行全排列操作,记得操作完后,将这两个元素交换回来,以方便下面的交换.算法实现:void Swap(int a, int b) // 交换a和b { int temp = a; a = b; b = temp; } voi

2016-03-22 23:20:24 627

转载 简明 Vim 练级攻略

vim的学习曲线相当的大,所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。 ——————————正文开始——————————你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VI

2016-03-22 00:23:30 290

空空如也

空空如也

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

TA关注的人

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