- 博客(42)
- 收藏
- 关注
原创 CPP_类和对象
*默认构造函数(无参构造函数,全缺省构造函数,没有构造函数时编译器默认生成的构造函数)**最多只能有一个,也可以没有(如果没有,那就不能用默认方式初始化)如果当自己写了别的不是默认构造函数形式的构造函数,那就需要自己在写一个默认构造函数。某一个类的时候,才会为类里面的成员变量开辟空间(即它的定义)(也就相当于类其实是一种设计,并没有实际的东西,只有实例化之后,才有这种设计对应的实例)其实对于实例化对象来说,虽然成员函数是共用的,但每个实例调用时都是使用自己的成员变量的值,
2025-04-23 21:15:29
622
原创 c语言笔记week3
补码为11111111111111111111111111111111.对于char类型的变量想要接受一个int类型数据的值,只能从低往高截取补码的8位,所以a,b,c里面放的值均为11111111.在打印的时候,因为是以**%d的形式打印的(以10进制的形式打印有符号整数)其中num是要拷贝的字节数,只关注要拷贝去哪里,从哪里拷贝,拷贝多少字节,不在乎内存里具体存放的是什么数据,且dest和sourcce指向的内存不能有任何重叠。因为它是按字节赋值的,对于其他值,可能无法得到预期的结果。
2025-03-13 11:10:06
632
原创 C语言学习笔记(week2)2-24 3-2
如果待切割的字符串里有多个分割符,则调用一次该函数,会将从左边数第一个分隔符变成’\0’,并且每一次调用该函数会存下来这次操作到的位置,下一次在调用的时候,会直接从这个位置开始向后寻找下一个分隔符。(对于无符号整数来说,是没有负数的,如果一个负数被转变为无符号整数,会直接将这个负数的补码看作一个无符号整数,也就是会变成一个很大的正数(因为负数首位符号位是1))在传递时,如果传递的是“abc”,直接传递这样的常量字符串,也是可以使用char*的指针接收的。比较的不是长度,是对应字符的ASCII码的大小。
2025-03-06 15:33:16
977
原创 刷题分享12-2日
2.(力扣93)这道题的核心是掌握在递归调用里,引用的特殊性,每一层递归里的s在逻辑上可以看作是独立的个体,虽然名字相同,但它们有着各自独立的 “生命周期” 和状态管理,res里存储的是之前各层递归结束那一刻对应的s的状态,后续递归中对当前层s的改动不会传导过去。1.(力扣131)这是一道分割子串的问题,其核心在于理解清除startindex即为当前切割线,而每一层对应的startindex-I这个区间,其实就是当前分割出来的子串。
2024-12-02 20:26:07
436
原创 刷题分享12_1
1.(力扣39)这是一道回溯算法相关题目,因为每一个元素可以多次使用,所以更新时startindex应该更新为i而不是i+1。3.(力扣257)这是一道求二叉树的全部路径的题目,也巧妙的运用了回溯的思想,整体不难,但一定要知道to_string的用法。
2024-12-01 21:26:12
415
原创 刷题分享11_30
1.(力扣216)这是一道回溯算法的经典题目。在循环内部,一般的逻辑是(单层操作 + 递归 + 回溯),其实回溯的本质就是在递归处理完该层向下的层后,将该层恢复成一开始达到该层时的状态,以便向上返回进行别的分支。所以也叫(恢复现场)2.(力扣17)首先该题要先使用一个数组,来存放对应位置上的字符串,另外,该题中有一个特殊的参数index,是用来标记现在已经处理到了输入字符串中的哪一个,所以结束条件是(index==digits.size())变量digit是用来存放当前这一层所要操作的字符串的。
2024-11-30 21:07:38
782
原创 刷题分享11_28
此题还有一个核心在于想明白对于一个集合,如果它里面包含了K对情侣中的人,那么该集合必须要交换K-1次(相当于每交换一次,可以成全一对情侣,最后一次交换可以将最后两对情侣一起成全,所以是K-1次),res其实就是各个集合交换次数之和。1.(力扣15)这是一道求三数之和的问题,如果使用哈希表的方法了话,十分难实现去重的操作,所以我们可以考虑将问题拆分,即先用一个for循环遍历数组,在每一层遍历内部(相当于确定下来第一个数),使用双指针的方法,这样利用指针++或--的操作,可以很方便的实现去重的操作。
2024-11-28 13:23:54
626
原创 刷题分享11_27
3.这是一道求四个数之和等于0的问题,将其分为两两一组,运用哈希表的知识,可以将该题的时间复杂度变成O(n*n),同时,为了方便使用map的find,我们要将结果存入key里,将出现的次数存入value里。2.这是一道大整数除法,核心在于要从大整数的高位向低位进行运算,每一次的余数还要*10加上下一位,最后一定记得去除前导0。1.这是一道大整数乘法,核心在于求出每一位与那个小整数的乘积,最后一定要记得让最后的进位数也变成0。
2024-11-27 20:14:06
381
原创 刷题分享_11_25
对于求恰有k个,这个问题十分不好求,所以我们可以转变思路,先实现一个函数 F(K),这个函数可以求出来所含元素小于等于k个的子数组的数量,那么结果就是 F(K) - F(K-1)。具体思路:相当于每一次循环内部固定窗口的右边界,然后看窗口左边界,当左边界也符合时,在窗口内所有以右边界为尾巴的子数组均符合要求,因为F(K)求的是种类不超过K的长度包括1,2,…3.(力扣395)这是一道求 有k个重复字符 的最长子串的问题(即如果结果里多了一种字母,那么该字母最少出现k次,可能不连续)。
2024-11-25 21:41:22
1235
原创 刷题分享11_23
1.(力扣242)这是一道hash 表的问题,其实就是开辟一个额外的名单,遍历第一个字符串来存放每个字母出现的次数,然后遍历第二个数组为出现过的字母在名单上消去名字,最后名单上只要有数字不为0,则说明不对,只有所有字母的剩余次数均达到0次,才能说明两个字符串中所含字母一样。3.(力扣110)这是一道判断是否为平衡子树的问题,其实本质上是求最大深度的变形。2.(力扣222)这是一道求二叉树的节点个数的问题,使用后序遍历,这样才可以将下面子树的高度返回给上面的节点,进而最后返回给根节点。
2024-11-23 22:04:41
210
原创 刷题分享11_22
核心思路:窗口里维持的一直都是有可能变成最大值的元素,如果一个值没有可能为最大值,就将它从右侧弹出。然后扩窗口,将最左侧的值放入结果数组,然后判断最左侧的值是否过期,如果过期就从左侧走,然后窗口缩小。3.(力扣111)这是一道求二叉树最小深度的问题,其实求深度一个使用前序遍历,但其实可以将问题转化为求最小高度,进而可以用后序遍历。并不能将其简单的以为是求最大深度里将取最大变成取最小,因为这样会将左(右)子树整个为空的情况错误处理,所以在它前面应应该加上判断。所以我们想到用单调队列来实现。
2024-11-22 20:16:39
845
原创 刷题分享11_6
1.水王数的查找,主要用到一个抵消的思想。还有水王数的进阶,如果一个数出现的次数正好是数组长度的一半,那么则需要加入一个计数器,来判断水王到底是aim值还是arr[n-1]3.二维前缀和,q[0][0],第0行,第0列都需要特殊处理(对于第0行,第0列的处理与处理一维前缀和一样)2.一维前缀和,一定要特别注意q[0]的特殊处理。
2024-11-06 21:15:16
183
原创 刷题分享11_4
2.模拟pow ()函数,时间复杂度小于O(n),采取指数级向上乘。1.最长递增数列(用双指针)一快一慢。3.实现单链表反转,连续采用头插法。
2024-11-04 20:02:41
278
原创 刷题分享10_30
后插法建立数组(建立一个指针,始终指向最后一个节点,然后循环对其进行后插操作)*前插法建立数组(相当于循环对头结点进行后插操作)*按位置前,后插入节点(均可以转化为后插)*删除节点(相当于寻找+删除)
2024-10-31 20:27:58
250
原创 刷题分享10_21
1.求一个整数各位数字之和,并以特定方式打印。2寻找带有目标字母的字符串。6.寻找出现次数最多的元素。5.寻找矩阵中局部最大项。7.在数组里寻找指定元素。8.以指定方式打印三位数。
2024-10-21 20:26:17
243
原创 刷题的注意点 2024_10_7
在这道题里,最容易出错的就是在给a(x,y)赋值的时候,应该写为1.0*(R[x-1]+C[y-1])/2,将其转化为浮点数,保留它的精度。在这道题里,要注意使用long long int 来存储数据,防止造成溢出。所有题的代码统一放在最后。
2024-10-07 19:36:15
311
原创 刷题的注意点 2024_9_18
1.在使用循环想连续多行输入时(如图),需要注意,当输入完一个字符后按下回车时,缓冲区会一下存入两个字符(getchar(),该函数可以读取缓冲区第一个字符,并清除它。,而非你在下一行自己输入的数据。如果想避免这种情况,可以使用。1.你自己希望有的字符 2.换行符。),在进行完第一次循环后,系统会。自动将\n作为下一次循环的输入值。(比如在这个大小写转换的代码里)
2024-09-18 20:40:09
289
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