自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 笔试练习day16

字符串替换题目链接这道题简单的来说就是给你两个字符串,第一个字符串里面包含占位符%s,我们需要做的是将这个占位符用第二个字符串的字符替换掉,因为可能会出现占位符%s的个数小于第二个字符串字符的总个数,也就是说多出来的字符我们要追加到第一个字符串的末尾代码解析这道题如果我们要注意内存大小,一开始我用了三个变量a b s,s是string类型用来储存字符的,其实就是每次循环在s后面尾插一个a的字符,当遇到%s时就尾插b的字符,但是后面告诉我说内存超了,所以就没这样做,后面我又看了一下好像可以这样做,但是不

2025-04-13 16:57:59 409

原创 笔试练习day15

平方数链接这道题就是求给出一个数,理他最近的平方数,这道题我们可以直接用sqrt函数,他是在math.h文件里面的,当我们用的时候,他会将结果向下取整另外我们还需要注意一点,这道题的数据范围有点大,我们要用long long类型,不然存不下分组分组链接这道题要注意有几种声部,如果声部类型大于分组的数量,那么就肯定是不可能分成功的,如果是小于的话就需要我们合理的进行分配了首先我们可以先统计每个声部有多少人对于分小组,如果我们直接拿着人数分,这样是不行的,因为我们不确定一个类型的声部应该要分多少组,以

2025-04-06 10:38:12 740

原创 笔试练习day14

链接这道题的意思就是B是A的子集,因为要求的是B的种类A也要有,且A的数量还要大于等于B,并且我们可以从题目中知道每个乒乓是用大写字母来表示的,所以我们可以确定最多有26种不同的乒乓此外这个题目的输入和输出结果有一点问题,表示的是换行符,实际上的输入和输出是这样的我们还需要注意题目中说的是多组数据,但是没具体给一个变量来表示有多少组,所以要用while循环去做这道题很明显是用哈希表去做,哈希表常用于统计信息再去查找的情况代码解析while(cin>>s1>>s2)是判断是否还需要输入,和C语言的

2025-04-04 15:47:32 943

原创 第一月第二周

今天其实没干些什么,我的任务在下午就做完了,后面他们也没给我安排其他的任务,所以我就自己去学东西,然后到了晚上才找我去测试摄像机,一直测到9点,我感觉这个部门的加班其实也不严重,我测到9点回去的时候发现办公室都没几个人了学校的事情真的很麻烦,特别是安排一堆水课让你去上才是真的恶心人,学也学不到东西,老师要求还非常多,跟导员说要请假,他又说要教课的老师同意,然后问教课的老师,有些老师同意,有些老师说是我自己的事情,不关他们的事,还有一些就是不同意,所以最后能去实习还是得靠自己去想办法。

2025-04-04 10:08:46 407

原创 第一月第一周

总的来说今天干的其实都没什么难度,就是选些视频,要求场景丰富,覆盖测试面广,并且要分简单和复杂场景今天做的就是给出测试样例的答案,感觉就是把我选的视频当成题目,后面把找出的真值当成答案没啥好总结的因为是刚来不久,所以第一周做的都不是很难,至于学到了什么,我感觉我学会了剪视频😂😂😂。

2025-03-30 16:46:35 369

原创 认识工作区、暂存区、版本库

首先我们先输入touch ReadMe创建一个ReadMe文件创建完给后现在有一个问题就是Git是否可以管理ReadMe文件,其实是不行的,因为ReadMe文件不是在本地仓库中的,这里的本地仓库指的是隐藏文件.git,这个.git也可以叫做版本库这里可能就会有人觉得那我把ReadMe文件放入.git里面是不是就可以管理了上一篇文章中有讲过.git文件是不可以被我们手动修改的,因为这样可能会导致整个文件都不可用,所以只能将ReadMe文件放在gitcode里,而这里我们将ReadMe称为工作区那Read

2025-03-24 08:30:00 261

原创 Git的认识安装及创建配置本地仓库

