自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 string函数的深拷贝

【代码】string函数的深拷贝。

2025-01-30 22:42:41 119

原创 排序(3)

【代码】排序(3)

2025-01-26 20:05:39 101

原创 排序(3)

【代码】排序(3)

2025-01-13 23:03:21 123

原创 二叉树的oj题

思路:从根节点开始,递归地对树进行翻转,如果被遍历的节点的左右节点都已经被翻转,那么我们只要翻转左右子树的位置,就可以完成以root为根节点的树的翻转。只要没有找到左右节点都为空的节点,就继续深入函数内部探测。

2025-01-13 10:32:15 133

原创 vector类介绍

include <iostream> // 引入iostream库以使用cout#include <vector> // 引入vector库// 使用std命名空间,避免每次调用标准库时都写std::// vector的构造// 构造一个空的int类型的vector// 构造一个包含4个元素,每个元素值都为100的int类型的vector// 通过迭代器构造,复制second中的所有元素到third中// 通过拷贝构造函数,构造一个third的副本fourth。

2024-08-30 21:47:30 1083

原创 STL介绍以及string类

是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

2024-08-18 21:54:05 1029

原创 模板初阶介绍

class 类模板名// 类内成员定义// 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public :, _size(0){}// 使用析构函数演示:在类中声明,在类外定义。~Vector();// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表if(_pData)

2024-08-13 20:14:32 912

原创 c/c++内存管理

1. 调用operator new函数申请空间2. 在申请的空间上执行构造函数,完成对象的构造指因为疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并不是指内存在物理上的消失,而是应用程序分配某段内存后,因为设计错误,失去了对 该段内存的控制,因而造成了内存的浪费。

2024-08-13 14:58:15 995

原创 类和对象(3)

才用该自定义类型就可以实例化具体的对象。

2024-08-12 20:49:42 814

原创 类和对象(2)

大多数情况,构造函数都需要我们自己去实现,少数情况类似MyQueue且Stack有默认构造时,MyQueue自动生成就可以用。

2024-08-10 21:23:27 607

原创 堆的介绍~

堆的逻辑结构是一棵完全二叉树堆的物理结构是一个数组通过下标父子节点关系:leftchild=parent*2+1。

2024-07-28 10:38:05 803

原创 类和对象(1)

/由成员函数和成员变量组成类体中的内容称为类的成员,类的变量称为类的属性或成员变量,类中的函数称为类的方法或成员函数。1类的声明和定义全部放在类体当中,需要注意的是,如果函数在类中定义,编译器可能会将其当作内联函数处理。int age;2类的声明放在头文件中,类的函数放在源文件当中。注意:成员函数之前需要加类名::声明放在person.h文件当中public:public:char* _sex;int age;

2024-07-19 16:18:56 1075

原创 c++基础

命名方法:使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。命名空间中可以定义变量/函数/类型int val;引用不是定义一个新的变量,而是原有的变量有了新的别名,并不需要为这个别名开辟一个新的空间,它和引用的变量公用一块存储空间。引用类型&引用变量名=引用实体名;int &ra=a;引用变量必须和引用实体是同种类型的。

2024-07-16 22:08:25 770

原创 排序(2)

那么当我们解决下面这个问题的时候:当开始时,begin=0,end=7,mini=begin=0,maxi=begin=0。i=1,1小于0,所以mini=1。此时最大值是9(begin),最小值是1(i)。当begin和max重合,就会出现4 3 5 6。

2024-07-07 17:22:53 451 2

原创 排序(1)

接下来,我们就来到了排序的章节,嘿嘿!加油!

2024-07-05 10:39:56 397

原创 二叉树(2)

二叉树的销毁分为三个部分的销毁:根节点,左子树和右子树层序遍历(上一层带下一层)队列里面的指针指向树的节点,把节点释放掉,不会影响到树的节点。判断二叉树是否为完全二叉树:1、层序遍历走,空也进队列2、遇到第一个空节点时,开始判断,后面全空就是完全二叉树,后面有非空就不是完全二叉树。不可能出现,遇到空时,后面还有非空没进队列。后面非空,一定是前面非空的孩子。当层序出到空的时候,前面非空都出完了,那他的孩子一定进队列了。那么这时候就不需要担心。

2024-07-02 17:17:46 423

原创 二叉树(1)

十分抱歉,停更了差不多一个月。暑假了,我又回来了!

2024-06-30 22:52:22 869 1

原创 栈与队列(2)

head==tail是空还是满呢 方法一:额外多开一个空间。队列 如队列顺序1 出队列顺序1。栈 入栈顺序1 出栈顺序N。队列的作用是用来保持公平性。方法二:增加一个size。

2024-05-17 15:31:44 364

原创 栈和队列(1)

