- 博客(79)
- 收藏
- 关注
原创 QT 信号和槽函数
step3: 创建老师对象 学生对象 并连接step4:触发信号: 老师下课;信号连接信号点击按钮的时候发送信号点击的时候就会触发信号;
2024-09-22 17:06:37 681
原创 表达式计算
输入: 一个字符串,代表一个四则运算表达式,输入保证合法一定有计算结果,操作数是合法的整数,运算符只包含±*/;现给你一个字符串,代表一个后序遍历形式的四则运算表达式,请计算出表达式的结果:(只输出整数部分)输出: 一个整数 :范围 -2147483648 ~ 2147483647。四则运算表达式可以用表达式树表达,如下图后序遍历。注:除法只保留整数部分;样例: 9,3,5,-,2,*,+;
2024-01-22 23:26:58 488 1
原创 C语言 memcpy 和 strcpy区别
2、复制的方法不同。strcpy不需要指定长度,它遇到被复制字符的串结束符"\0"才结束,所以容易溢出。memcpy则是根据其第3个参数决定复制的长度。1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组、整型、结构体、类等。通常在复制字符串时用strcpy,而需要复制其他类型数据时则一般用memcpy。因此strcpy会复制字符串的结束符“\0”,而memcpy则不会复制。企业中使用memcpy很平常,因为需要拷贝大量的结构体参数。
2024-01-21 15:10:07 735
原创 对部门进行排序
给定一组部门信息存在departsMents , departsMents[i] 表示 cityName 部门所在城市,departName 部门名称, personNum部门人数。step2: 对上面结构体 对部门信息按人数 部门名称排;step1: 创建临时结构体数组存放选出的城市和部门信息。step3: 申请返回空间 放进去选好的输出形式数据;城市结构包含: 城市名字 部门结构体 部门数目;step4: 对输出结果先排城市名 再排部门名。部门结构体: 部门名字 部门人数。
2023-12-11 07:41:03 539
原创 qsort字符串排序
可以通过 sizeof(name) / sizeof(name[0]),获得指针个数,sizeof(name)表示指针数组所占总空间, sizeof(name[0])表示一个指针所占空间r *name[] = { “Toby”, “Tony”, "“Michael”, “Canndy”};cha*name[]定义了一个指针数组,数组里存着字符串常量对应的地址,name本质是个二级指针。
2023-09-28 07:27:47 139
原创 *p++ 与 (*p)++
就是先取出指针p指向的地址单元的数据,之后再将该值加1,由于运算符 * 的优先级高于运算符 ++,所以是先取指针p指向的地址单元的数据,然后,p指向下一位置的数据。
2023-09-27 07:22:41 244
原创 leetcode刷题 二维数组 八方向
题目分析:就是以二维数组某个元素为中心,寻找周围八个方向的元素,按照题目要求修改二维数组元素返回;输入:board = [[0,1,0],[0,0,1],[1,1,1],[0,0,0]]输出:[[0,0,0],[1,0,1],[0,1,1],[0,1,0]]**board定义了一个指向整型变量指针的指针,就是二维数组的首地址。boardColSize 表示列,每行有多少列;boardSize表示行;
2023-09-24 23:09:14 212
原创 int *a, int **a, int a[], int *a[]的区别
【代码】int *a, int **a, int a[], int *a[]的区别。
2023-09-24 22:46:52 519
原创 C语言字符串数组的定义方式
char str[4][20] = {"I love C","I love you","C语言","string"};这种方法是通过定义一个char类型的二维数组实现,通过二维数组的行索引可得到数组中的每个字符串,列的大小限定了每个字符串所能包含的最大字符个数,所以采用这种定义方式时,列的大小必须不能小于数组所有字符串的最大长度;在取该数组的每个字符串时,直接对行索引即可这种方法是通过定义一个指向char类型的指针数组实现,数组中的每个元素都是一个指针,通过该指针可得到数组中的每个字符串。
2023-09-22 07:31:49 1528
原创 UT_hash实现增删改查
找到返回hash数据,找不到返回NULL。传入key值,删除成功返回1,失败返回0。最后在把代码整合在一起方便调用。/* 插入和修改hash。
2023-09-17 10:06:55 160
原创 day43参与通信的服务器
如果 grid(i,j)\textit{grid}(i, j)grid(i,j) 的值为 111,并且 row[i]\textit{row}[i]row[i] 和 col[j]\textit{col}[j]col[j] 中至少有一个严格大于 111,就说明位置 (i,j)(i, j)(i,j) 的服务器能与同一行或者同一列的另一台服务器进行通信,答案加 111。这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有。
2023-08-24 07:18:09 301
原创 C语言基础之数据类型和数据类型转化
short : 2 有符号数范围 -32768- 32767 无符号数范围 0-65535。char : 1 有符号数范围 -128 - 127 无符号数范围 0-255;2)要扩展的数据类型是无符号数 短数据的符号位填充到长数据类型高字节 补0。1)要扩展的数据类型是有符号数 , 短数据的符号位填充到长数据类型高字节。要扩展量为有符号,不管最终最终要扩展成有符号还是无符号,都遵循符号扩展;要扩展量为无符号,不管最终最终要扩展成有符号还是无符号,都遵循零扩展;3.有符号数和无符号数比较。
2023-08-16 07:30:49 143
原创 day42时间格式转化
3.字符串拼接使用 strcat(char* a, char* b) 函数,该函数会从a字符串的’\0’处开始(包括这个’\0’字符)赋值b字符串(包括b字符串最后的’\0’字符)。2.字符串比较使用 strcmp(char* a, char* b) 函数,若两字符串相同则返回0,否则返回第一个不同字符的索引。字符串切割使用 strtok(char* a, char* b) 函数,该函数返回切割完成后第一个子串的指针。//切割,返回第一个字串的指针。这里注意,第二个参数也必须是字符串,写’ ‘是错误的。
2023-08-15 07:16:07 133
原创 day41二维数组 *returnSize 和 *returnColumnSizes +合并两个二维数组
1.参数int **nums1 :表示二维数组 void fun(int (*p)[4] ) == void fun(int p[][4]) 二维数组,就是数组指针,这个指针指向的是这个数组,真正意义上的指向数组 ,不是指向数组第一个元素地址;arr2为一个指针数组类型,里面放的是指针。arr2这个地址,存放的是一个int* 类型的指针。这条语句代表创建了一个指针数组arr2,数组有10个元素,每个元素的类型为int* ,并全部初始化为0。因此,我形参接受的时候也用一个指针数组类型接受,
2023-08-14 07:38:43 171
原创 day39反转字符串总结
移除多余的空格:“the sky is blue”(此时字符串的长度变为了 15)用 “ the sky is blue ” 举例说明,源字符串长度为 21。3.确定边界.字符串以空字符结尾,空字符的下一个字符才是第二个单词的开始。2.反转字符串每个单词的字符顺序,那么把每个单词当做一个小字符串来处理。反转整个字符串:“eulb si yks eht”反转每一个单词:“blue is sky the”反转字符串原理其实就是交换位置,以中间为分隔点;1.怎么判定一个单词?单词的下一个字符是空格。
2023-08-06 23:02:46 168
原创 day38 滑动窗口
此题设置两个循环,第一个循环遍历整个字符串,第二个循环遍历并判断无重复子串。设置左标识跟右标识,还有same(无重复时置0,有重复时置1)令j=left,不能超过右标识right,并将same置0;如果: 窗内元素满足条件,R向右扩大窗口,并更新最优结果;如果: 窗内元素满足条件,L向右缩小窗口,并更新最优结果;如果:窗内元素不满足条件,L向右缩小窗口;如果:窗内元素不满足条件,R向右扩大窗口;左右指针在起始点,R 向右依次滑动循环;左右指针在起始点,R 向右依次滑动循环;关键词:最长最短子串无重复等等。
2023-08-06 21:24:41 216
原创 day37回溯算法
n个数4(1234),k组合大小,startindex 搜索起始位置 一维数组path(12 13 14 等等)二维数组 res。path.size已经选取的元素大小,还剩k-path.size()个元素要选取;选取的元素至多n-(k-path.size())+1个;解决组合问题(无顺序),切割问题,子集问题,排列问题(顺序)path.pop();
2023-07-26 07:40:35 179
原创 day35KMP算法
前缀表: 0 1 0 1 2 0 (上面数字) 2意味着有一个后缀aa ,前面有一个前缀aa。所以匹配从前缀的后面开始匹配,就是从b重新开始匹配;最长相等前后缀:a 0 aa 1 aab 0 aaba 1 aabaa 2 aabaaf 0。前缀表:b的前面是aa,后面也是aa,所以遇到不匹配的时候,就找前面最长前后缀;f和b不匹配后(竖线),跳到模式串第一个b重新开始匹配;整体减1 -1 0 -1 1 -1;左移一: -1 0 1 0 1 2;
2023-07-25 07:31:34 67
原创 day33哈希表
常见的哈希表分为三类,数组,set,map,C语言的话是不是只能用数组和。遍历t字符串,字母次数–;3)看hash是否全部为0?为0说明s和t是字母异位词;分析:题目就是判断两个字符串出现的次数是否相同;1)哈希表26个小写字母次数初始化为0;
2023-07-22 18:01:40 216
原创 day31贪心算法 用最少数量的箭引爆气球 和无重叠区间
2. if 如果第i个气球的左边界大于第i-1个气球的右边界;即point[i][0] > point[i-1][1] 比如上图中3 6 的左边界3大于右边界1 2 的右边界2;右边界也是取最小值,和上一题一样;if nums[i][0] >= nums[i-1][1] i的左边界大于i-1的右边界表示没有重叠;
2023-07-21 07:41:31 548
原创 day31符号位转化
short + short 相加会转成 int 类型 int 和 int 相加不会转成 long long int 会溢出;2)要扩展的数据类型是无符号数 短数据的符号位填充到长数据类型高字节 补0。1.要扩展量为有符号,不管最终最终要扩展成有符号还是无符号,都遵循符号扩展;要扩展量为无符号,不管最终最终要扩展成有符号还是无符号,都遵循零扩展;如果长数据类型高位全为1或全为0,则会直接截取低字节赋给短数据类型;2.长数据类型缩减为短数据类型。3.有符号数和无符号数比较。自动将有符号数转为无符号比。
2023-07-18 07:46:02 202
原创 day30字符串处理函数
如果n大于src指向的字符串中的字符个数,则在dest后面填充 n- strlen(src)个\0;字符串追加函数,将src字符串追加在dest指向的字符串后面,追加的时候会追加\0;字符串拷贝函数,将src 指向的字符串前n个字节 拷贝到dest 指向的内存中 (目的 ,源,大小) dest内存足够大;追加src指向的字符串的前n个字符,将dest指向的字符串的后面。如果s1 指向的字符串小于s2 指向的字符串 返回-1;如果s1 指向的字符串大于s2 指向的字符串 返回1;包含于string.h。
2023-07-17 07:40:42 96
原创 day28内存区域
虚拟内存分块:在32位系统下,每个进程运行着的程序的寻址范围是4G;static修饰函数称为内部函数,只能在同一个.c中的函数调用;静态全局区: 未初始化的静态全局区 :静态变量,或全局变量。栈: 主要存放局部变量;堆: 动态申请内存的时候,在堆里开辟内存;初始化的静态全局区: 全局变量、静态变量。**普通全局变量 和静态全局变量 **物理内存:实实在在存在的存储设备;虚拟内存:操作系统虚拟出来的内存;文字常量区:存放常量的。代码区:运行的代码;
2023-07-15 23:07:03 271
原创 day27 贪心算法
比如10张钞票,有1,5,20,100,取五张,如何取得到数额最多的钱?每次取面额最大的那张钞票;就是每个阶段的局部最优;全局最优就是最后拿到的钞票数最大;局部最优推出全局最优;
2023-07-15 22:20:57 4598
原创 day26 求一段连续子数组之和的最大值
依次遍历数组的每个元素,并记录前面i - 1个元素的最大和preSum,若preSum < 0, 则从当前元素重新开始计算;若 preSum > 0,则当前最大和为preSum + nums[i]。思路:选一个起点,选一个终点,计算起点到终点的和;起点几种可能:0 到 size -1;终点: 起点 到 size -1;方法一:超出时间限制。
2023-07-15 17:50:55 352
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人