我们先看一下这个例子假如你是公司的一名员工,老板要求你去设计一个文档,于是你很快就写出来,你交给老板检查,老板却觉得这给文档还差了点意思,要求你去进行修改,很快你修改完了,于是再将文档给老板检查,老板依然不满意,于是你进行了第二次修改,第三次修改…最后当你修改第五次后,老板觉得你这么多次修改就第二次修改的文档最让我满意,就用第二次修改的文档吧,这时你发现你一直是对着同一个文档进行修改,你找不到之前修改的文档于是在后面你长记性了,每次修改时都会备份修改之前的文档,但是有次老板很严格,你修改了上百次之后,他

2025-03-23 11:38:46 1079

原创 笔试练习day13

链接这道题要考虑到连胜奖励,如果触发了那么一把就不是只加1颗星,而是加k颗星,输了的话那么就掉一颗星,同时连胜次数归零NC41 最长无重复子数组链接这道题可以用滑动窗口去求解什么情况可以用滑动窗口呢,比如这道题,我们如果用双指针的暴力解法的话会发现时间复杂度为n^2,这样会超时,并且用双指针会让后一个指针回退,然后继续遍历,发生这种情况是因为他们有相同的数字导致了回退比如下面这种情况如果我们让j回退回去再遍历的话,我们会发现j还是会在1那个位置停下,这完全是没有必要的,所以我们发现i和j在这

2025-03-17 12:04:56 587

原创 笔试练习day12

链接主要这里是删除的字符,其中包含的标点符号,之前我以为只删除字母,导致创建的数组大小为26这道题用的是哈希,我们通过ASCLL码值与数组下标的对应关系去做getline函数是因为输入的字符中可能会有空格,我们要将空格读入字符串中,所以要用getlinefor(char ch:s2)hash[ch]=true就是通过hash数组下标与ASCLL码值的对应关系,将数组的元素改为trueif(!hash[ch])cout<<ch,因为不是返回字符串,所以我们只需要将s1中没有在s2出现的字符打印出来就行

2025-03-02 14:56:23 758

原创 笔试连续day11

链接这道题的解法是枚举枚举就是用数学的方法,1号礼包的个数最大值为min(n/2,m),二号礼包就是在1号礼包的基础上减去用掉的水果,在进行求解,最后将1号礼包的个数和2号礼包的个数带进方程式种求出最大值如果用贪心的话会出问题这种方法的思路就是如果a礼包价格大于b礼包,就一直选1号但是这样做是错的,比如n=2 m=100 a=3 b=2如果选择1号礼包的话总价值为3,而选择b礼包的话就是4注意因为题目数据范围比较大所以选择用long long链接这道题和之前那道有一点区别,就是不规定交易次

2025-03-01 17:34:51 691

原创 笔试练习day10

链接这道题中的子串表示字符串A连续的一部分,子串是对称的方法一:动态规划 时间复杂度n^2 空间复杂度:n^2方法二:马拉车算法 时间复杂度n 空间复杂度:n方法三:中心扩展算法 时间复杂度n^2 空间复杂度:1这种方法就是每次以一个数为中心点,向两边扩散但是有一点需要考虑,就是回文子串长度为偶数的情况DP30 买卖股票的最好时机(一)链接方法一:贪心因为暴力解法用两层for循环会导致超时,而贪心是在暴力解法的基础上进行优化其实就是用一个prevmin表示当前位置之前的

2025-02-28 13:08:58 923

原创 笔试练习day9

链接这道题就是将数字切割,让他们每三个为一组方法一:因为要加逗号,所以我们要用string,首先我们需要得到输入数字的长度,因为是从后往前每隔三个开始插入逗号,所以用count来记录因为是从后往前,所以如果直接用string的+=操作会出现逆序打印,因此我们可以用insert前插,插入的位置就是字符串的开始位置方法二:这个方法比较粗暴,就是将输入数字看成整数,上面的方法是看成字符串,然后再将整数用%的方法得到最后一位,在除,一直这样循环就可以做出了了方法三:这个方法是利用了位数与下标之间的关系得出

