自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java中static学习笔记

2025-06-08 21:21:18 311

原创 力扣395做题笔记

我们要看当前窗口收集了多少种类,要控制它不能超过当前处理的子问题(require)的数量,否则就是不合规的,因为它应该在处理之后的子问题才考虑。字符都要大于k,我的写法错误地理解为只要有一种大于k的子串就行了。这里利用了一点动态规划的思想,这个字符串都是小写的字符串。那么就说明,最多有26种字符来组合一个字符串。相当于就26种子问题,组合一起就是总问题了。种,每种符合的长度,然后比长短既可以了。

2025-05-25 22:01:08 492

原创 java多态的学习笔记

方法特有的supereatCatnew Cat()CatchMouse。

2025-05-25 21:41:20 316

原创 java方法重写学习笔记

我们把Dog类的cry方法注释掉了,就会到父类里面去找。

2025-05-25 10:34:54 345

原创 力扣992做题笔记

不超过k的子数组数」减去「不超过k-1的子数组数」,本质是通过「前缀和相减」的方式,精准提取出「恰好等于k」的子数组数目。这种方法将复杂的「恰好k」问题转化为更易计算的「不超过k」问题,是滑动窗口算法中常用的技巧。

2025-05-19 16:27:17 752

原创 super关键字

xxxxx。

2025-05-19 14:53:20 262

原创 java作用域的小细节

【代码】java作用域的小细节。

2025-05-19 09:37:08 118

原创 Leetcode134加油站

这意味着我们会少加一些余量,那我们想想,之前余量没少加的时候都到达不了l,现在余量少加了,还能到吗?从中我们可以得出一个结论:看一个点能不能到下一个点,就要用当前的油量减去消耗的量,那么gas[i] - cost[i],就表明这个点到了下一个点之后剩余的油量,如果是负数,说明它走不到下一个点,会在半路熄火。那么它的累加和的意义就是从累加起点到累加终点剩余的油量,如果为负数,那么说明我们当前选取的起点无法到达目前的终点,为正数好理解,还有余量,只要大于等于0,都是可以的。

2025-05-18 16:48:18 365

原创 Leetcode76覆盖最小子串

这里是把每一个字符扔到欠债表里面进行结算,如果是target里面的,说明他刚开始是负的,所以我们用是否小于0来判断是否可以对欠债总数debt来进行削减,到0的时候就说明我们要开始尝试收缩窗口了。可是题目要我们求最短啊,我们尝试收缩左边界,收缩的时候要注意,如果收缩会导致欠债那么就不能收缩,只能记住答案,拿去与之前比大小看是否能更新。要判断左边是否可以削减,就要看它的削减会不会导致债务的增加,也就是会不会导致现在的窗口不能完全包含target,所以进行此判断。此时我们发现,不仅不欠债还有了结余可以尝试收缩。

2025-05-16 21:02:30 471

原创 java方法的练习题

【代码】java方法的练习题。

2025-05-15 15:04:31 140

原创 Leetcode209做题笔记

3.更新答案,初始化答案为一个很大的值,随后不断和每一次答案比大小,如有更小的答案则更新,没有则维持原来的答案。就是找符合条件的最小窗口,那么让左边一直动,只要区间和大于等于target就可以了,写一个循环加上判断条件。可以利用左右两个指针来进行,右指针增加为扩大窗口,左指针增加,往右移动相当于缩短窗口。此时长度为3, 与刚才的4比较发现比4还要短,那么答案更新为3.如此进行下去,即可求出答案。

2025-05-14 21:02:04 428

原创 Leetcode2266. 统计打字方案数

的话,init函数会调用多次,init函数只需要在类创建的那次初始化就可以了,后面直接用就行,不需要多次的初始化。就变成了当前与跳过1步的字符是否相等,因为我们做的是一个分割的过程,不可能每次只跳一步。我们是要比较当前step,也就是当前走到的字符与跳过i步之后的字符是否相等,如果写成。观察我们画的递归图,每个分支的答案可以存在数组中,减少无效递归。我们要进行的组合,本质就是对字符串进行分割。这和一般的组合不同的是,我们要确定不能存在。的长度是5,我们爬楼梯的方式有一次走。参考的是灵神的题解。

2025-05-08 10:59:44 931

原创 C++面向对象——继承学习笔记

【代码】C++面向对象——多态学习笔记。

2025-03-10 20:42:02 426

原创 C++运算符重载的学习笔记

