自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 to_string /atoi/c_str()

3.atoi需要一个const char*类型的参数,c_str()会返回一个指向字符串const char*的指针。1.to_stirng()是一个把数字转换为字符的函数,在头文件中。2.atoi转换函数,只能转换以数字开头的字符串。

2024-09-01 11:20:10 157

原创 malloc和new分配内存时的区别

2.new会自动调用构造函数来初始化函数,返回的是正确的指针类型,不需要进行类型转换。malloc只是分配原始的内存块,需要指明转换类型,需要手动初始化结构体成员。malloc使用free函数来释放malloc分配的内存。4.new更适合C++,malloc更适合传统的C风格。3.new用delete操作符释放new分配的内存。malloc是一个动态分配内存的函数。1.new是一个操作符。

2024-08-15 14:39:02 124

原创 遍历单双向链表

无论是单向链表还是双向链表,这种遍历方式都是可行的。:在每次迭代中,访问当前节点后,通过。,从链表的第一个实际节点开始遍历。更新为下一个节点的索引。

2024-08-09 20:13:33 83

原创 malloc+顺序表(查找,插入,删除)

1.用户输入时是以回车键(’\n')结束输入,但在C和C++中,字符串内部使用('\0')来表示字符串的结束。n*sizeof(int):表示需要分配n个int类型的内存空间。调用:int* arr=(int*)malloc(n*sizeof(int));int*将malloc返回的void指针转换为int*类型。头文件:#include <stdlib.h>指针-指针得到的是两个元素之间的个数。),然后将其替换为字符串终止符(),确保字符串能够正确处理。两个指针指向同一块空间。2.malloc函数。

2024-08-09 20:08:53 307

原创 最长递增子序列(当动态规划dp超时时,用二分法nlogn)

/使用二分法在low数组中找到第一个大于等于。} //a[i]的位置,并用a[i]替换它。

2024-08-02 15:34:06 140

原创 5.20——高精度加减乘法+strcmp函数

用于比较字符串,而不是两个整数,它的参数应该是指向以空字符结尾的字符数组的指针。在头文件<cstring>中。4.关于strcmp函数;

2024-05-20 18:46:30 172 1

原创 指针的简单了解

指针的类型决定了对指针解引用的时候有多大的权限(能操作几个字节)。比如:char*的指针解引用就只能访问一个字节,而int*的指针的解引用就能访问4个字节。1>>在32位机器上,地址是32个0或者1组成二进制序列,那地址就得用4个字节的空间来存储,所以一个指针变量的大小就应该是4个字节。2>>如果在64位机器上,如果有64个地址线,那一个指针变量的大小是8个字节,才能存放一个地址。为了能够有效的访问到内存的每一个单元,就给内存进行了编导,这些编号被称为该内存的地址。为什么指针的大小是相同的呢?

2024-05-20 18:32:36 242 1

原创 线性表的顺序存储和链式存储

访问下标为i的元素:l.arr[i]或ptrl->arr[i];线性表的长度:l.last+1或ptrl->last+1;利用数组的连续存储空间顺序存放线性表的各元素;表的起始位置称为表头,表结束位置称为表尾;表中元素个数成为线性表的长度;线性表没有元素时,成为空表;

2024-05-08 11:21:47 232 1

原创 string头文件下的常用函数总结

10,replace()——用一个新的字符串替换指定位置的字符或字符串。3,empty()——检查字符串是否为空,返回true或者false。2,size()——返回字符串大小,与length()作用相同。6,insert()——在指定位置插入一个字符串或者字符序列。8,substr()——返回从指定位置开始的指定长度的字符串。9,find()——在字符串中查找第一次出现指定字符串的位置。5,append()——将一个字符串添加到当前字符串的末尾。7,erase()——删除指定位置的字符。

2024-04-11 20:35:22 315 1

原创 算组合数C

【代码】算组合数C。

2024-04-11 19:34:37 257 1

原创 二维动态数组+双指针+宏+向量容器+逻辑运算(与或非异或)+异或和

