自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (2)
  • 收藏
  • 关注

原创 字符串类型相关

前言做了个笔试题,最后一题卡在char相关转换的问题上,笔者直接心态崩了,这里对于C还是不熟悉,所以特地写下这个博客,希望好好掌握char类型。引用看学习视频中老师的一句话:一个普通程序员在企业中 90%的精力,都花在了字符串的处理上。从上面这句话,我们足以能看出字符串的重要性,这也决定了字符串在各大面试和笔试中,都极易考到。目录1.char类型2.字符串类型...

2019-04-21 00:31:44 310

原创 剑指Offer第五十七题:二叉树的下一个结点

题目描述给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。思路:需要种类比较多,具体如下:(示例如图)如果该节点的右子树存在,则下一个节点就是右子树的最左。比如节点 a 如果该节点右子树不存在,而且是父节点的左子树, 则下一个节点就是父节点,比如节点d 如果该节点右子树不存在,而且是父节点的右子...

2019-04-18 22:47:31 124

原创 剑指Offer第五十六题:删除链表中重复的结点

题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5思路:这里想了蛮久,实际原理不难,就是利用 pre,p,post三个结点,分别记录,如果一直重复,就找到不重复的数,这里post表示寻找不同的数,找到不同...

2019-04-18 22:03:52 205

原创 日期差计算——某年某月某日到另一个某日