3.在运算符重载中也可以发生函数重载。

2025-03-03 21:04:49 228

原创 力扣完全平方数279和力扣91解码方法的做题笔记

动态规划的状态定义dp[i]:表示前i个字符的解码方式数。例如,dp[1]表示前 1 个字符的解码方式数。dp[2]表示前 2 个字符的解码方式数。以此类推。

2025-03-02 21:33:00 1127

原创 2025.3.1有关c++类的学习

【代码】2025.3.1有关c++类的学习。

2025-03-01 21:46:34 452

原创 两道算法练习

以第。

2025-03-01 21:45:21 1091

原创 dfs的刷题小总结。

定义全局变量minSteps:用于记录最少按键次数。visited:用于记录已经访问过的楼层。修改dfs函数增加steps参数来记录当前按键次数。在进入新楼层之前,检查是否已经访问过。在到达目标楼层B时,更新minSteps。在每次递归调用dfs时,增加steps的值。初始化在main函数中,初始化minSteps。初始化visited数组。调用dfs从初始楼层A开始调用dfs,初始steps为0。

2025-01-25 19:52:53 1053

原创 基础算法——差分

可以发现,我们先对diff数组==[L,R] + v = d[L]+v,d[R+1]-v==处理,然后进行前缀和处理还原,就是在[l,r]区间进行+v的操作,那么我们在遇到这样的问题时,直接先把原数组的差分数组弄出来:diff[i] = arr[i] - arr[i - 1],然后进行处理,处理次数依情况而定,最后再前缀和还原,这样时间复杂度就是O(m+n),线性,大大优化。

2025-01-11 16:52:31 753

原创 基础算法——前缀和

我们要算区间和,并且还要根据k的值来确定区间每个元素要进行k次方的处理,如果我们根据输入的k是多少然后再对区间元素进行处理。因为我们每次访问,虽然输入的l,r不同,但每次都要从头开始算次方和前缀和,这样多次的重复运算,就使得时间复杂度很高。的数量是相等的,按照题目中平衡串的定义,这个子串就是一个平衡串。数组的计算方式,在代码中通过如下语句来构建。的数量是否相等,也就是它们的差值是否为。表示的是从字符串的开头(也就是。的数量差值,其实就等于从开头到。的数量相等,是一个平衡串。例如,还是以上面的字符串。

2025-01-08 11:36:56 809

原创 进制转换——基础算法

将每一位乘以对应的十的次方数,再进行相加。第一步是把N进制数的每一位存入数组arr中。然后初始化十进制数x为0x 不断的乘以N,再加上N进制数的每一位数就可以得到十进制数字N了。

2025-01-05 16:03:54 358

原创 双指针的学习笔记

由于数字都是正数特性。当慢指针(左指针)移动的时候,区间和一定小,区间长也变小。当快指针(右指针)移动时,区间和变大,区间长变大。数组或者是字符串中,用来遍历。最美区间:输入两个数,n,s。找出大与等于s的最短区间。给出的样例都是升序的。

2024-12-31 10:18:19 424

原创 PTA数据结构编程题7-51,52,53

这道题目总体思路是先遍历两个链表,然后处理剩余数组的元素,最后再把处理结果放入第三个数组中输出即可。如何遍历两个数组?用双指针i,j把小的元素先放入数组中,如果不等长,则是短的链表先走完,此时,同时遍历两个数组这件事情结束。然后是处理剩余的元素,为什么剩余了?因为长链表还没有走完但是短链表走完了,所以还剩下一些长链表里面的元素没有被处理。长的链表此时双指针的下标一定还小于数组的大小。由于是非降序数组,则是挨个放入,恰好从小到大排列。

2024-12-27 21:47:14 454

原创 PTA数据结构编程题7-1最大子列和问题

给定K个整数组成的序列{ N1​, N2​, …, NK​},“连续子列”被定义为{ Ni​, Ni+1​, …, Nj​},其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。本题旨在测试各种不同的算法在各种数据情况下的表现。

2024-12-26 16:10:02 794

原创 PTA数据结构练习题6-6带头结点的链式表操作集

创建一个结点作为头结点,将头结点指向的下一个结点位置的指针初始化为空指针。

2024-12-25 21:05:57 353

原创 PTA数据结构题目:链表操作集合

P)为什么我写成= NULL)的时候会发生段错误,这两种写法逻辑上不是一样的吗?

2024-12-24 21:10:09 327