栈是一种特殊的线性表,只允许在一端进行插入和删除操作。如果不在缓存,就叫作不命中,要把数据从内存加载到缓存,再访问。第一步:左括号入栈,第二步:出栈顶的左括号判断和右括号是否匹配,如果匹配,继续,如果不匹配,终止。栈的实现可以用数组或者线性表实现,相对而言,数组实现更优,因为数组在尾上插入的代价较小。以上代码测试出如果是一样的,那么就是原地扩容,如果不一样,就是异地扩容。现在是个激动人心的时刻,因为我们来到了栈和队列的章节。出栈:栈的删除操作叫作出栈,出栈也在栈顶。异地扩容就是在新的地方开辟一个新的空间。

2024-05-15 16:15:33 410 1

原创 链表带环问题

(慢指针有没有可能在环里走了好多圈呢,没有可能,如果走了好多圈,fast一定会超过slow。假设slow进环时,slow和fast之间的距离是N。假设slow进环的时候,fast跟slow的距离是N,fast追击slow距离变短。假设slow一次走一步,fast一次走三步,假设fast和slow之间的距离是N。若C-1是偶数,那么追得上,若C-1是奇数,那么又再一次追不上了,陷入死循环。2slow一次走1步,fast走3步,4步,5步可以吗?fast走的距离是x的三倍,3L=L+X*C+(C-N)。

2024-05-13 20:00:51 342

原创 日拱一卒,月进一步(16)

从i=0开始,并判断nums[i]

2024-05-06 20:30:18 468 3

原创 日拱一卒,月进一步(15)

再依次在满足条件的矩形内+1,最后找出最大数字的个数。首先将数组排序,如果数组中全是非负数,那么排序后的后三个数相乘即为最大值,如果全为非正数,那么最大的三个数相乘也为最大值。2此地有花 因为这是从前往后判断,所以当判断上一块地可以种花时,而这块地已经有花了,上块地就不能种花了,count--综上,我们在给数组排序后,分别求出三个最大正数的乘积,以及两个最小负数与最大正数的乘积,二者之间的最大值即为所求答案。2)上一块地没有花,这块地能种花,count++1此地无花 1)上一块地有花,这块地·不能种花。

2024-05-04 23:30:19 198

原创 日拱一卒,月进一步(14)

快排并从第一位开始隔位取数字。

2024-05-03 22:06:50 205

原创 日拱一卒,月进一步(13)

【代码】日拱一卒,月进一步(13)

2024-05-03 19:30:29 392

原创 模拟实现memcpy,memmove,memset,memcmp

使用注意事项:从source的位置向后复制num个字节数据到destination所指向的内存位置中。这个函数遇到如果源空间和⽬标空间出现重叠,就得使⽤memmove函数处理。\0并不会停下。当source和destination有一定的重叠,复制的结果都是未定义的。

2024-05-03 15:35:05 268

原创 日拱一卒,月进一步(12)

【代码】日拱一卒,月进一步(12)

2024-05-02 17:07:17 230

原创 日拱一卒,月进一步(11)

再用differ标记不同的元素个数当前一个元素不等于后面一个元素,differ++,当differ等于2时候,且此时后一个元素仍然不等于前一个元素,就说明这个数字是第三大的元素。然后,我们再次遍历数组,找到那些未被取反(或未被标记)的索引,它们对应的值就是缺失的数字。有些元素出现了一次,有的元素没有出现过,要求找到没有出现过的数字。qsort(首元素地址,元素个数,字节数,比较函数)先用qsort函数,将数组的元素从小到大排序。本身的索引和值之间的关系来找到缺失的数字。上,并将该索引处的元素。

2024-05-02 14:17:48 189

原创 日拱一卒,月进一步(10)

最朴素的思想是存储数组nums的值,每次调用sumRange时,通过循环的方法计算数组nums从下标i到下标j的元素和,需要计算j-i+1个元素的和。因此,要计算sumRange(i,j),则需要计算数组nums在下标i-1和j的前缀和,并计算两个前缀和的差。即可满足调用sumRange的时间复杂度都是O(1)。具体实现方面,假设数组的长度nums等于n,创建长度为n+1的前缀和数组nums,sums[i+1]=sums[i]+nums[i],则sums[i]表示数组从0到下标i-1的前缀和。

2024-05-01 22:11:02 240

原创 日拱一卒,月进一步(9)

右指针不断向右移动,每次右指针指向非零数,将左右指针对应的数字交换,并且左指针右移。这种移动的题目我们首要的想法就是利用双指针。左指针指向已经处理好的序列的。每次交换都是左指针的0与右指针的非0数交换,因此非0数的顺序不变。2右指针right左边直到左指针均为0。1左指针left左边均为非零数。首先祝大家五一劳动节快乐!,右指针指向待处理序列的。

2024-05-01 21:02:05 260 1

