自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 封装哈希表

本文旨在讲解哈希表的封装,我们以哈希桶的结构来进行封装unorderedmap/set。要想实现封装哈希表,我们首先得先将哈希桶的结构给搭建出来,然后再根据哈希桶的结构进一步封装unorderedmap/set!下面我们先来实现哈希桶的结构,哈希桶的结构其实就是相同映射值的在一个桶内,然后把相同的桶内的元素通过指针链接起来即可,所以我们要先实现哈希表中的结点的结构体!因为其节点类似于链表的结构,所以里面存放的是节点的指针,以及该节点存储的值!

2024-03-17 15:46:07 1095 18

原创 链表专题刷题讲解

今日为大家分享一波关于链表中的一些题目!希望读完本篇文章,读者们也可以尝试一下这些题目,也会加强大家对链表的认识!

2024-03-31 23:17:04 1103

原创 Linux权限讲解!

本文旨在讲解Linux中权限相关的知识,希望读完本文,能使读者对linux中权限有更深一步的认识!在讲解权限之前,我要先给大家介绍一波Linux中用户有哪些?

2024-03-31 23:10:31 702

原创 栈刷题集总结

当遇到一个右括号时,说明我们已经可以进行解析一次,我们取出数字栈顶的元素和字符串栈顶的元素,我们首先要做的是保存字符串中栈顶的元素,然后进行pop操作,然后再将保存的字符串根据数字的个数,尾插到新的字符栈栈顶的后面即可!采用栈的数据结构进行求解,因为我们每次进行解析的时候,当匹配到第一个右括号时, 我们只需要将其与其最近的左括号进行匹配,然后与其左括号之前的数字进行匹配展开即可完成第一次字符串的解析!根据题意,可以得出,我们要进行删除相邻的重复项,然后返回删除后的结果即可!

2024-03-31 23:09:53 686

原创 shell的工作原理

本文旨在讲解shell的工作原理,希望读完本文,能使读者对shell的工作原理有一定的认识,废话不多说,开唠!在讲解shell的工作原理之前,我要首先给大家讲一下什么是操作系统,以Linux操作系统为例:狭义上的操作系统:指的就是我们的Linux中的内核!广义下的操作系统:就是Linux内核+Linux外壳以及相配套的程序!既然简单介绍了什么是操作系统,那么我们就来分享一下什么是Linux外壳呢?其作用是什么呢?以及存在的意义是什么呢?

2024-03-29 23:36:53 1301 18

原创 C++11右值引用以及移动语义

1.左值引用只能引用左值,不能引用右值。2.但是const左值引用既可引用左值,也可以引用右值!1. 右值引用只能右值,不能引用左值。2. 但是右值引用可以move以后的左值。那么既然有了左值引用,为什么还要引进右值引用呢?下面就先来看一下左值引用的作用吧。

2024-03-29 23:36:25 773 15

原创 队列+宽搜例题讲解!

我们可以利用队列先进先出的特性进行求解,这里比层序遍历多了一个条件,记录当前层有多少个节点,然后只把当前层的节点出完即可,就是一层一层的进行输出,我们需要记录每层的节点的值,所以我们应该使用一个vector存储每层的节点,然后最终将每层的结点放到最终的vector中即可!还是和N叉数的层序遍历一样,我们还是需要记录的每层结点的个数,只不过本次我们需要引进一个新的变量,用于记录每层的最大值即可,我们开始将此变量置为INT_MIN即可!至此,本专题总结完毕,有疑问的小伙伴可以在评论区进行讨论。

2024-03-27 23:11:32 679 7

原创 布隆过滤器详讲

既然介绍了这些字符串哈希函数,那么我们就来讲一下布隆过滤器是如何诞生以及实现的,上面已经提到了,因为位图不能处理非整形的数据,那么面对一个非整形的数据,我们就需要进行一次哈希函数将其转化为整形,然后再进行映射到地址中去,但是对于字符串哈希函数,我们很难保证没有不同的字符串对应有相同的数字,此时再进行某一位的映射时,就会导致误差!例如:对于上图,如果middle与end的对应的整形相同,那么就会映射在同一块区域,那么当end不存在的时候,但是middle存在的时候,就会导致误判,误判end也存在!

