- 博客(21)
- 收藏
- 关注
原创 3.无重复字符的最长子串
答案是不需要,因为只有j指向的元素是重复的,这个重复的元素就在i和j之间(包括i和j),那是不是只要让i进行移动到与j重复的元素停下来,然后删掉判断是不是还有与j重复的,如果有就继续往后走,如果没有就让j继续往后遍历,最坏的情况就是与j刚好相遇,由此而知这个思想是基于双指针的一个优化,就是滑动窗口。我们第一个能想到的解法就是暴力解法:固定一个下标i,j往后遍历记录字母出现的次数,如果有重复的则记录结果,j则回到i位置i++,j=i,在重新遍历记录结果,即:双指针,但这个解法时间复杂度为O(n^2)
2024-11-08 21:26:39 272
原创 2658(网格中鱼的最大数目)
本体题意:找一段非0相邻起来的下标,求这些非0相邻起来的下标和的最大值比如上图,最大的非0相邻起来的下标和为13。
2024-10-30 23:27:18 409
原创 初始 ‘IP’ 地址和 ‘端口号’
一.认识IP地址端口号网络字节序等网络编程中的基本概念一.认识IP地址端口号网络字节序等网络编程中的基本概念。
2024-10-26 21:08:30 858
原创 C++模板初阶
重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数。那有没有一个模具,根据模具自动推成代码呢?代码的可维护性比较低,一个出错可能所有的重载均出错。实现一个通用的Swap函数,可以用函数重载。类模板实例化与函数模板实例化不同,,对于字符类型也是如此。,对于模板函数的使用,
2024-02-07 22:37:12 358 1
原创 C++(类与对象中)
通过前面构造函数的学习,我们知道一个对象是怎么来的,那一个对象又是怎么没呢的?析构函数:与构造函数功能相反,析构函数不是完成对对象本身的销毁,局部对象销毁工作是由 编译器完成的。这两个运算符一般不需要重载,使用编译器生成的默认取地址的重载即可,只有特殊情况,才需。无参的构造函数和全缺省的构造函数都称为默认构造函数,并且默认构造函数只能有一个。是特殊的成员函数,需要注意的是,构造函数虽然名称叫构造,但是构造函数的主要任。默认成员函数:用户没有显式实现,编译器会生成的成员函数称为默认成员函数。
2024-02-03 19:41:35 878 1
原创 归并排序及特征复杂度
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法该算法是采用分治法(Divide andConquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有 序,再使子序列段间有序。两个有序表合并成一个有序表,称为二路归并。类似与二叉树的后续遍历(左右根),当递归到数据个数为0或1进行排序并回归。
2023-12-16 19:33:07 57 1
原创 排序(堆排序,选择排序)
每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的 数据元素排完。在元素集合中选择关键码最大小的数据元素若它不是这组元素中的最后一个第一个元素,则将它与这组元素中的最后一个(第一个)元素交换在剩余的)集合中,重复上述步骤,直到集合剩余1个元素。
2023-12-08 22:20:25 30
原创 排序 (插入排序,希尔排序)
直接插入排序是一种简单的插入排序法,其基本思想是:。实际中我们玩扑克牌时,就用了插入排序的思想由下图可知排的是升序,
2023-12-07 16:28:48 46 1
原创 leetcode(栈实现队列,循环队列)
还有一种方法就是返回 ((back-1) + (k+1)) % (k+1) == ((back) + (k)) % (k+1)为了防止插入无效(数组遵循循环) 插入成功后 (back+1)%(k+1)当back为0时就要而外判断 即:当 k == 0 时,返回a[k]判断为满 即 (back+1) % (k+1) == front;先判断是否为空,然后直接获取 a [front]和插入一样,也要进行 %(k+1) 操作。先定义一个只入的栈,在定义一个只出的栈。删除队首元素先判断是否为空,在删除。
2023-11-22 22:34:13 40 1
原创 栈与队列及实现
FIFO(First In First Out) 入队列:进行插入操作的一端称为 队尾 出队列:进行删除操作的一端称为 队头。栈中的数据元素遵守后进先出 LIFO ( Last In First Out )的原则。栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端。队列:只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,队列具有先进先出。压栈:栈的插入操作叫做进栈 / 压栈 / 入栈, 入数据在栈顶。出栈:栈的删除操作叫做出栈。
2023-11-15 19:39:34 35 1
原创 扫雷(简易版 9*9)
棋盘总大小为9*9,但在边界的时候判断雷的信息会越界,所有一个创建一个11*11的棋盘。4.编写函数统计当前位置周围的雷数,当周围8个位置都没有雷时进行递归展开。5.统计棋盘中未展开的坐标数是否与雷数相等来判断输赢。创建2个棋盘,一个用来布置雷,一个用来展示给用户体验,1.首先对棋盘初始化,并印出棋盘。3.输入坐标进行排雷。2.对棋盘进行埋雷。
2023-10-20 20:09:30 4265 1
原创 操作符详解
sizeof :计算的是类型创建的变量/变量的大小以字节为单位,计算的结果是 size_t 类型,是无符号整形,可以使用 %zd 进行打印。-- :自减1操作,前置--(先-1后使用),后置--(先使用后-1)两个相邻的操作符先执行哪个?sizeof 后面的括号中不是类型的时候,可以不加括号,说明sizeof不是函数,是操作符。如果某个操作符的各个操作数属于不同的类型,那么除非其中一个操作数的转换为另一个操作数的类。
2023-10-20 15:57:03 33 1
原创 文本文件和二进制文件,文件读取结束的判定,文件缓冲区
feof —— 在文件读取结束后用来判断文件在读取过程中是否遇到结束标志而结束。ferror —— 在文件读取结束后用来判断文件在读取过程中是否发生错误结束。处理的数据文件的,所谓缓冲文件系统是指系统自动地在内存中为程序。数据在内存中以二进制的形式存储,如果不加转换的输出到外存,就是。二进制文件的读取结束判断,判断返回值是否小于实际要读的个数。如果没有读取到count个数据,返回真实读取到的完整的数据个数。函数的返回值直接用来判断文件的是否结束。码的形式存储,则需要在存储前转换。
2023-10-10 17:53:23 182 1
原创 数据在内存中的存储
大端(存储)模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址。这是因为在计算机系统中,我们是以字节为单位的,每个地址单元。位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将多个字节安排的问题。小端(存储)模式,是指数据的低位保存在内存的低地址中,而数据的高位。将原码的符号位不变,其他位依次按位取反就可以得到反码。型(要看具体的编译器),另外,对于位数大于。这时,浮点数就采用下面的规则表示,即指数。是相同的,不需要额外的硬件电路。,因此可以被舍去,只保存后面的。
2023-10-10 14:10:52 36 1
原创 结构体,枚举,联合
结构体的总大小要是所有成员的较小值之中最大值的倍数,所以最大值是i,也就是4,上面c2正好落到了8地址处,c1和c2总共是9个字节,不为4的倍数,所以继续往下移动,直到是4的倍数,所以落到了11地址处。i占4个字节,vs中默认为8个字节,取较小值4,c1往下移动到1地址处,又因他不为4的倍数,依次往下移动,直到是4的倍数,最终落在了4上面,往下储存的个字节。4.当一个结构体包含2个位段,第二个位段成员比较大,无法容纳第一个位段剩余的位时,是舍弃剩余的位还是利用,是不确定的(在vs中是舍弃的)。
2023-09-23 22:21:09 35 1
原创 字符转换函数和内存拷贝内存偏移和结构体
memcpy(内存拷贝):模拟实现自己会覆盖掉原来的元素,但使用库函数则不会,说明库函数更完善。memmove(内存偏移)*结构是一些值的集合,他们被称为成员变量,可以是不同类型的变量。
2023-09-20 20:58:41 64 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人