原创 日拱一卒,月进一步(8)

这个题目一出现,我就立马有了思路。其实就是让每个数字互相异或,最后得出的数字就是只出现一次的数字。投票算法可以省略循环中不必要的比较,那么我们就开始学习这是如何完成的吧。

2024-04-30 16:33:15 175

原创 日拱一卒,月进一步(7)

为了使买股票利润最大化,应该在下标[0,i-1]选择最小值作为price[j]。遍历所有可能卖出股票的日期,即可得到最大利润。(1)使用prices[i]-prevMin更新最大利润。(2)将prevMin的值更新为prices[i]。遍历结束后即可获得最大值。

2024-04-30 14:32:53 190

原创 日拱一卒,月进一步(6)(杨辉三角2)

【代码】日拱一卒,月进一步(5)(杨辉三角2)

2024-04-30 11:17:38 167

原创 日拱一卒,月进一步(5)

令我十分意外地是,这题竟然也曾经写过,但我却没有思路,罪该万死。

2024-04-30 10:11:58 220

原创 日拱一卒,月进一步(4)

数字加法应该从前向后遍历,因此我们应该从数字末尾从后向前遍历。如果数字不为9,则直接在末尾+1。如果末尾为9,那么将其变为0,并且在下一位+1。如果一直遍历都为1,那么在数组第0位插入1。如果所有元素都是9,那么我们只需要构造出一个比原数组多1个长度的数组,将首元素置为1,其余置为0即可。如果有若干个9,那么我们只需要在末尾找到第一个不为9的元素。随后将末尾的9全部置为0。我们在对数字进行+1时,只需要关注数组的末尾有多少个9即可。如果末尾没有9,那么直接在末尾+1。

2024-04-30 09:29:12 125

原创 日拱一卒,月进一步(3)

当左指针指向的元素等于val,此时将右指针指向的元素赋值给左指针所指向的位置。然后右指针左移一位,如果赋值过来的值也恰好等于val,可以把右指针指向的值继续赋值过来,(左指针指向val的值会继续被覆盖),知道左指针指向的值不等于val。这种删除元素的题目,我们一般都是采用双指针。如果右指针指向的元素不等于val,那么它是输出数组的第一个元素,我们就将右指针指向的位置复制到左指针,同时左右指针同时加加。如果右指针指向的元素等于val,这个元素不能在输出数组里面,此时右指针向前走一位,而左指针不动。

2024-04-28 20:34:54 195

原创 日拱一卒,月进一步(2)

如果数组的长度等于0,则数组不包含任何元素,返回0。如果数组nums的长度大于0,数组中至少有一个元素,删除重复元素之后也至少有一个元素。定义两个指针:一个快指针和一个慢指针,快指针表示遍历数组到达的下标位置。一开始fast指针先走,如果fast等于前一个fast,那么fast继续向前走,如果fast不等于slow,那么把fast里面的值赋值给slow,slow再继续往前走。对于任意i<=k<=j,都有nums[i]=nums[k]=nums[j]。利用数组有序的特点,可以用双指针的方法删除重复元素。

2024-04-28 14:28:00 394

原创 日拱一卒,月进一步(1)

to be honest,由于本人的菜菜又菜菜,看到这题是基本没有思路的,也在最近的测试中比较受挫。但是要注意的是:由于每一个x之前的元素都已经被匹配过,所以只要寻找x后面的元素即可。分配一个大小为2的整数数组来存储这两个数的索引,并返回这个数组。从出思路,到完成代码,这也是一个重要且艰难的环节。这意味着除了可能的返回值(一个大小为2的数组)之外,函数没有使用任何与输入大小。完成这个代码之前,我们先对其进行时间复杂度和空间复杂度的分析。在空间复杂度方面,如果函数找到了两个数的和等于目标值,它会使用。

2024-04-28 11:11:59 285

原创 了解时间复杂度和空间复杂度

在学习数据结构前,我们需要了解时间复杂度和空间复杂度的概念,这能够帮助我们了解数据结构。算法效率分为时间效率和空间效率。

2024-04-26 17:02:54 628 3

原创 贪吃蛇项目实践!(下)

比较蛇指向的节点和食物指向的节点是否相同。

2024-04-26 11:03:45 326 1

原创 贪吃蛇项目实践!(上)

大家好,今天我带着大家从0构建起贪吃蛇项目的高楼大厦~要实现这个游戏,我们需要实现哪些功能呢?实现基本的功能:• 贪吃蛇地图绘制• 蛇吃⻝物的功能(上、下、左、右⽅向键控制蛇的动作)• 蛇撞墙死亡• 蛇撞⾃⾝死亡• 计算得分• 蛇⾝加速、减速• 暂停游戏。

2024-04-26 09:54:44 1010

空空如也

空空如也

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

TA关注的人

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