原创 链表刷题笔记(题解出自灵茶山)

即两个指针初始化为头节点,都从头节点出发。先让快的指针先走n次,如此就跳过了n个结点。但是判断条件要注意。一个乌龟一个兔子,永远不可能相遇,当它们相遇的时候,就说明这是一个环形链表。然后,慢指针与快指针再同时往后移动,此时就能发现,慢指针指向的位置就是倒数第n个结点的前一个结点。这里还没有结束,如果链表只有一个结点。那么我们需要创建一个哨兵结点,在前面,这样就可以解决了。难点在于怎么找到要反转的头节点的前面一个结点。就是将反转与寻找链表的中间结点结合起来。我写的时候错写此条件,会造成错误。

2024-12-10 19:29:19 250

原创 题目:苹果P1580的做题笔记

得到k的值后,将第一天到某一天的累积的苹果数存起来,直到这个数字>=k值。然后运用二分查找的思维去寻找匹配的下标。

2024-12-05 10:30:09 376

原创 PAT乙级1003我要通过的做题笔记

得到“答案正确”的条件是:字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。根据题目中的规则,如果aPbTc是正确的,那么aPbATca也是正确的。

2024-12-03 11:30:30 1055

原创 C转C++的学习笔记

/宏定义//{//看作宏定义//不可改变//////}

2024-12-01 22:01:19 475

原创 C语言模拟实现简单链表的复盘

我在实现时,错误讲指针先赋值为NULL,这样的话会造成野指针错误。不是将指针赋值给一个变量然后++,是将指针赋值为下一个节点的指针。sizeof(struct LNode)更加严谨。头节点与其他节点的处理方式不同。

2024-11-27 21:16:25 504

原创 数据结构单链表,顺序表,广义表,多重链表,堆栈的学习

比如一个多项式,主要包括x的系数,x的指数,那么可以创建一个一维数组来存储它的系数和指数,用数组下标来表示。它的系数可以用数组下标对应的数组元素来储存。可是这样储存会浪费空间所以采用单链表形式来存储。即创建一个指针变量,存储元素地址与下一个元素的地址,这样就不会造成太多空间的浪费。

2024-11-26 21:59:32 206

原创 数据结构第一讲

打印1到N之间的正整数有递归和循环两种方法实现。但是在数字变大后,递归的方法会导致内存占用过多而崩溃。而循环则不会。

2024-11-23 21:36:27 328

原创 文件的读写

FILE* stdin - 标准输入流(键盘)FILE* stdout - 标准输出流(屏幕)FILE* stderr - 标准错误流(屏幕)任何一个C程序,只要运行起来就会默认打开三个流。

2024-11-20 21:04:59 237

原创 同向双指针

力扣209枚举右下标同时右移左下标以下是对这段代码的解析:一、宏定义部分二、函数部分

2024-11-19 21:34:55 427

原创 相向双指针的两数之和,三数之和

returnSize是一个指向整数的指针。这个指针的作用是让函数告知调用者返回结果的大小。在这个函数中,函数将*returnSize设置为2,表示返回的结果数组(由twoSum函数返回的数组)的长度是2,其中包含了找到的两个数在numbers数组中的下标(从1开始)。p为一个储存两个整型的数组的首元素的指针。返回这个指针,就可以通过它找到我们存储在其中的两个下标。numberSize代表数组元素的个数用于确定双指针的取值范围。numbers指针代表数组首元素的地址,target代表我们要寻找的两数的和。

2024-11-19 14:42:53 397

原创 动态内存管理

一种是在旧地址后面拿空间,另一种是在堆区重新开辟。//当程序退出的时候,系统会自动回收内存空间的。//并不是说内存空间就不回收。

2024-11-17 20:22:12 269

原创 枚举,联合

define 定义的量在调试时和肉眼看到的代码不一样struct stint a;char c;//4char c;//共用int main()union Un u;u.c = 0x00;//?return 0;

2024-11-16 21:37:09 173

原创 qsort函数的模拟实现

int(* cmp)(const void* e1, const void* e2)//函数指针-比较函数。void qsort(void* base,//你要排序的数据的起始位置。size_t width,//待排序的数据元素的大小-单位是字节。size_t num,//待排序的数据元素的个数。

2024-11-16 19:34:27 185

原创 结构体的深入学习:内存对齐等

【代码】结构体的深入学习:内存对齐等。

2024-11-15 22:00:07 268

空空如也

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

TA关注的人

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