2025-02-27 16:12:55 596

原创 笔试练习day8

链接这道题是求最大公约数,最大公约数表示位lcm(a,b)我们都知道最大公约数lcm(a,b)有这么一个等式lcm(a,b)=ab/gcb(a,b)(最大公约数)比如a=4 b=8那么计算就为ab/(4)=8这道题有两种思路一种是试除法,就是a和b从大到小一个一个的除,或者就是a和b在2到9这个范围内一直除,直到除完为止另一种就是辗转相除法在这道题中最大公约数是这样表示的gcb(a,b)=gcb(b,a%b)也就是说a和b的最大公约数等于b和a%b的最大公约数现在我们将gcb(b,a%

2025-02-26 17:26:09 931

原创 threadcache实现细节(二)

在之前有说过高并发内存池中每个线程都有自己独享的thread cache,而thread cache在之前的文章中也说到过是哈希桶结构,现在的问题是我们如何让每个线程都独享自己的thread cache呢在多线程中,在一个进程里可能有多个线程,多个线程共享进程地址的空间,每个线程有自己独立的空间 栈等等,每个线程也共享全局段 代码段等等比如下图中有三个thread cache,我们怎么确定他对应的线程能够独享呢,或者说谁是谁的thread cache,什么时候创建thread cache呢,如果是哪个线程

2024-12-08 17:04:59 786 2

原创 threadcache实现细节(一)

如图因为映射对应的对象是一个范围的比如size=7,因为7

2024-11-30 15:51:50 673

原创 threadcache整体设计

这是之前定长内存池的结构,这里的缺点就是定长,因为每次切割的内存大小是固定的,所以内存浪费的比较多thread cache的结构就在这个的基础上进行了升级thread cache是一个哈系桶结构,并且不是定长内存,而是切割成大大小小的内存,然后将对应的内存挂在指定的位置,这样就可以减少内存碎片的问题内存碎片化分为内碎片和外碎片上面的情况就是内碎片,比如我申请的空间是8个字节,但是实际上我只用了6个字节,多出来的空间就是碎片,这种碎片就叫内碎片内碎片就是申请的空间有小部分用不上上面的图在之前有用

2024-11-23 10:00:36 805 1

原创 设计定长的内存池

申请一大块内存,用一个指针指向申请的内存,这里的难点是内存释放,因为我们申请的是一块很大的内存,而使用的时候都是将这一大块内存切成一小块一小块的用,而用完后释放我们不可以直接将他还给系统,因为释放的内存太小了,如果还给系统就会出现内存碎片的问题,所以我们是要将需要释放的内存管理起来,当他们都释放后再归还内存,这里的管理方式就是用一个链表将内存管理起来由于是定长内存池,这里的定长就是切固定大小的内存首先我们需要一个类由于是定长内存池,所以类里面一点要有一个指针指向申请的内存空间,为了方便切割内存我们使用

2024-11-13 11:05:34 848 25

原创 内存池的含义

池化技术就是程序先向系统申请过量的资源,然后自己管理,以备不时之需。之所以要申请过量的资源,是因为每次申请该资源都有较大的开销,不如提前申请好了,这样使用时就会变得非常快捷,大大提高程序运行效率举个例子,大学生的生活费基本上都是一个月一个月的给,因为这样给效率会更高一些,假如不是这样一次性给很多钱,那么就会出现大学生经常找父母要钱,比如今天我想吃顿饭,结果发现没钱了,于是找父母要钱,而他们给的钱也就刚好够这顿饭的钱,等到了下次要吃饭的时候发现又没钱了,于是又找他们要钱。

2024-11-09 10:23:01 977

原创 笔试练习day7

OR59 字符串中找出连续最长的数字串这道题是找出最长连续的数字,并将这串数字以字符串的形式输出,解题的思路就是用两个指针(i和j)遍历这个字符串当i指针第一次遇到数字字符时就将位置给到j指针此时j往后开始去查找这个连续的数字字符串有多长,当j遇到不是数字字符的时候就表示这个连续的数字字符串已经找完了,要计算他的长度.这个长度的计算我们可以直接用两个变量去记录这个数字字符串的起始位置和长度然后i变到j的下一个位置继续重复上面操作当遇到字符串长度比之前的len要大的时候就更新begin和len

2024-10-16 17:08:55 1271 23

原创 笔试练习day6

链接大数加法这道题就是模拟计算的过程比如123+789,我们先让各位的相加,因为涉及到进位,所以需要有一个中间变量t保存进位的数比如3+9=12.需要进1,就用中间变量t=1计算十位的时候2+8+t=11,再让t=1…因为是以字符串形式去返回的,所以我们需要定义一个string ret并且计算的过程中需要知道字符串有多少个字符,所以我们用sizes和sizet分别表示字符串s和字符串t有多少个字符因为从个位开始计算,然后一直进位,所以我们要进行while循环,循环条件即是sizes和size

2024-09-28 11:55:30 1066 1

原创 Linux权限

权限的限定不是针对人,而是针对某种角色,比如我是某某学校的学生,所以我可以自由的出入学校,但是这个权利不是因为我这个人,而是我这个角色,是这个学校的学生,所以我有了这个权限,因此权限=人(角色)+事物属性。另外有一种特别的情况就是当一个用户即是拥有者又在所属组里,就会发生拥有者的所有权限都被限制了,而所属组的权限没有限制,这个时候这个用户的权限是拥有者权限还是所属组的权限呢?在生活中权限无处不在,比如当我们在看电视剧时的VIP用户可以看提前看视频等等,以及一些游戏的VIP用户,可以获得一些特殊的权利等等。

2024-09-15 21:55:45 1253 16

原创 Linux基础指令(三)详解

面对大文件时我们很难查找到最开始的数据,比如我们想要看第一行,我们可能会慢慢的往上滑动去找,但是有了more命令后我们输入more log.txt就可以一行一行的去查找,如果想要直接跳到某一行, 比如跳到100行,我们就输入/100,这里的100是关键字,当查找完后我们可以按Q+回车退出。当我们多次运行之后发现log.txt的内容没有变化,这是因为我们用的是"w",他的意思是只写,但是没有追加写的意思,如果要追加写的话应该用"a"

2024-09-10 12:04:49 778 19

原创 Linux基础指令(二)详解

我们现在处于根目录,现在进入bin这个文件中进入后用ls展示所有的文件名我们会发现有许多看不懂的文件,但当我们仔细的去找的时候发现里面的一些文件名就是之前指令的名字我们可以通过ls -l去搜索出来所以这里想要说的就是指令其实就程序在我们平时用的一些软件中,其实就是通过代码编写出来最后生成可执行的应用程序,我们可以在文件中找到应用程序应用程序是以.exe结尾的,我们平时写的代码在运行时也会生成生成.exe结尾的文件因此指令 程序 可执行程序其实都是一回事,指令就是程序,因此安装其实就是在

2024-09-04 22:49:32 1016 40

原创 Linux基础指令(一)详解

首先我是在阿里云上购买的云服务器当购买后点击控制台来到这个界面后点击左上角的三个杠点击云服务器在云服务器中我们可以查看到公网IP(在用其他软件远程连接的时候会用到)并且我们也可以直接在当前界面上远程连接云服务器 当然我们也可以通过下载阿里云的软件远程连接云服务器下载后点击红色方框中的这个东西来到这个界面后要输入公网IP(公网IP查看方式在上面有提到)我们可以只修改公网IP,其他的可以不动修改完后我们需要输入登录的用户名,在刚开始的时候我们所用的都是root账号,所以只需要输入r

2024-08-27 13:46:28 1022 31

原创 笔试练习day5

链接JZ62 孩子们的游戏(圆圈中最后剩下的数)这个有点类似于约瑟夫问题。

2024-08-20 13:42:21 1159 34

原创 笔试练习day4

链接WY22 Fibonacci数列这道题不是让我们求斐波那契数,而是让我们将一个数通过加或减的方式去让他变成一个斐波那契数,每次变化的绝对值为1,要求我们得到最小变化的次数我们以示例1为例子N=15时只需要求出他距离那个斐波那契数最近就可以了,比如15-13=2 21-15=6,显然15距离13最近,因此输出2当N=13的时候,距离应该是0,因为N就是斐波那契数所以我们得出了一个结论就是首先我们需要判断N是否是斐波那契数,如果是就返回0,如果不是那就说明N是在两个斐波那契数中间夹着的,我们只需要求

2024-08-12 08:00:00 1207 35

原创 笔试练习day3

链接添加链接描述这道题就是提取一句话中每个单词的首字母,并且将他们的首字母用大写的形式输出,这里的难点就在于每个单词是通过空格分隔开的,在输入的时候如果用scanf和cin直接输入的话会因为有空格而丢失后面的数据解决这个难点的第一个方法是用getline输入,getline输入是遇到’\n’才停止,也就是遇到回车键才结束,这样就不会因为有空格而丢失数据了,后面过程就是通过循环去找空格出现的位置,然后空格的下一个位置就是单词的首字母第二个方法就是用string去解决(这个解法就是通过循环直接往strin

2024-08-08 08:00:00 810 30

原创 笔试练习day2

链接BC64 牛牛的快递这道题和出租车那种是一个意思,首先要有一个起步价格,之后多出来的要额外收费,这样看起来就是一个一次函数的方程,y=kx+b+a,k=1是每千克收的钱,x是快递的重量(这里要注意x有小数的话要往整数进1),b=20表示的是起步价,而a就是是否加急的费用,不加急a=0,加急a=5我们需要先模拟一下这个过程,假设有akg,对于a来说有两种情况,一种是<=1,另一种是>1对于<=1这种情况比较简单,>1这种情况是要考虑a-1是否有小数,如果有小数就需要向上取整,比如1.1向上取整就是2

2024-08-04 08:49:34 1377 29

原创 笔试练习day1

链接BC153 [NOIP2010]数字统计这道题是统计2出现的次数,比如在[2,22]中,出现2的有,2,12,20,21,22,其中22中2出现了2次,所以要统计一个数中是否有多个2出现另外我们还需要分析题目给出的范围因为根据题目的信息我们可以得出是整形类型,int的数据范围是10^9,当题目给的数据范围超过这个的时候,我们要用longlong类型数字拆分这个方法比较常用,就是重复模10之后再除10拿22举例第一步:22%10我们就可以得到他个位的数字也就是2第二步:个位的数字拿到后,我们就

2024-07-30 08:52:43 925 23

原创 模拟string(四)详解

现代写法相对于传统写法在二插树 链表等场景优势比较明显因为树的节点如果用传统写法需要一个节点一个节点的开空间,然后再释放,而现代写法就是直接调用拷贝构造函数,然后就交换,并且省了自己去释放空间。

2024-07-27 11:28:59 1190 13

原创 模拟string(三)详解

因为返回的值是不允许被修改的,所以在后面加了个constsize_t capacity()const获取capacity代码char& operator[](size_t pos)获取pos位置字符这里有两个函数,因为有时候会遇到常量字符串,就是只能读取数据,但是不能修改,所以需要分两个函数来对待不同的情况const char& operator[](size_t pos) const获取pos位置字符(只能读取不能更改)代码我们加上断言可以防止访问越界,并且因为pos位置的空间是通过ne

2024-07-24 09:10:41 998 28

原创 模拟string(二)详解

void reserve(size_t n)我们需要先判断如果传入的n值是大于或等于_capacity时,就代表需要扩容,这里的扩容我们用new来扩容new扩容的方式就先用一个char*的tmp类型指针,然后new开辟一块空间,空间大小为n个字节因为new开辟的空间是没有数据的,所以我们需要将_str的数据拷贝过来,所以strcpy,然后拷贝之后释放掉原来的空间让_str指向tmp所指向的空间,之后更改_capacity的值void insert(size_t pos, char ch)字符前插错误写法

2024-07-21 10:22:26 736 21

原创 模拟string(一)详解

这里的错误是_str(nullptr),因为C++要对C语言进行兼容而有一个函数是下面这样的,返回指针如果返回的是空指针,然后我们将他打印,就会出现问题而我们用库里面的就不会出现问题指针初始化的时候不可以像下面这样因为在初始化的时候传入的指针可能会是下面这样的情况将常量字符串传入,导致在初始化后我们不能将str修改,并且不可以扩容所以正确写法是自己开空间拷贝数据这个顺序是不可以的,因为初始化列表的初始化顺序不是按实例化的顺序,而是按照声明的顺序初始化,这样就会导致_str在初始化的时候s

2024-07-18 07:00:00 879 16

原创 认识string(三)详解

这个函数在之前数据结构的文章中有模拟实现出来过,就是尾差,只不过这里的push_back是尾差字符append就是在当前string中的字符串里,追加一个字符串append有六个函数,和之前文章认识string(一)详解中的Construct string非常相似,所以就不介绍了这是他的一些例子operator+=其实就是结合了上面两个的功能assign的功能就是覆盖掉当前的字符串insert就是前插的意思,因为实现的函数比较多,所以就不演示了这是他的一些例子erase功能就是删除字符

2024-07-16 07:00:00 1033 14

原创 认识string(二)详解

这两个其实是一样的,我们通常使用的是sizesize的英文解释:The number of bytes in the string.size_t is an unsigned integral type (the same as member type string::size_type).翻译:字符串size_t中的字节数是无符号整数类型(与成员类型string::size_type相同)。lenth的英文解释:The number of bytes in the string.size_t is an

2024-07-12 23:07:11 947 26

原创 认识string(一)详解

string文档(这个文档广告有点多)建议在看这个文档的时候用旧版本去看,因为旧版本支持搜索,想要进去旧版本就点击红色方框这个位置如果英语不好的可以点击翻译当前页面,但是有时候翻译会有一点问题,比如我们搜索printf函数,然后翻译当前页面后,就会出现下面这种情况,参数的说明符被翻译了而没有被翻译时是这样的所以最好是用英语去看C++的STL的容器是在reference的containers中string则是在reference的miscellaneous headers,如果sting实

2024-07-11 12:36:59 927 23

原创 模板初阶详解

class 类模板名// 类内成员定义。

2024-07-10 08:00:00 1060 22

原创 C/C++内存管理

下面是C语言对自定义类型的一些写法int val;下面是C++的写法int _val;new开空间是会调用malloc,但是直接去调malloc开辟失败了会返回空,所以用operator new去封装malloc下面是调用的一些过程。

2024-07-08 08:00:00 1326 21

原创 类和对象深入理解

声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量用static修饰的成员函数,称之为静态成员函数。静态成员变量一定要在类外进行初始化面试题:实现一个类,计算程序中创建出了多少个类对象。这里的n就是一个静态全局变量,注意静态变量是不能给缺省值的,因为他不是单独属于某一个对象,而是属于这个类的所有对象,因此需要在类外面定义由于n受域作用限定符的限制,当我们屏蔽掉private后就可以访问n了我们再来看看下面的三段代码上面的三个代码中ptr输出的n的值是

2024-07-06 08:53:28 983 20

原创 构造函数深入理解

int _month;int _day=2;int& _ref;A _aa;return 0;现在有一个自定义类型A,将A_aa的声明放在Date的成员声明里,但是A_aa没有在Date的初始化列表当中定义,那A_aa会不会被定义呢?我们需要理解下面这句话。

2024-07-04 10:37:20 1060 27

空空如也

空空如也

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

TA关注的人

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