自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 LeetCode 451. 根据字符出现频率排序

题目描述给定一个字符串,请将字符串里的字符按照出现的频率降序排列。示例 1:输入:"tree"输出:"eert"解释:'e'出现两次,'r'和't'都只出现一次。因此'e'必须出现在'r'和't'之前。此外,"eetr"也是一个有效的答案。示例 2:输入:"cccaaa"输出:"cccaaa"解释:'c'和'a'都出现三次。此外,"aaaccc"也是...

2019-08-24 14:55:08 364

原创 针对强噪声环境的语音增强系统

项目展示:用NI采集卡完成多通路语音数据的采集和保存:实验结果:

2019-08-07 15:57:24 454

原创 即时通讯软件

项目展示先启动服务器,然后启动客户端,输入信息:点击注册:点击登录后,客户端显示在线用户列表:选中用户双击,打开聊天窗口,可向对方发送聊天文字:向对方发文件,等待对方接受:对方弹出请求窗口:开始发送文件:文件发送完成:向对方发送语音通话请求,等待对方接受:对方弹出请求窗口:开始语音通话:单击“结束语音”按钮...

2019-08-07 15:49:53 635 2

原创 实物三维模型重建软件

项目展示软件的主界面:手动重建操作界面:自动重建操作界面:Kinect得到的二维图像数据:匹配得到的三维点云模型:点云采集范围设置界面:变量设置界面:去除背景和障碍物后的点云:去除背景和地面后的目标物体点云:滤波器参数设置界面:去除噪声点前后对比图:配准相关参数设置界面:采用自动配准法结果图:...

2019-08-07 15:27:19 793 4

原创 实现智能指针shared_ptr

#include <memory>#include <iostream>using namespace std;template<class T>class SmartPtr{private: T* _ptr; int* use_count; public: //构造函数 SmartPtr(T* ptr = nullptr) :_pt...

2019-07-13 16:41:43 200

原创 成员变量的继承

1. 输出是4#include <stdio.h>#include <iostream>using namespace std;class Parent{public: Parent(){ a = 2; } void print() { cout << a << endl; }protected: int a...

2019-07-02 10:23:36 614

原创 Linux网络编程(5)

1. tcp、udp使用场景2. 广播通信流程3. 广播服务器代码实现#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <sys/stat.h>#include <string....

2019-06-26 18:12:21 351

原创 回调函数

2019-06-26 14:05:27 95

原创 深拷贝和浅拷贝

2019-06-26 11:02:47 125

原创 函数式宏定义

2019-06-26 10:44:38 532

原创 定义数组指针

2019-06-26 10:40:26 991

原创 typedef的使用

例1:例2:例3:

2019-06-25 16:16:23 105

原创 Linux网络编程(4)

1.epoll相关的函数2.epoll模型代码实现#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <sys/types.h>#include <string.h>#include <sys/socket.h>#i...

2019-06-24 15:36:24 244

原创 Linux网络编程(3)

1.recv和send函数2. tcp状态转换3.2msl等待时长TIME_WAIT状态会持续大约一分钟,然后才关闭。4. 半关闭 用dup2函数可以复制文件描述符,之后sfd和fd就都指向同一个socket了。如果用close函数关闭一个文件描述符的话,另一个文件描述符还可以对socket进行读写。所以还是用shu...

2019-06-21 14:11:46 386

原创 Linux网络编程(2)

1.socket函数封装server端:#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <strings.h>#include <string.h>#include &l...

2019-06-19 15:40:37 417

原创 Linux网络编程(1)

1. 网络开发两种设计模式2. 网络模型分层3. 以太网帧协议4. IP协议输入网址后,通过DNS域名解析服务器解析域名,得到IP地址。数据每经过一个路由节点,8位生存时间就被减1,当减到0时,数据就被路由节点丢弃了,防止垃圾数据一直在网络中传。5. udp协议6. tcp协议7.tcp-ip四层模型协议封装8....

2019-06-18 09:13:45 301

原创 Linux系统编程(5)

1.互斥锁使用的时候注意的问题临界区:lock和unlock中间的代码就叫做临界区,在上锁时应该保证临界区越小越好。在上锁时应该保证临界区越小越好: 2. 线程为什么要加锁先说一下什么是原子操作:通过加锁的方式来模拟原子操作:下图中lock和unlock中间的三行代码,如果不加锁时,这三行代码在执行中可能会失去CPU,所以不是原子操作,而...

2019-06-11 17:26:54 191

原创 Linux系统编程(4)

1. 守护进程概念2. 创建守护进程正规流程其中PGID是进程组ID,SID是会话ID。例:创建守护进程3.守护进程练习_代码实现注:回调函数中open函数的设置权限的参数是或上O_APPEND的,这是追加的意思,后面write函数往文件中写的时候会从结尾处开始写。执行结果:4. 线程的概念注:主线程...

