- 博客(84)
- 收藏
- 关注
原创 C++ string 类
2.2.2. string类对象的容量操作2.2.3. string类对象的访问及遍历操作 函数名称 功能说明 operator[](重点) 返回pos位置的字符,const string类对象调用 begin + end begin获取一个字符的迭代器 + end获取最后一个字符下一个位置的迭代器 rbegin + rend begin获取一个字符的迭代器 + end获取最后一个字符下一个位置
2024-10-29 19:51:41 589
原创 C++ 把字符串转换成整数 (atoi) - 力扣(LeetCode)
第 2 步:"4193 with words"(当前没有读入字符,因为这里不存在 '-' 或者 '+')由于 "-42" 在范围 [-231, 231 - 1] 内,最终结果为 -42。第 1 步:"4193 with words"(当前没有读入字符,因为没有前导空格)由于 "42" 在范围 [-231, 231 - 1] 内,最终结果为 42。第 2 步:"42"(当前没有读入字符,因为这里不存在 '-' 或者 '+')第 1 步:"42"(当前没有读入字符,因为没有前导空格)"(读入 "42")
2024-09-21 23:30:57 758
原创 C++ 字符串相加 - 力扣(LeetCode)
给定两个字符串形式的非负整数。你不能使用任何內建的用于处理大整数的库(比如。), 也不能直接将输入的字符串转换为整数形式。,计算它们的和并同样以字符串形式返回。
2024-09-21 20:21:43 290
原创 C++ 反转字符串 - 力扣(LeetCode)
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组。、使用 O(1) 的额外空间解决这一问题。不要给另外的数组分配额外的空间,你必须。
2024-09-21 19:41:29 241
原创 C++ 字符串中的第一个唯一字符 - 力扣(LeetCode)
比如:假设str[1] = 'b ‘a’的ASCII码值是97,那么count[ str[ 1 ] - 'a' ],也就是count[ 1 ]对应的是b出现的次数。所以遍历一次字符串就可以得到每个ASCII码值出现的次数,在遍历一次字符串,第一个ASCII码值所对应计数数组的值为1,就是第一个只出现一次的字符。由于小写字母一共有26个,所以利用ASCII码值来创建一个整形数组count,来保存对应ASCII码值出现的次数。它的第一个不重复的字符,并返回它的索引。
2024-09-21 19:33:27 336
原创 C++ 字符串最后一个单词的长度(牛客网)
从后往前找,使用rfind()函数找到第一个空格的索引即可,找不到返回npos(size_t npos = -1)利用字符串的长度(不包括\0)减去空格的索引再减1,就是最后一个单词的长度。(字符串长度减1是最后一个字符的索引)计算字符串最后一个单词的长度,单词以空格隔开,字符串长度小于5000。(注:字符串末尾不以空格为结尾)输入一行,代表要计算的字符串,非空,长度小于5000。输出一个整数,表示输入字符串最后一个单词的长度。最后一个单词为nowcoder,长度为8。
2024-09-21 17:05:58 316
原创 C++ 找出字符串中第一个只出现一次的字符(牛客网)
所以遍历一次字符串就可以得到每个ASCII码值出现的次数,在遍历一次字符串,第一个ASCII码值所对应计数数组的值为1,就是第一个只出现一次的字符。由于字符一共有128个,所以利用ASCII码值来创建一个整形数组count,来保存对应ASCII码值出现的次数。比如:‘a’的ASCII码值是97,那么count[ 'a' ],也就是count[ 97 ]数据范围:输入的字符串长度满足 1≤n≤1000 1≤n≤1000。输出第一个只出现一次的字符,如果不存在输出-1。找出字符串中第一个只出现一次的字符。
2024-09-21 16:33:04 371
原创 C++ 模板初阶
class 类模板名// 类内成员定义// 动态顺序表// 注意:Vector不是具体的类,是编译器根据被实例化的类型生成具体类的模具public :, _size(0){}// 使用析构函数演示:在类中声明,在类外定义。~Vector();// 注意:类模板中函数放在类外进行定义时,需要加模板参数列表if(_pData)
2024-09-12 20:27:33 463
原创 C++ 内存管理
int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间//还会调用构造函数和析构函数free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;
2024-09-11 23:26:13 952
原创 C++ 求1+2+3+......+n__有限制(牛客网)
求1+2+3+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?利用构造函数,生成N个类的对象,就要调用N次构造函数,定义两个静态变量,一个村结果,一个存当前的累加值,进阶: 空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n)数据范围: 0
2024-08-31 23:41:48 420
原创 C++ 计算日期到天数转换(牛客网)
进阶:时间复杂度:O(n) O(n) ,空间复杂度:O(1) O(1)输入一行,每行空格分割,分别是年,月,日。根据输入的日期,计算是这一年的第几天。保证年份为4位数且日期合法。输出是这一年的第几天。
2024-08-31 23:28:18 202
原创 C++ 计算 日期差值(牛客网)
有两个日期,求两个日期之间的天数,如果两个日期是连续的我们规定他们之间的天数为两天。有多组数据,每组数据有两行,分别表示两个日期,形式为YYYYMMDD。每组数据输出一行,即日期差值。
2024-08-31 23:22:21 289
原创 C++ 打印日期(牛客网)
可能有多组测试数据,对于每组数据, 按 yyyy-mm-dd的格式将输入中对应的日期打印出来。输入包括两个整数y(1<=y<=3000),n(1<=n<=366)。给出年分m和一年中的第n天,算出第n天是几月几号。
2024-08-31 22:40:54 292
原创 C++ 累加天数(牛客网)
输入第一行表示样例个数m,接下来m行每行四个整数分别表示年月日和累加的天数。设计一个程序能计算一个日期加上若干天后是什么日期。输出m行,每行按yyyy-mm-dd的个数输出。
2024-08-31 22:30:06 229
原创 C++入门基础 命名空间__输入输出 __缺省参数__函数重载__引用__内联函数
定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{} 中即为命名空间的成员。int main()// 域作用限定符::return 0;1.命名空间中可以定义变量/函数/类型2.命名空间可以嵌套3.同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中。// 命名空间中可以定义变量/函数/类型int val;引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间。
2024-08-18 10:40:00 974
原创 归并排序(递归与非递归实现,C语言)
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有 序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。1. 归并的缺点在于需要O(N)的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。2. 时间复杂度:O(N*logN)3. 空间复杂度:O(N)
2024-08-14 10:46:20 317
原创 计数排序(C语言)
思想:计数排序又称为鸽巢原理,是对哈希直接定址法的变形应用。操作步骤: 1. 统计相同元素出现次数 2. 根据统计的结果将序列回收到原来的序列中。1. 计数排序在数据范围集中时,效率很高,但是适用范围及场景有限。2. 时间复杂度:O(MAX(N,范围))3. 空间复杂度:O(范围)
2024-08-14 10:31:07 167
原创 快速排序(三种方法,非递归快排,C语言)
快速排序的思想:任取待排序元素序列中 的某元素作为基准值,按照该排序码将待排序集合分割成两子序列,左子序列中所有元素均小于基准值,右 子序列中所有元素均大于基准值,然后最左右子序列重复该过程,直到所有元素都排列在相应位置上为止。
2024-08-14 10:23:28 229
原创 希尔排序( 缩小增量排序 )(C语言)
希尔排序的特性总结: 1. 希尔排序是对直接插入排序的优化。2. 当gap > 1时都是预排序,目的是让数组更接近于有序。当gap == 1时,数组已经接近有序的了,这样就 会很快。3. 希尔排序的时间复杂度不好计算,因为gap的取值方法很多,导致很难去计算,因此在好些书中给出的 希尔排序的时间复杂度都不固定。希尔排序法又称缩小增量法。希尔排序法的基本思想是:先选定一个整数,把待排序文件中所有记录分成个 组,所有距离为的记录分在同一组内,并对每一组内的记录进行排序。然后,取,重复上述分组和排序的工 作。
2024-08-14 09:55:13 188
原创 二叉树遍历_牛客网(根据前序遍历) C语言
编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。
2024-08-04 20:32:32 356
原创 平衡二叉树 - 力扣(LeetCode) C语言
(点击前面链接即可查看题目)给定一个二叉树,判断它是否是是指该树所有节点的左右子树的深度相差不超过 1。
2024-08-04 19:56:09 498
原创 另一棵树的子树 - 力扣(LeetCode)C语言
给你两棵二叉树root和subRoot。检验root中是否包含和subRoot具有相同结构和节点值的子树。如果存在,返回true;否则,返回false。二叉树tree的一棵子树包括tree的某个节点和这个节点的所有后代节点。tree也可以看做它自身的一棵子树。
2024-08-04 19:37:13 390
原创 对称二叉树 - 力扣(LeetCode)C语言
首先先看是不是空树,空树也是对称的返回true,然后他才有子树q,p,q,p都为空返回true,两个有一个为空一个不为空,返回fasle,两个子树的根(q,p)不相等。返回false,此时到这个两个根(q,p)都相同,要看他们的左右子树是不是继续相等,所以一个传q->left和->right。另一个传q->right和p->left。(点击前面链接即可查看题目)给你一个二叉树的根节点。, 检查它是否轴对称。
2024-08-04 18:29:08 345
原创 二叉树的最大深度 - 力扣(LeetCode)C语言
求一个根的最大深度,就是求其孩子的最大深度,依次往下找,找到NULL,返回0,是指从根节点到最远叶子节点的最长路径上的节点数。看看这个根左边深还是右边深,返回更深的就可以。(点击前面链接即可查看)
2024-08-04 17:28:16 446
原创 单值二叉树 - 力扣(LeetCode)C语言
如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。只有给定的树是单值二叉树时,才返回true;否则返回false。
2024-08-04 17:14:22 375
原创 二叉树的后序遍历 - 力扣(LeetCode)C语言
1.本题中returnSize,指的是二叉树的结点数。递归算法很简单,你可以通过迭代算法完成吗?2.返回的数组必须是malloc开辟的。(点击前面的链接即可查看题目)注意要点与前序遍历相同,请参考。你一棵二叉树的根节点。
2024-08-03 18:43:31 355
wu-et-al-2021-non-line-of-sight-imaging-over-1-43-km(!!免费!!)
2024-08-12
中国科学院大学(国科大UCAS)-机器学习方法与应用(机器学习)-叶齐祥老师-上机练习作业
2024-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人