2024-03-27 23:11:00 1135 10

原创 bitset详解

位图就是bitmap的缩写,所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,该数据都是不重复的简单数据。通常是用来判断某个数据存不存在的。C++中以bitset定义为位图,下面我们来看一下C++对位图的解释吧!在C++中,位图以非类型的模版参数定义,简单翻译下来就是:位图存储比特位(其存储的元素只有0/1两个值)。

2024-03-19 21:23:59 922 25

原创 stringstream的详解!

1.stringstream实际是在其底层维护了一个string类型的对象用来保存结果。2.多次数据类型转化时,一定要用clear()来清空,才能正确转化,但clear()不会将stringstream底层的string对象清空。3.可以使用s. str("")方法将底层string对象设置为""空字符串。4.可以使用s.str()将让stringstream返回其底层的string对象。

2024-03-19 17:29:44 912 15

原创 二叉树OJ练习

本文旨在讲解有关二叉树的OJ题目,希望读完本文,能让读者都二叉树有更深一步的认识!正文开始!

2024-03-17 15:47:37 313 4

原创 自行编写一个简单的shell!

本文旨在编写一个简单的shell外壳程序!功能类似于shell的一些基本操作!虽然不能全部实现shell的一些功能!但是通过此文章,自己写一个简单的shell程序也是不成问题!并且通过此文章,可以让读者对linux中一些环境变量等基本概念有更深的理解!希望读完本篇文章能对读者有一定的收获!文末会附带自己编写shell的源码!好的废话少说,正文开始!首先我们先来看一下linux中的shell长什么样子!这是其shell刚启动的时候的样子!其外貌就是一个中括号内部加上一系列的东西!

2023-12-09 21:42:47 2982 35

原创 浅谈linux缓冲区的认识!

今天来为大家分享一波关于缓冲区的知识!那么既然我们要谈缓冲区,那么就得从是什么?为什么?有什么作用这几个方面来谈论一下缓冲区!然后再通过一些代码来更加深刻的理解缓冲区的知识!

2023-12-09 00:03:35 1739 35

原创 159.库存管理(TOPk问题!)

思路:也是tok的问题,与上篇博客思路一样,只不过是求前k个小的元素!

2023-12-02 22:59:51 924 27

原创 215. 数组中的第K个最大元素

思路:其中此思路是利用快排的思想,将整个数组划分为三大块,分别为大于key 等于key和小于key这三大块!其中优先级队列利用的其实就是堆结构!建堆解决此问题的原理就是和优先级队列是一样的!算法思路和优先级队列一样,这里仅仅给出代码参考即可!不会的可以评论区继续讨论!因为是使用的优先级队列,所以要求第K个大的元素,只需要将数组POP (k-1)次,然后再取队列的队头元素即可!

2023-12-02 22:37:27 509 4

原创 程序/进程替换(讲解)

本文旨在讲解进程替换的知识!希望读完本文,能使读者对进程替换有更深一步的认识!!好的,废话不多说,干货来了!

2023-11-30 23:44:29 1385 40

原创 力扣:1419. 数青蛙