2019-06-10 21:00:38 965

原创 Linux系统编程(3)

1. mmap的注意事项如果要做操作,需要单独创建一个变量来操作,最后munmap函数传入的仍然是ptr。2.使用mmap进行有血缘关系的进程间通信例:父进程往映射区写一句话,这句话被同步到磁盘文件,子进程中映射区同步了磁盘文件的内容,然后将映射区的内容打印出来。注:内存映射区是非阻塞的,所以上面的程序不能保证父进程先写进去,然后子进程再读出来,我们...

2019-06-06 21:37:03 234

原创 Linux系统编程(2)

1. 父子进程使用文件进行通信先打开一个文件,然后fork出子进程,父进程和子进程都拥有这个文件描述符。父进程向该文件中写一句话,然后关闭文件描述符。然后过了一秒后子进程醒了,子进程先把文件指针移到文件的初始位置,然后读文件并打印输出,最后关闭文件描述符。示意图:执行结果:2. 父进程fork三个子进程例子段错误:执行结果:解释:前...

2019-06-05 20:46:30 248

原创 Linux系统编程(1)

1. 程序和进程、并行和并发并发:指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。并行:多个处理机同时进行处理。上图为3个进程轮流被cpu处理,每次处理一个时间碎片的时间。2. PCB(进程控制块)我们知道,每个进程在内核中都有一个进程控制块(PCB)来维护进程相关的信息,Linu...

2019-06-04 22:57:05 1193

原创 Linux系统常用命令(5)

1. read、write函数读写文件例:将一个文件中的内容写到另外一个文件中。执行结果:说明已经成功将一个文件中的内容写到另外一个文件中。2. lseek函数off_t实际上是整型,fd是文件描述符,offset是读写位置的偏移量,whence是位置,它分为三种:SEEK_SET、SEEK_CUR、SEEK_END。(1)获取文件大小(2)文件...

2019-06-03 22:32:11 526

原创 Linux系统常用命令(4)

1. gdb调试(1)进入gdb调试:gdb + 可执行文件(2)l 列出文件内容(默认从main函数开始列)(3)l + 文件名:行号 列出该文件中该行号处的内容(4)l + 文件名:函数名 列出该文件中该函数的内容 然后想继续往下看的话,输入 l,如果接下来还想再往下看,就直接回车即可。(5)什么都不输入,直接回车,...

2019-05-30 16:03:38 173

原创 Linux系统常用命令(3)

1. man命令2. echo命令例1:例2: 查看某环境变量的值3. vim的三种模式vim中是不能用鼠标的,我们需要用命令来对文件进行操作。4.vim中的光标位置删除_撤销操作注:光标实际处在所覆盖字符的前面位置。5.vim中的复制和粘贴复制光标所在当前行是命令 yy ,删除其实就是剪切。6.vim可视模式和查找...

2019-05-24 23:39:28 192

原创 Linux系统常用命令(2)

1. U盘的挂载(1)先将U盘插到电脑上,然后用fdisk命令查看磁盘信息: sudo fdisk -l 会输出以下信息:这样我们就可以看到U盘的设备名字了,为/dev/sdb1。注:sda是磁盘1,sdb是磁盘2,以此类推……。sda1~4是主分区,sda5往后是逻辑分区。(2)用mount命令将U盘挂载到/mnt目录下: sudo mount /dev/s...

2019-05-22 23:55:50 337 1

原创 Linux系统常用命令(1)

1. 用户目录pwd命令:查看当前所在目录。(1)绝对路径:从根目录开始写 /home/yj_coder/aa(2)相对路径:bb 相对于当前的工作目录而言 . -> 当前工作目录 .. -> 当前的上一级目录 - ->在临近的两个目录之间切换 ...

2019-05-21 22:58:12 242

原创 并查集模板 + 经典题目

