- 博客(55)
- 收藏
- 关注
原创 Linux——冯 • 诺依曼体系结构&操作系统初识
当学生的数量多起来了,校长就可以将全部学生的信息组织起来,当然组织的方式有很多种(链表、顺序表、树),而每种组织方式都有其自己的优势,于是就有了一门课程专门教我们管理数据的方式,那就是数据结构。与此同时,键盘将信息加载到内存后,CPU要获取内存中的信息并进行处理,处理完后写回内存,此时你的电脑网卡就回从内存中获取相应的信息,再通过网络传输到对方的电脑。,在你向朋友发送消息这个过程中,你的电脑当中的键盘充当输入设备、显示器和网卡充当输出设备,你朋友的电脑当中的网卡充当输入设备、显示器充当输出设备。
2025-04-01 18:02:04
816
原创 动态规划——回文串问题
这道题看起来比较困难,实际上并不难,我们利用前面动态规划的思想可以瞬间降这道题变得简单。说明:填表顺序那里笔误,应该是从下往上填每一行。6. 让字符串成为回文串的最小插入次数。5. 最长回文子序列。4. 分割回文串II。
2025-04-01 18:01:46
247
1
原创 Linux——Shell运行原理以及Linux权限
大家发现,我们对dir目录来说是other,我们拥有对其写的权限,那么我在dir目录下创建一个新文件test7.txt,此时大家注意这个文件没有写权限,但是我们还是能将它删除,所以这个现象就比较奇怪了,我不能“写”这个文件,但是却可以直接删除它,为了解决这个不合理的问题,Linux引入了。只要用户拥有某目录的可写权限,就可以删除该目录当中的文件,而不论该用户是否拥有该文件的可写权限,这显然是不合理的。2)在Linux当中,所有用户都要隶属于某一个组,哪怕这个组只有你一个人(此时该组就以你的用户名为组名)。
2025-03-12 19:14:04
5918
7
原创 动态规划——子数组系列
这里来总结一下关于初始化我们学到的三个方法,首先最常用的就是添加虚拟节点的方法,使用这个方法大家知道注意两个注意事项,前面的题目分析里有,这里不做赘述;这道题初始化和前面的题目是有所不同的,这里我们根据题目要求可以发现,最差的情况也是1,所以我们直接将f表和g表中的值初始化为1,这样做可以为我们省去一些麻烦。这里需要解释一下,在分析返回值的时候,我们有一种情况是数组中的值都为负数,此时我们不能返回0,0表示啥都不选,题目要求非空子数组。4. 乘积为正数的最长子数组。2. 环形子数组的最大和。
2025-03-12 19:13:57
559
1
原创 优选算法——哈希表
大家来看上面的图,我们需要创建一个哈希表来存储数组下标以及对应位置的值,然后直接在哈希 表中查找每⼀个元素的target - nums[i] ,就能快速的找到「目标和的下标」。其实思路不难,我们只需要创建一个哈希表,把其中一个字符串放进去,对应位置++,然后再遍历另一个字符串,对应位置--,对应位置的值如果刚好都减为0,说明可以重排;我们创建这样的键值对,key为按照ASCII码值排好序的字符串,vaule为对应异位词,将它们放到哈希表中,最后我们需要将哈希表中的vaule提取出来就得到了我们想要的结果。
2025-01-23 21:20:55
1039
原创 C++——继承
继承⼀定程度破坏了基类的封装,基类的改变,对派⽣类有很⼤的影响。多继承:⼀个派⽣类有两个或以上直接基类时称这个继承关系为多继承,多继承对象在内存中的模型 是,先继承的基类在前⾯,后⾯继承的基类在后⾯,派⽣类成员在放到最后⾯。
2025-01-05 17:02:50
922
1
原创 C++——多态
2. 多态的定义及其实现前言前面我们介绍了继承的相关内容,今天我们来介绍多态,这也是C++中一个非常重要的概念。在笔试和面试中经常会考到,所以大家如果对C++感兴趣,请继续阅读本篇内容,下面进入正文部分。1. 多态的概念多态(polymorphism)的概念:通俗来说,就是多种形态。多态分为(静态多态)和(动态多态),这⾥我们重点讲运行时多态,编译时多态(静态多态)主要就是我们前⾯讲的。
2025-01-05 17:01:48
1112
1
原创 vector的模拟实现
如果此时我们使用的是memcpy函数进行拷贝构造的话,那么拷贝构造出来的vector当中存储的每个string的成员变量的值,将与被拷贝的vector当中存储的每个string的成员变量的值相同,即两个vector当中的每个对应的string成员都指向同一个字符串空间。对容器进行析构时,首先判断该容器是否为空容器,若为空容器,则无需进行析构操作,若不为空,则先释放容器存储数据的空间,然后将容器的各个成员变量设置为空指针即可。
2024-12-07 17:21:02
1171
1
原创 STL——string类的模拟实现
前言前言前面为大家介绍了string类的使用,本篇博客我们自己来实现一下string类,这里说明一下,我们只实现一些核心的接口,目的是让大家了解string的底层,加深对string类的理解和掌握,下面进入正文部分。1. 默认成员函数1.1 构造函数构造函数设置为缺省参数,若不传入参数,则默认构造为空字符串。字符串的初始大小和容量均设置为传入的长度(不包括’\0’)这里大家在开空间的时候需要多开一个,因为capacity是不包括\0的,所以我们需要为\0多开一个空间。1.2 拷贝构造函数。
2024-11-26 22:06:06
1150
1
原创 C++——类和对象(part2)
像Stack这样的类,虽然也都是内置类型,但是_a指向了资源,编译器⾃动生成的赋值运算符重载完成的值拷贝/浅拷贝不符合我 们的需求,所以需要我们⾃⼰实现深拷贝(对指向的资源也进行拷贝)。6. 传值返回会产⽣⼀个临时对象调用拷贝构造,传值引用返回,返回的是返回对象的别名(引⽤),没有产⽣拷贝。
2024-11-17 22:12:42
884
1
原创 STL——list的介绍和使用
前言前言本篇博客我们继续来介绍STL的内容,这次我们要介绍的是list这个容器,可以简单地理解为顺序表,当然和我们之前学过顺序表还是有区别的,具体内容大家可以继续往下阅读,下面进入正文。1. list简介1.list是一种可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立结点当中,在结点中通过指针指向其前一个元素和后一个元素。
2024-10-30 22:50:58
1070
2
原创 STL——vector的介绍和使用
本篇博客为大家介绍vector的内容,之前我们说过的string,vector也是一种容器,学习的模式可以类比string,包括后面要学习的其他容器,它们都有相似之处,也同样都比较重要,是STL的核心内容,所以大家需要重点理解并掌握这里的内容,OK,下面进入正文部分。在该代码中,我们本意是使用元素2的迭代器在原序列中2的位置插入一个10,然后将2删除,但我们实际上获取的是指向2的指针,当我们在2的位置插入10后,该指针就指向了10,所以我们之后删除的实际上是10,而不是2。这里与string是类似的。
2024-10-30 22:50:43
1164
3
原创 链表OJ题
本道题存在一个有趣的结论:让一个指针从链表起始位置开始遍历链表,同时让一个指针从判环时相遇点的位置开始绕环运行, 两个指针都是每次均走一步,最终肯定会在入口点的位置相遇。这个问题其实很容易解释,当两个指针都进环的时候,它们之间存在差距,每走一次,快指针就会比慢指针多走一步,差距也就同时减小一步,这样,迟早差距会变为0,即追上。第二,我们怎么找交点?
2024-08-17 16:09:50
385
1
原创 单链表的应用
前言前言之前我们介绍了链表的知识,本篇博客我们来看一些关于单链表的OJ算法题目,大家可以通过这些题目来加深对单链表的理解,如果你对本篇内容感兴趣,请继续往下阅读,下面进入正文部分。题目1 移除链表元素这道题有两种思路,第一种思路:我们找出链表中等于val值得节点。然后将他们删除掉;第二种思路:我们创建一个新链表,找出值不等于val的节点,然后将它们尾插到新链表中。
2024-08-17 16:09:32
672
3
原创 C语言——编译与链接&&预处理详解
2. 更为重要的是函数的参数必须声明为特定的类型。大家可以看到,这里我们本来是相求出两个数中的较大值,我们想要的结果应该是5,但是输出结果为6,所以这就是宏参数的副作用。当宏参数在宏的定义中出现超过⼀次的时候,如果参数带有副作用,那么你在使用这个宏的时候就可能出现危险,导致不可预测的后果。
2024-08-09 17:45:54
1133
1
原创 C语言——查漏补缺
本篇博客主要记录一些C语言的遗漏点,完成查漏补缺的工作,如果读者感兴趣,可以看看下面的内容。都是一些小点,下面进入正文部分。
2024-08-09 17:45:27
1615
4
原创 C语言刷题小记3
分析:本题要求我们来删除一个序列中指定的数字,这里大家要注意我们要删除的数字可能不止出现一次,所以我们需要用两个变量来进行处理,一个变量来遍历数组,一个变量来存储数组的位置,大家来看下面的代码;分析:本题要求我们来进行矩阵的交换操作,分别有行交换和列交换;当数组的值不等于我们要删除的值时,我们就将它存起来,然后让j变量和i变量分别往后遍历,最终就可以实现删除指定位置数据的效果。分析:本题要求我们对序列中的整数进行去重操作,那么我们要对数组进行遍历,然后依次比较每个数后面的所有数,遇到相同的进行去重。
2024-08-04 19:42:09
390
1
原创 C++——类和对象(part1)
• ⼀个类可以实例化出多个对象,实例化出的对象占用实际的物理空间,存储类成员变量。,函数指针是⼀个地址,调用函数被编译成汇编指令[call地址],其实编译器在编译链接时,就要找到函数的地址,不是在运行时找,只有动态多态是在运行时找,就需要存储函数地址,这个我们以后会讲解。
2024-08-04 19:26:03
1083
2
原创 C++入门基础
这样⼀些场 景下a*3的和结果保存在⼀个临时对象中, int& rd = d 也是类似,在类型转换中会产生临时对象存储中间值,也就是时,rb和rd引用的都是临时对象,而C++规定临时对象具有常性,所以这里就触发了权限放大,必须要用常引用才可以。
2024-08-03 18:49:52
613
2
原创 C语言刷题小记2
分析:拿到这道题,大家可能会有一种思路,就是创建一个新数组,然后进行判断,判断结束后将符合条件的元素再插入到新数组,这种想法其实是正确的,但是很可惜,本题不能用这样的方法,因为题目要求不能使用额外的数组空间,这就意味着我们是不能创建新数组的,所以本题就需要采取其他做法;大家来看,这里我分装了一个函数,里面实现的就是冒泡排序的逻辑,在主函数中,我们创建了数组去存储我们输入的成绩,然后将数据交给函数进行排序,最终我们需要返回的就是最大值;反之,我们将最后一位去除掉,将其后一位作为最后一位,再次进行判断。
2024-07-24 23:02:27
907
4
原创 贪吃蛇游戏
打印好后,我们再设置贪吃蛇的属性。这里我们要注意,食物的坐标是随机生成的,但是也不是完全随机,必须满足上面提到的几个条件,随机数的生成我们需要用到srand函数,这个我们在上面的测试文件中已经写出来了,这个函数是包含在<time.h>这个头文件中的;
2024-07-11 08:00:00
2106
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人