代码如下:(我这里默认是1970.1.1)int day(int y,int m ,int d,int startYear = 1970, int starMonth = 1,int startDay = 1){ int num = 0; for(int i = startYear; i<y; i++) { if((i%4==0 &&a...

2019-04-17 21:20:25 1090

转载 大量数据的排序,可以用哪些种排序算法?

归并排序 快速排序 堆排序对于内存足够大的大量数据排序,一般来说用归并排序比较好的,因为他的读取次数会比较少(在数据挖掘的理论里面,读取次数越少,排序方法越快),同时是稳定的; 但是如果内存空间不足,就自然要减少次数了,所以也可以用快速排序,快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短; 也可以利用堆排序,当N很大时,并且有...

2019-04-17 14:42:51 4023 1

转载 make_heap(), pop_heap(), push_heap()用法

对make_heap(), pop_heap(), push_heap()的用法做个总结:需要添加头文件:#include<algorithm>make_heap()make_heap(_RAIter,_RAIter),make_heap(_RAIter,_RAIter,_Compare)生成堆,他有两个参数,也可以有三个参数,前两个参数是指向开始...

2019-04-17 12:59:15 243

原创 C++生成0到n之间的随机数

利用srand()种子填充,和rand()函数srand()函数:随机数发生器的初始化函数,需要提供一个种子,这个种子会对应一个随机数。如果使用相同的种子,rand() 函数会出现一样的随机数。默认种子数是1,即srand(1)。 rand()函数:伪随机数发生器,需要先调用srand初始化,一般用当前日历时间初始化随机数种子,这样每行代码都可以产生不同的随机数。 #includ...

2019-04-17 09:12:10 6941

转载 TCP的三次握手与四次挥手理解及面试题

序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一个序号;序列号seq就是这个报文段中的第一个字节的数据编号。确认号ack:占4个字节,期待收到对方下一个报文段的第一个数据字节的序号;序列号表示报文段携带数据的第一个字节的编号;而确认号指的是期望接...

2019-04-15 13:24:26 249

转载 内存泄漏和内存溢出的区别和联系

1、内存泄漏memory leak :是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出。2、内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出。...

2019-04-15 13:14:23 127

转载 B tree、B- tree、B+ tree、B*tree

目录1.B tree(B- tree)2.B+ tree(B+树)2.1为什么需要B+树,B+树比B树更好呢?2.1数据库索引采用B+树的主要原因3.B*tree(B*树)4.小结1.B tree(B- tree)B树(B tree)是一种平衡的多路查找树。2-3树和2-3-4树都是 B树的特例。节点最大的孩子数目称为B树的阶(order),因此,2-3树...

2019-04-15 09:50:42 239

原创 剑指Offer第五十五题:链表中环的入口结点

题目描述给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。思路:方法1.直接用哈希表,遇到地址相同时返回即可。2.先判断有没有环,如果有环则需要找到入口。判断有没有环比较简单,直接用两个指针,一个走两步,一个走一步,如果有环,则它们肯定会在环里相遇。主要找入口节点麻烦点,这里我们可以举个例子,如下图,就是存在一个环,如果我们知道这个环的长度为4...

2019-04-14 20:24:07 115

原创 剑指Offer第五十四题:字符流中第一个不重复的字符

题目描述请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回#字符。思路:直接哈希表建立映射做。(ascii一共256个)class Solution...

2019-04-14 17:08:19 101

原创 剑指Offer第五十三题:表示数值的字符串

题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。思路:这里表示数字的字符有 0-9,e,E,“.”,“+”,“-”;规则:+和 - 必须出现在第一位和E(e)后面一位...

2019-04-14 16:42:48 132

转载 剑指Offer第五十二题:正则表达式匹配

题目描述请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配思路:情况还是有些复杂的,先看下输入和输出的例子(假设原来字符数组str,...

2019-04-14 15:14:50 336

原创 剑指Offer第五十一题:构建乘积数组

题目描述给定一个数组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]。不能使用除法。思路:题目中可以知道,B[ i ] =A[0]*A[1]*...*A[i-1]*A[i+1]*...*A[n-1];只是少乘了一个 A[ i ];可以先看下图,B0至...

2019-04-14 10:07:10 125

原创 剑指Offer第五十题:数组中重复的数字

题目描述在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。思路:这里牛客网题目给的函数是 bool duplicate(int numbers[], int leng...

2019-04-14 09:31:45 119

转载 C++ list, vector, map, set 区别与用法比较

一.list和vectorList封装了链表,Vector封装了数组, list和vector得最主要的区别在于vector使用连续内存存储的,他支持[]运算符,而list是以链表形式实现的,不支持[]。Vector对于随机访问的速度很快,但是对于插入尤其是在头部插入元素速度很慢,在尾部插入速度很快。List对于随机访问速度慢得多,因为可能要遍历整个链表才能做到,但是对于插入就快的多...

2019-04-13 22:26:05 2380

转载 C++ vector、array和数组的比较

在c++11中,STL中提拱了一个新的容器std::array,该容器在某些程度上替代了之前版本的std::vector的使用,更可以替代之前的自建数组的使用。那针对这三种不同的使用方式,先简单的做个比较:相同点:三者均可以使用下表运算符对元素进行操作,即vector和array都针对下标运算符[]进行了重载 三者在内存的方面都使用连续内存,即在vector和array的底层存储结构均...

2019-04-13 22:10:27 1510

转载 堆和栈的区别

堆:主要用于存储new出来的对象栈:主要用于对对象的引用,即对象的地址目录一、预备知识—程序的内存分配二、例子程序二、堆和栈的理论知识2.1申请方式2.2申请后系统的响应2.3申请大小的限制2.4申请效率的比较:2.5堆和栈中的存储内容2.6存取效率的比较2.7小结: ...

2019-04-13 21:56:32 121

转载 哈希表冲突及处理方法

一、哈希函数和哈希冲突的基本概念1.哈希函数:哈希法又称散列法、杂凑法以及关键字地址计算法等,相应的表成为哈希表。基本思想:首先在元素的关键字K和元素的位置P之间建立一个对应关系f,使得P=f(K),其中f成为哈希函数。创建哈希表时,把关键字K的元素直接存入地址为f(K)的单元;查找关键字K的元素时利用哈希函数计算出该元素的存储位置P=f(K).2.哈希冲突:当关...

2019-04-13 21:15:34 1591

原创 剑指Offer第四十九题:把字符串转换成整数

题目描述将一个字符串转换成一个整数(实现Integer.valueOf(string)的功能,但是string不符合数字要求时返回0),要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0。思路:判断正负什么的都很简单,我这里直接用了两个标志位。主要需要判断是否超出int的上限,所以输入先用一个long long代替。代码如下:c...

2019-04-13 17:38:23 335

原创 剑指Offer第四十八题:不用加减乘除的加法

题目描述写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。思路:两个数异或:相当于每一位相加,而不考虑进位; 两个数相与,并左移一位:相当于求得进位; 将上述两步的结果相加举例:5 + 7 = 12 0101 0111 1100 5^7: 0101^0111 =0010 (十进制就是2,就是求得了未进位的数) 5&amp...

2019-04-13 16:30:44 181

原创 剑指Offer第四十七题:求1+2+3+…+n

题目描述求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。思路:利用“与”操作短路直接实现class Solution {public: int Sum_Solution(int n) { int sum = n; (n>0) &...

2019-04-13 16:30:14 473

原创 剑指Offer第四十六题:孩子们的游戏(圆圈中最后剩下的数)

题目描述每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到m-1的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0...m-1报数....这样下去....

2019-04-13 14:11:07 186

转载 STL——list常见用法

list是C++标准模版库(STL,Standard Template Library)中的部分内容。实际上,list容器就是一个双向链表,可以高效地进行插入删除元素,但是随机访问却比较慢。使用list容器之前必须加上STL的list容器的头文件:#include<list>;二、List定义和初始化:list<int>lst1;...

2019-04-13 13:50:51 549

原创 剑指Offer第四十五题:扑克牌顺子

题目描述LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张^_^)...他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子.....LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,...

2019-04-12 21:16:55 2293 1

原创 剑指Offer第四十四题:翻转单词顺序序列

题目描述牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?思路:st...

2019-04-12 20:14:53 186

原创 reverse()和reverse_copy()用法

需要包含头文件:#include<algorithm>reverse()reverse(beg,end):reverse()会将区间[beg,end)内的元素全部逆序;例子1:反转string#include <iostream>using namespace std;#include<string>#includ...

2019-04-12 19:36:55 3157

原创 剑指Offer第四十三题:左旋转字符串

题目描述汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!思路:我是直接存的方法,官方是三次反转函数。class Solution {pu...

2019-04-12 16:38:32 91

原创 剑指Offer第四十二题:和为S的两个数字

题目描述输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。输出描述:对应每个测试案例,输出两个数,小的先输出。思路:1.直接循环,由于是递增排序,到大于找的数时循环跳出即可。2.动态滑窗寻找。一个指最前端p1,一个最后端p2,若p1+p2>S,则p2向前移动一位,若p1+p2<S...

2019-04-12 16:14:58 98

原创 剑指Offer第四十一题:和为S的连续正数序列

题目描述小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出描述:输出所有和为S的连续正数...

2019-04-12 15:12:06 96

原创 剑指Offer第四十题:数组中只出现一次的数字

题目描述一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。思路:方法1.直接利用map即可。方法2:利用异或。比如 1^1 = 0,如果相同的数字,异或就会变成0;但这里需要划分两个数组出来,因为由两个数字。怎么划分才是重点,这里的划分方法是,这里我们需要用到数组里面所有数字异或的结果,然后从结果拿到从第几位开始为1,利用这一位是否为...

2019-04-12 14:19:12 141

原创 剑指Offer第三十九题:平衡二叉树

题目描述输入一棵二叉树,判断该二叉树是否是平衡二叉树。思路:判断平衡的条件就是左右子树高度差不超过1,如果从根节点出发判断,就会有很多重复判断,太浪费资源,所以我们可以从叶子节点开始判断,从叶子节点我们就可以用后序遍历来实现。树高度的求法可以看我这篇博客:https://blog.csdn.net/weixin_42513339/article/details/81274663...

2019-04-12 13:06:46 111

原创 剑指Offer第三十七题:数字在排序数组中出现的次数

题目描述统计一个数字在排序数组中出现的次数。思路:在排序数组中出现次数,实际上就是查找问题。所以可以二分法。PS:看到这题,我直接写了个map,直接映射查找,时间复杂度肯定不小,代码我也贴出来了。//1.利用mapclass Solution {public: int GetNumberOfK(vector<int> data ,int k) { ...

2019-04-12 11:19:41 99

原创 QtCreator保存Text Editor Scheme(保存的主题更换主题位置)

自己以前设置的主题可能在:C:/users/<你的用户名>/AppData/Roaming/QtProject/qtcreator/styles目录下QT官方的在该文件夹下:/opt/Qt5.10.1/Tools/QtCreator/share/qtcreator/styles...

2019-04-12 09:45:30 494

原创 剑指Offer第三十六题:两个链表的第一个公共结点

题目描述输入两个链表,找出它们的第一个公共结点。思路:这里两个单向链表如果有公共结点肯定是下面这种情况,最后通过公共结点汇合:1.看到这题我直接想到哈希,直接利用map存储一个链表,第二个链表遍历查找地址即可。2.链表的叠加,如下图,假设1个链表S1长度a+c,另一个S2为b+c,我们可以把S1链表后面接上S2的头指针,这样,第二次到相交结点应该是a+c+b;同理,我...

2019-04-11 22:57:32 197

原创 剑指Offer第三十五题:数组中的逆序对

题目描述在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007输入描述:题目保证输入的数组中没有的相同的数字数据范围:对于%50的数据,size<=10^4对于%75的数据,size<=10^5对于%10...

2019-04-11 21:46:58 154

原创 剑指Offer第三十四题:第一个只出现一次的字符

题目描述在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).思路:一开始觉得需要建立对立关系,需要用到map,但还是对map不熟悉,这里还是记录下吧。利用不同输入和次数进行建立映射,输入相同的在map中找到加1即可代码如下:class Solution {pu...

2019-04-11 18:32:45 82

转载 C++程序运行时间测试代码

#include<iostream>using namespace std;#include <time.h>int main(){ clock_t start = clock(); //测试块----------- //自己程序放入 //------------ clock_t ends = clock(); ...

2019-04-11 14:05:32 669

原创 头文件 sting.h 和 cstring 还有 string 区别

<cstring>是C标准库头文件<string.h>的C++标准库版本,包含了C风格字符串(NUL即'\0'结尾字符串)相关的一些类型和函数的声明,例如strcmp、strchr、strstr等。<cstring>和<string.h>的最大区别在于,其中声明的名称都是位于std命名空间中的,而不是后者的全局命名空间。<string&gt...

2019-04-11 13:20:57 486

Unity3D插件SteamVR(旧版本1.2.3)

SteamVR(旧版本1.2.3),完美适应LaserPoint等接口,由于SteamVR2.0 版本一些接口的删除,所以只好打包一个旧的版本出来

2018-12-26

OpenGL编程指南(红宝书第八版)中文电子书(带源码带库文件)

包含清晰电子书和源代码,《Open GL编程指南(原书第8版)》对OpenGL以及OpenGL实用函数库进行了全面而又权威的介绍,素有“OpenGL红宝书”之誉。

2018-09-27

空空如也

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

TA关注的人

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