本文参照AcWing cornerCao同学的讲解,整理了一下并查集的模板和3道经典题目的实现。并查集模板class UnionFind{public: vector<int> father; UnionFind(int num){ //num表示元素的个数 for(int i = 0; i < num; i++){ ...

2019-05-15 22:58:51 1240 1

原创 十大排序算法(C++实现)

本文参照AcWing闫学灿大神的讲解,整理了一下排序算法的实现。算法总结 排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 稳定性 冒泡排序 O(n²) O(n) O(n²) O(1) 稳定 选择排序 O(n²) O(n²) O(n²) O(1) 不稳定 插入排序...

2019-05-15 15:40:21 21338 11

原创 AcWing 73. 数组中只出现一次的两个数字

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。你可以假设这两个数字一定存在。样例输入:[1,2,3,3,4,4]输出:[1,2]问题分析将所有的数异或起来,得到的结果就是只出现一次的那两个元素的异或结果。这个结果中的各位中为1的是两个数在该位上不同的,一个数在该位上是1,另一个数在该位上是0。我们假设找到异或...

2019-05-14 00:20:44 302

原创 AcWing 62. 丑数

题目描述我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。求第n个丑数的值。样例输入:5输出:5注意:习惯上我们把1当做第一个丑数。问题分析三指针法。创建丑数数组vec,变量 i, j, k 分别指示着权重2,3,5所对应的位置。下一个丑数定义为丑数数组中三个位置的数分别乘以相应的权重,所得...

2019-05-14 00:20:29 120

原创 AcWing 56. 从1到n整数中1出现的次数

题目描述输入一个整数n,求从1到n这n个整数的十进制表示中1出现的次数。例如输入12,从1到12这些整数中包含“1”的数字有1,10,11和12,其中“1”一共出现了5次。样例输入: 12输出: 5问题分析假设我们要计算一个六位数abcdef有多少个1,那么我们要计算6个位置分别出现了多少次1,最后把6个位置的结果加和就是答案了。假如当前正在计算位置 c 出现了多少个...

2019-05-14 00:19:57 108

原创 AcWing 42. 栈的压入、弹出序列

题目描述输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。注意:若两个序列长度不等则视为并不是一个栈的压入、弹出序列。若两个序列都为空,则视为是一个栈的压入、弹出序列...

2019-05-14 00:19:33 118

原创 AcWing 32. 调整数组顺序使奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序。使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分。样例输入:[1,2,3,4,5]输出: [1,3,5,2,4]问题分析此题用双指针。定义两个指针,一个为 i ,一个为 j ,初始时分别指向数组array的首端和尾端。当 i 和 j 没有相遇时,进入while循环,判断如果 i 指的元素是...

2019-05-13 17:11:17 114

原创 AcWing 31. 表示数值的字符串

题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。注意:小数可以没有整数部分,例如.123等于0.123; 小数点后面可以没有数字,例如233.等于233.0; 小数点前面...

2019-05-13 17:11:03 128

原创 AcWing 85. 不用加减乘除做加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、×、÷ 四则运算符号。样例输入:num1 = 1 , num2 = 2输出:3问题分析先把num1和num2按位“与”,再左移一位就得到了进位的结果,把该结果记为carry。然后把num1和num2异或,得到的是不算进位的加法结果,然后把该结果赋给num1,把carry赋给num2,判断当num2大于0时...

2019-05-13 17:10:52 101

原创 AcWing 14. 不修改数组找出重复的数字

题目描述给定一个长度为n+1 的数组nums,数组中所有的数均在1∼n的范围内,其中n≥1。请找出数组中任意一个重复的数,但不能修改输入的数组。样例给定 nums = [2, 3, 5, 4, 3, 2, 6, 7]。返回 2 或 3。思考题:如果只能使用O(1) 的额外空间,该怎么做呢?问题分析此题要求常数的空间复杂度,所以哈希表不能用了,又要求不...

2019-05-13 17:09:06 121

原创 AcWing 88. 树中两个结点的最低公共祖先

题目描述给出一个二叉树,输入两个树节点,求它们的最低公共祖先。一个树节点的祖先节点包括它本身。注意:输入的二叉树不为空; 输入的两个节点一定不为空,且是二叉树中的节点;样例二叉树[8, 12, 2, null, null, 6, 4, null, null, null, null]如下图所示: 8 / \ 12 2 / \ 6 4...

2019-05-13 17:08:55 133

原创 AcWing 87. 把字符串转换成整数

题目描述请你写一个函数StrToInt,实现把字符串转换成整数这个功能。当然,不能使用atoi或者其他类似的库函数。样例输入:"123"输出:123注意:你的函数应满足下列条件:忽略所有行首空格,找到第一个非空格字符,可以是 ‘+/−’ 表示是正数或者负数,紧随其后找到最长的一串连续数字,将其解析成一个整数; 整数后可能有任意非数字字符,请将其忽略; 如果整...

2019-05-13 17:08:42 162

原创 AcWing 86. 构建乘积数组

题目描述给定一个数组A[0, 1, …, n-1],请构建一个数组B[0, 1, …, n-1],其中B中的元素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]思考题:能不能只使用常数空间?(除了输出的数组之外)问题分析此题...

2019-05-13 17:08:31 103

原创 AcWing 83. 股票的最大利润

题目描述假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖一次该股票可能获得的利润是多少?例如一只股票在某些时间节点的价格为[9, 11, 8, 5, 7, 12, 16, 14]。如果我们能在价格为5的时候买入并在价格为16时卖出,则能收获最大的利润11。样例输入:[9, 11, 8, 5, 7, 12, 16, 14]输出:11问题分析从前往后遍历...

2019-05-13 17:08:19 153

空空如也

空空如也

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

TA关注的人

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