仅仅创建一个哈希表也是可以解决问题的,只不过下面要通过多次if ,else if,来一一列举出现的情况!当前面的元素存在时,只需将前面的元素--,当前元素++即可!通过题目的描述,需要求出最少的青蛙的个数!叫完如果仍有新的蛙叫,首先选择让已有的青蛙继续叫,只有没有青蛙叫完的情况下,才会新增一个青蛙来进行叫!当元素为第一个字符时,只需要判断最后字符是否存在,如果存在--,不存在++即可!创建一个与蛙叫的字符个数相同的哈希表(其实无需真正创建哈希表,只要创建一个数组来统计某个字符出现的个数即可!

2023-11-30 23:43:54 666 1

原创 进程等待讲解

进程等待:进程等待就是通过系统调用wait/waitpid的方式,让父进程对子进程进行资源回收的等待过程!

2023-11-27 21:07:08 1835 52

原创 力扣6:N字形变化

答案是肯定的,我们可以通过上图发现一个规律,第i的第一个元素都是i,然后第一行和最后一行有着相同的规律,每隔一个固定的值,会出现一个元素!那么如何求出这个固定的值呢?我们可以将其中间只有一个元素的统一移到第二列,第二列并没有填满,而是只缺少了第一行和最后一行,所以我们不难得到公差d=2*numsRows-2!(i,d-i)---->(i+d,d-i+d)---->(i+2d,d-1+2d) 直至值大于等于len结束!i---->i+d----->i+2d---.......(直至值大于等于len结束!

2023-11-27 21:05:55 592 2

原创 力扣:提莫攻击

思路:因为攻击之后,其中毒机制会重置!还给了一个变量dur,表示持续时间!所以可以根据此规律可以得出,若两次间隔时间>=dur的时候,实际上中毒了dur秒,否则就是中毒了nums[i]-nums[i-1]秒!从数组下标为1开始判断!最后那一次无需进行判断!因为是最后一次,所以一定中毒了dur秒!根据此思路即可求解!

2023-11-25 23:24:19 893 21

原创 常见位运算的详讲!

1.基础位运算">>"右移操作符!"

2023-11-25 23:15:13 1217 20

原创 vim相关命令讲解!

按「 $ 」:移动到光标所在行的“行尾”按「^」:移动到光标所在行的“行首”

2023-11-10 10:51:39 1054 19

原创 简单剖析程序的翻译过程!

本文旨在讲解一段源程序如何翻译成机器所能识别的二进制的命令的,希望通过本文,能使读者对一段程序的翻译过程有进一步的认识!这里首先要介绍的是一段程序从编写完成到执行需要经过以下几个步骤!

2023-11-09 23:50:03 218 10

原创 C++模版初阶讲解

在我们进行学习的编程中,常常会有许多函数的功能相同,有些不同点可能就是其中的数据类型不同!如果我们统统进行函数重载的话,其实也能解决问题,例如,实现两个数的交换!.....但是函数重载也存在许多问题!1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数。2. 代码的可维护性比较低,一个出错可能所有的重载均出错。那么是否有一种更好的方法来解决这种问题呢?答案是肯定的,最好的解决方法就是引用模版!

2023-10-18 17:25:48 278 22

原创 力扣:611. 有效三角形的个数

第二步又细分为两种情况!2.1 当sum的值大于max,可以组成三角形!又因为是数组元素是单调的,所以left后面的数值与right的数值相加都可以组成三角形!即有right-left种情况!再让right--继续进行判断!2.2当sum的值小于等于max时,不能组成三角形,只需要让left++再次进行判断即可求解!(最后当左右指针相遇时本次循环结束!图解:

2023-10-13 22:23:19 518 17

原创 力扣:1089. 复写零

二、然后。

2023-10-10 23:09:10 194 19

原创 C++流插入和流提取的重载!

又因为<<操作符是基于两个变量的,而省略的第一个变量是this指针,若在类内定义时,结果是:this.data<<ostream out,显然是与我们的<<不符,

2023-09-21 22:45:42 395 25

原创 C++const关键字

本文旨在讲解C++中相关const关键字的详解,希望读完本篇文章,可以让诸位对C++中的const关键字有更深一步的认识!在C++中,若想让类中某一个变量不再改变,可以使用const关键字进行修饰,让数据不被修改,使其变为常量属性。当然const不仅可以修饰类中的变量,还可以修饰类中的函数,二者没有太大的区别,下面来详细讲解一番。

2023-09-19 23:11:44 192 23

原创 C++构造函数

本文旨在讲解C++中。

2023-09-11 23:37:31 166 30

原创 C++this指针

this 是C++中的一个关键字,也是一个 const指针,它指向当前对象,通过它可以访问当前对象的所有成员。下面来看一下关于this这个关键字的实例!int _month;int _day;public:cout << "this的地址"<<this << endl;_day = day;Data D2;cout <<"D1的地址:"<< & D1 << endl;

2023-09-10 22:07:32 583 15

原创 C++函数内联详解

在计算机科学中, 内联函数 (有时称作 在线函数 或 编译时期展开函数 )是一种编程语言结构,用来建议 编译器 对一些特殊 函数 进行内联扩展(有时称作在线扩展;也就是说建议编译器将指定的函数体插入并取代每一处调用该函数的地方( 上下文 ),从而节省了每次调用函数带来的额外时间开支)C++引进内联函数的原因C++语言支持内联函数,其目的是为了提高函数的执行效率(速度)。宏定义的缺陷在C程序中,常常使用宏定义来提高代码执行效率。

2023-09-09 23:05:58 544 21

原创 C++中引用详解!

引用如何定义呢,定义引用其实很简单,只需要一个类型名+&+对象名=引用实体!例如:在本实例中,因为a,c的地址相同,说明二者存在引用和被引用的关系!所以c就是对变量a的引用。注:引用类型必须和引用实体是同类型的,如本例题中,实体a的类型为int型,引用类型也是int型!2.引用特征1. 引用在定义时必须初始化2. 一个变量可以有多个引用3. 引用一旦引用一个实体,再不能引用其他实体3.常引用。

2023-09-08 17:01:18 387 24

原创 命名空间的详讲

C++作为C语言的衍生,其对C语言中的一些缺陷进行了一些的补充和优化。但是C++也对C语言具有兼容性!本文旨在讲解C++对C语言中当声明的变量与库函数的一些标识符,关键字名字相同的冲突!对于命名空间的变量类型来说:其可以包括普通的内置类型,函数,结构体!例如:当然,命名空间内部也可以嵌套其他命名空间!

2023-09-06 22:50:19 168 10

原创 归并排序的详解!

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。

2023-09-03 08:00:00 940 19

原创 快速排序三种思路详解!

快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法,其基本思想为:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。(其时间复杂度最优为N*logN,空间复杂度最优为lonN,这里就不予证明了!过程相当复杂!

2023-08-26 00:31:56 1710 15

原创 详解双向带头循环链表

为。

2023-08-10 10:14:33 166 7

原创 经典面试题目(模拟实现atoi函数!)

这么自信,那你考虑过如果传过来的参数是空字符,空指针,非法字符,传入的数值溢出等等呢?,最终将其返回int类型,他也判断了是否会溢出等问题,若溢出则返回非法,若正常,则正常输出!返回值:如果成功,则返回转化后的整形,如果转换的值超出整形可表示范围,则会造成为定义行为!(顺手递给一张白纸!求职者:(脸上漏出自信的微笑),atoi函数作用是将一个字符串转化为一个数字。求职者:(心想:纳尼,糟了,竟然把这些情况漏了。)好的,我现在再修改一下!,他把默认值设置为非法,因为大多数情况下为非法情况,其次呢他考虑到了。

2023-07-25 10:39:18 94 10

原创 字符串函数“武林秘籍”,让你少走两年半的弯路!

C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符串 中或者字符数组中。字符串常量适用于那些对它不做修改的字符串函数。

2023-07-14 10:29:16 80 6

原创 秒杀浮点数在内存中的存储!

首先我们需要了解到整数和浮点数在内存中的存储方式是不相同的,所以我们当我们用浮点数的格式取出一个整数或者用整数的格式取出一个浮点数,就会导致我们想不到的结果!)在内存中的存储,其存储方式是否和整数在内存中的存储方式一致呢?证明我们的结果是正确的!当看到这串代码时,每个同学可能都会有不同的答案,下面我们来看一下具体打印出来的结果如何!前面我们已经讲了整数在内存中的存储,以及相关大小端存储等概念,下面我们就来讲一下浮点数(好的,今天分享的浮点数在内存中的存储到此为止,若还有疑问,欢迎各位佬们评论区留言!

2023-07-03 21:38:51 62 3

原创 统计个位数字

代码的实现过程都写在了代码块中!若小伙伴们存在疑问,请在评论区评论即可!本文旨在讲解求指定一个数中的数字的出现的次数!

2023-06-07 09:00:00 271 2

空空如也

空空如也

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

TA关注的人

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