意义:可以在数组中存储一系列的以为数组表现形式:vector<vector<int>>arr;初始化的方式:3>> 初始化列表初始化意义:定义两个指针 (即是索引下标)一个从前面,一个从后面,两者同时向中间移动,并交换元素,时间复杂度o(n);(erase函数的时间复杂度是o(n),如果再加一层for循环,就是o(n^2,erase只是覆盖并不是移除)什么是宏:是一种预处理指令。类型:常量宏,函数宏,代码段宏是如何定义的:#define+宏的名称+宏的替换文本。

2024-04-02 17:49:12 320 1

原创 埃式筛法+欧拉筛法

标记每个数2的倍数,因为在自然数里两步一个偶数,两步一个奇数,大部分合数也是2的倍数,所以标记2*i足以筛出一大部分非质数;

2024-03-20 22:39:13 267 1

原创 欧几里得算法+扩展欧几里得算法

当A=12921,B=4234时,12921/4234=3余219,此时219作除数,4234作被除数,则4234/219=19余73,然后73作除数,219作被除数,则219/73=3余0;因为R=A-B*q,所以代入得:R=a*u-b*u*q=u*(a-b*q);所以带入化简得:a*y1+b(x1-(a/b)*y1)=gcd(a,b);由上式定理可得:b*x1+(a%b)*x2=gcd(b,a%b);假设A和B的最大公约数为u,则A=a*u,B=b*u;又因为:a%b=a-(a/b)*b。

2024-03-18 23:28:11 452

原创 pair set map vector

1>>头文件:(当使用了,等标准头文件时,该头文件可能已经被包含进去了,所以可省略)2>>是一个容器,存储不重复的元素,并以无序的方式组织这些元素,与unordered_multiset的唯一区别是后者可存放重复元素。set中的插入,删除和查找操作的平均时间复杂度都是o(log n),其中n是集合中元素的数量。1>>是一个有序的,不重复的元素集合(重复的元素集合用multiset)1>>是一个关联容器,头文件#include

2024-03-16 11:53:43 492

原创 动态规划==>递归==>状态转移方程(最长递增子序列,最大子串和,最长公共子串,最长公共子序列)

从中可以发现动态规划的核心实质:将一个复杂的问题拆解为更小的子问题,存储子问题的答案避免重复计算,从而得到更优解。其次,增加记忆化搜索 ,因为要求的是子串和,所以不应该用赋值的方式来记录dp[k]是否被计算过,其次,运用记忆化搜索的方式来记录之前的值。最后呢,可以由递归公式推出动态转移方程。最后,由递归得出完整的动态转移方程。最后,推导状态转移方程。首先,利用递归的思想。首先,运用递归的思想。最后,推导动态转移方程。用bool类型更合适。首先,运用递归的思想。其次,运用记忆化搜索。首先,运用递归的思想。

2024-03-04 22:40:55 527

原创 二分答案(最大值最小化,最小值最大化)

在这篇代码里我们将区间分为两部分,[l,mid)和[mid,r],所以我们运用了上篇博客的第一种模板,在这里ans>=c作为返回条件,说明我们的K取小了,我们需要向[mid,r]区间取值,所以如果返回true,l=mid.在这篇代码里也是将区间分为两部分,即[l,mid]和(mid,r],当返回条件ans>=m为真时,说明我们的k取小了,需要在(mid,r]区间里取更大的值,所以check(mid)为真时,l=mid+1;二分答案类的题呢,有两个标志性的词语:最小值最大化和最大值最小化。

2024-03-02 17:05:21 858

原创 二分小细节的问题+STL中的二分函数

当a[mid]=num时,我们要在mid左半边的区间里查找目标值num,因为右半边不包含我们的目标值,但在mid这一点是有可能等于num的,所以r=mid,else l=mid+1;用二分法的条件:(1)数列是有界的;空间复杂度:o(1);

2024-03-01 15:31:26 447

空空如也

空空如也

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

TA关注的人

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