- 博客(35)
- 问答 (18)
- 收藏
- 关注
原创 滑动窗口算法
滑动窗口作为一个考点较高的算法,广泛应用于子串问题中,本文将进行详细讲解。滑动窗口解题思路如下:牢记以下情况,再去练上几道题,滑动窗口问题一般都可以很好地解决。
2022-11-19 21:11:54
14978
原创 cookie,session和token详解
目前网络上进行用户验证的方法主要有三种:cookie,session,token,他们之间存在相似也有各自的优缺点,本文将着重强调。cookie是浏览器存储在本地的文件,主要用于存储服务器对用户进行的标记,大小有限一般只为4kb,用户在第一次进行服务器请求时,服务器会生成对应的id,然后发送给客户端,客户端就会存储在本地文件中。
2022-11-03 16:47:49
3559
原创 详解链表反转问题
链表是数据结构中的一种线性数据结构,它的结构可以理解为一个结构体,内部存储着一个值和其对下一个链表的指向。链表的种类很多,主要有单链表(本文所有题目都是讲解单链表),双链表,循环链表,他们的结构大同小异,都是类似的结构体指向,只是单链表只有一个指针,双链表存在两个 两个指针,循环链表的尾结点指向不同提示:以下是本篇文章正文内容,下面案例可供参考本人对于数据结构熟练度不高,如果有讲得不够好的地方,请包涵此外:链表问题一定要画图,脑海浮现会很乱的。
2022-11-03 10:48:58
2877
1
原创 java基本类型类及其包装类介绍
2.3两个都是直接赋值的话,因直接给Integer类型赋值基本数据的底层操作使用的是valueOf(),并且Integer默认先创建并缓存-128~127之间数的Integer对象,当调用valueOf时,如果参数在-128~127之间则计算下标并从缓存中返回,否则创建一个新的Integer对象,则在-128-127之间,两者是相等的,否则是不相等的。2.1这种情况下,要进行情况区分,因为==在引用对象之间是比较地址,如果两个都是new的那么一定地址不同,因为new的话指的是堆中的不同数据。
2022-10-12 10:28:03
376
原创 vs创建mfc项目详解
若要修改位图画刷,则可通过修改添加的位图,具体见其他博客,记得必须为bmp文件才可导入,可通过使用其原有图片标号,也可自己选择转格式(方法:画布打开另存为)。11.接下来在里面进行程序书写便可,书写完成后点击运行即可。
2022-09-22 18:19:32
4435
1
原创 粒子群算法py版实现及部分讲解
粒子群算法重点为速度和位置的转移,核心公式为将速度和位置进行向量化,并且根据自己设置的个人学习参数和全局学习参数进行位置的转移,并且还需要设置惯性参数,即保持原速度的参数大小,建议不固定参数,否则求解会产生非最优,建议在迭代求解前期将惯性参数和个人学习参数设置较大,并且在后期将他们尽量设置小,以便全部粒子可以到达最优解情况。并且还需要设置速度阈值,以便防止粒子移动速度过大。
2022-09-08 17:28:00
192
原创 完全背包问题及其优化
接下来有 NN 行,每行两个整数 vi,wivi,wi,用空格隔开,分别表示第 ii 种物品的体积和价值。策略如下:由于进行循环时,只需要进行本轮外层循环的数据,故可以直接进行正序循环保留。该解法可以解决部分问题,但是时间复杂度较高,在算法题中容易TLE,故一般进行优化。完全背包问题是常见的背包算法问题,特征为每个物体的数目为无穷个,进行最大值获取。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。第一行两个整数,N,VN,V,用空格隔开,分别表示物品种数和背包容积。...
2022-08-15 19:23:18
728
原创 子数组异或和
数组(i - j)的异或和为数组前缀异或和s[j]^s[i - 1],且可以推导性质数组左右两边异或和相等的性质异或为0,即可得到性质,若要数组左右两边异或和相等,则数组前缀异或和s[j]^s[i - 1]=0。异或和运算:将数组各项进行异或操作,即^运算符运算,进行异或和运算规则为,数字的二进制相同部分变为0,不相同部分变为1,故异或和运算被称为不进位的加法。例如,当给定数组为 [1,2,3,4,5][1,2,3,4,5] 时,满足条件的连续子数组只有 11 个:[2,3,4,5][2,3,4,5]。..
2022-08-14 01:28:44
753
原创 leetcode640.求解方程
本题的思路较为简单,按照方程式的写法,将=号左边的x的系数统计出来,并且将常熟之和统计出来,并且设置op表示正负号,然后将左边式子之和全部变为相反数,将op变为1,后按照原方式进行运算,最后根据x和num的值返回对应结果。求解一个给定的方程,将x以字符串 "x=#value" 的形式返回。该方程仅包含 '+' , '-' 操作,变量 x 和其对应系数。输入: equation = "x+5-3+x=6+x-2"输入: equation = "2x=x"输入: equation = "x=x"...
2022-08-10 19:50:55
159
原创 01背包问题及其空间优化
01背包是经典的动态规划问题,思想为取或不取第i个物品下第j空间的最大值,故可以直接进行动态规划方程构建: dp[i][j] = Math.max(dp[i - 1][j],dp[i - 1][j - wg[i]] + va[i]);该部分进行循环求解时,dp[i][j]的状态仅仅和上一层相关,故可以直接利用滚动数组进行存储上一层状态,即变为。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。第一行两个整数,N,VN,V,用空格隔开,分别表示物品数量和背包容积。...
2022-08-04 23:47:45
940
原创 广度搜索算法——八数码
1.如何表示八数码地图,由于每次在地图数交换后,地图都进行变换,进行存储表示都较为困难。在一个 3×33×3 的网格中,1∼81∼8 这 88 个数字和一个。现在,给你一个初始网格,请你求出得到正确排列至少需要进行多少次交换。2.将地图变化的对应步数,利用字典进行存储,便于进行对应和去重。1.将地图按照数组的存储顺序,转化为对应的字符串进行存储表示。输入占一行,将 3×33×3 的初始网格描绘出来。输出占一行,包含一个整数,表示最少交换次数。3.还原地图,利用地图的数组索引还原。在游戏过程中,可以把。...
2022-08-03 23:32:11
314
原创 leetcode有序队列
该题的思路较为简单,考虑k == 1和k > 1的情况,由于k > 1时一定可以满足实现最小的字典序排序,故直接排序即可;而当k == 1时,由于排序的可能性有限,故可以直接列举,进行比较即可。在第二步中,我们将第三个字符(“c”)移动到最后,获得最终结果 “aaabc”。在第一步中,我们将第一个字符(“b”)移动到最后,获得字符串 “aacab”。在第二步中,我们将第一个字符(“b”)移动到最后,获得最终结果 “acb”。在第一步中,我们将第一个字符(“c”)移动到最后,获得字符串 “bac”。...
2022-08-03 15:00:51
92
原创 合并K个升序链表
给你一个链表数组,每个链表都已经按升序排列。请你将所有链表合并到一个升序链表中,返回合并后的链表。示例1输入输出解释链表数组如下[1->4->5,1->3->4,2->6]将它们合并到一个有序链表中得到。示例2输入lists=[]输出[]示例3输入输出[]提示lists[i]按升序排列lists[i].length的总和不超过10^4。...
2022-08-02 10:32:51
125
原创 acwing食物链
解题思路本题是一道经典并查集问题,主要考察并查集维护信息,可以设置距离根节点的距离为判断依据,如距离根节点距离模3为1表示该动物吃根节点,距离模3为2表示该动物被根节点吃,距离模3为0表示该动物与根节点动物同类。此人对NN个动物,用上述两种说法,一句接一句地说出KK句话,这KK句话有的是真的,有的是假的。以下KK行每行是三个正整数D,X,YD,X,Y,两数之间用一个空格隔开,其中DD表示说法的种类。动物王国中有三类动物A,B,CA,B,C,这三类动物的食物链构成了有趣的环形。...
2022-07-30 01:44:23
362
原创 leetcode四数之和
给你一个由n个整数组成的数组nums,和一个目标值target。请你找出并返回满足下述全部条件且不重复的四元组[nums[a], nums[b], nums[c], nums[d]](若两个四元组元素一一对应,则认为两个四元组重复):...
2022-07-28 17:13:44
245
原创 整数转罗马数字
本题可采用模拟思想,先创建数组分别存储罗马数字对应符号,后从大到小进行遍历,求出对应值是否满足大于当前罗马数字意义,并且循环过程中,对于特殊值进行特判。数字1在数字5的左边,所表示的数等于大数5减小数1得到的数值4。同样地,数字9表示为。通常情况下,罗马数字中小的数字在大的数字的右边。但也存在特例,例如4不写做。,即为两个并列的1。给你一个整数,将其转为罗马数字。例如,罗马数字2写做。......
2022-07-27 21:54:37
96
原创 滑动窗口,单调栈
滑动窗口为队列在算法中的简单运用,主要用于求出移动数组中的最大值和最小值,基本思想为先判断队头是否应出队,在从队尾元素判断当前元素是否小于等于当前元素,是的话则队尾元素出队。共一行,包含NN个整数,其中第ii个数表示第ii个数的左边第一个比它小的数,如果不存在则输出−1−1。单调栈是栈在实际算法中的简单应用,基本概念为若栈顶元素大于等于当前比较元素,则一直出栈,否则保持栈内元素单调。给定一个长度为NN的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出−1−1。...
2022-07-23 12:17:13
214
原创 数组模拟栈,队列
现在要对队列进行MM个操作,其中的每个操作33和操作44都要输出相应的结果。现在要对栈进行MM个操作,其中的每个操作33和操作44都要输出相应的结果。栈的结构特点为设置栈顶和栈尾,栈尾不可出入元素,元素仅可通过栈顶进出。接下来MM行,每行包含一个操作命令,操作命令为。操作的查询结果为一个整数,表示栈顶元素的值。操作的查询结果为一个整数,表示队头元素的值。操作都要输出一个查询结果,每个结果占一行。操作都要输出一个查询结果,每个结果占一行。第一行包含整数MM,表示操作次数。...
2022-07-22 15:11:44
134
原创 静态数组模拟双链表
例如操作过程中一共插入了nn个数,则按照插入的时间顺序,这nn个数依次为第11个插入的数,第22个插入的数,…双链表是一种常见的数据结构,在各大语言中均提供了相应的库函数,不过在算法竞赛中,有由于创建链表结点往往耗时较大,故通常采用数组模拟链表的方法。1.分别设置数组l[],r[],表示结点的左右指向索引,设置ne[]数组表示结点值,设置index表示当前所用的数组空间索引。2.设置数组索引为0和1的分别表示双链表头结点和尾结点,仅表示结点,简化操作作用。共一行,将整个链表从左到右输出。...
2022-07-21 12:27:08
200
原创 静态单链表
题目中第kk个插入的数并不是指当前链表的第kk个数。例如操作过程中一共插入了nn个数,则按照插入的时间顺序,这nn个数依次为第11个插入的数,第22个插入的数,…第nn个插入的数。解题思路在本题中由于创建结点所耗时间较多,故不可以采用常规链表做法,为尽量避免耗时,应采用数组模拟及静态单链表方法。现在要对该链表进行MM次操作,进行完所有操作后,从头到尾输出整个链表。2.设置e[n]和ne[n]分别记录当前链表下一位置索引和当前链表值。共一行,将整个链表从头到尾输出。...
2022-07-21 00:03:41
144
原创 贪心算法区间合并
2.将区间扫描,并根据扫描区间大小关系将区间进行合并(区间值之间大小关系,分为三种,主要根据如下代码)例如[1,3][1,3]和[2,6][2,6]可以合并为一个区间[1,6][1,6]。给定nn个区间[li,ri][li,ri],要求合并所有有交集的区间。接下来nn行,每行包含两个整数ll和rr。共一行,包含一个整数,表示合并区间完成后的区间个数。1.将区间按照区间左端点大小依次排序。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。第一行包含整数nn。...
2022-07-19 00:25:09
169
原创 二进制中一的个数
本题主要考察位运算的概念,由于计算机内部进行位运算是通过补码进行,故可以直接根据x&-x进行为1的最低位求解。共一行,包含nn个整数,其中的第ii个数表示数列中的第ii个数的二进制表示中11的个数。给定一个长度为nn的数列,请你求出数列中每个数的二进制表示中11的个数。0≤数列中元素的值≤1090≤数列中元素的值≤109。第二行包含nn个整数,表示整个数列。第一行包含整数nn。...
2022-07-17 23:39:35
75
原创 判断子序列
解法本题为经典双指针问题,本题主要为判断上一组元素中的值是否再下一组元素中依次存在,故可直接采取双指针算法,判断是否存在,并根据最后匹配的数目进行判断。给定一个长度为nn的整数序列a1,a2,…,ana1,a2,…,an以及一个长度为mm的整数序列b1,b2,…,bmb1,b2,…而得的序列,例如序列{a1,a3,a5}{a1,a3,a5}是序列{a1,a2,a3,a4,a5}{a1,a2,a3,a4,a5}的一个子序列。,ana1,a2,…,bmb1,b2,…...
2022-07-17 23:36:00
145
原创 数组元素的目标和
本题为简单双指针运用,关键为确定单调性,降低时间复杂度,由于要求相加满足对应结果的值,故可直接通过倒序相加判断,若求得则直接输出,否则依次进行比较。第一行包含三个整数n,m,xn,m,x,分别表示AA的长度,BB的长度以及目标值xx。请你求出满足A[i]+B[j]=xA[i]+B[j]=x的数对(i,j)(i,j)。给定两个升序排序的有序数组AA和BB,以及一个目标值xx。第二行包含nn个整数,表示数组AA。第三行包含mm个整数,表示数组BB。同一数组内元素各不相同。...
2022-07-16 23:35:01
176
原创 双指针算法快速入门
双指针算法是一种广泛被应用的算法,比如快速排序算法和快速选择算法就是双指针算法的典型应用。双指针算法可以简化朴素算法,即暴力枚举法,基本上所有可以使用暴力法解决的问题都可以使用双指针算法解决。基本思路为:设置双指针,每次移动表示结尾的指针,将表示区间开始范围的指针缓慢根据情况移动,算法的时间复杂度降为On模板如下:题目链接如下:活动 - AcWing给定一个长度为 nn 的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数 nn。第二行包含 nn 个整数(均在 0∼1
2022-07-02 00:15:28
65
原创 初探背包问题
本文主要讲解01背包和完全背包的解法和初步优化思路1.01背包是一种常见的背包问题,具体表现形式为有限个物品种类,每种只有一个物品,进行选择来满足最大价值,解决这类问题常用动态规划算法,具体算法思路为确定递推方程式,进行方程推导例题:有 NN 件物品和一个容量是 VV 的背包。每件物品只能使用一次。第 ii 件物品的体积是 vivi,价值是 wiwi。求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行两个整数,N,VN,V,用空格隔开,分别表示物品数量和
2022-06-24 23:08:39
96
原创 acwing校庆
20192019年浙江大学将要庆祝成立 122122 周年。为了准备校庆,校友会收集了所有校友的身份证号。现在需要请你编写程序,根据来参加校庆的所有人士的身份证号,统计来了多少校友。输入格式输入在第一行给出正整数 NN。随后 NN 行,每行给出一位校友的身份证号(1818 位由数字和大写字母 XX 组成的字符串)。题目保证身份证号不重复。随后给出前来参加校庆的所有人士的信息:首先是一个正整数 MM。随后 MM 行,每行给出一位人士的身份证号。题目保证身份证号不重复。输出格式首先在第一行输出参加校庆的校友的人
2022-06-19 14:06:45
112
原创 性感素数解法
“性感素数 ”、指形如 (p,p+6)(p,p+6) 这样的一对素数。之所以叫这个名字,是因为拉丁语管“六”叫“sex”(即英语的“性感”)。现给定一个整数,请你判断其是否为一个性感素数。输入格式输入在一行中给出一个正整数 NN。输出格式若 NN 是一个性感素数,则在一行中输出 ,并在第二行输出与 NN 配对的另一个性感素数(若这样的数不唯一,输出较小的那个)。若 NN 不是性感素数,则在一行中输出 ,然后在第二行输出大于 NN 的最小性感素数。数据范围1≤N≤1081≤N≤108输入样例1:输出样例
2022-06-17 19:48:54
566
原创 System.in讲解
关于system.in对象大家肯定有很多好奇为什么偏偏是它,这个博客讲的非常好我用#优快云#这个app发现了有技术含量的博客,小伙伴们求同去《Java中的System.in》, 一起来围观吧 https://blog.youkuaiyun.com/Dteamdoat/article/details/122070751?utm_source=app&app_version=5.5.0&code=app_1562916241&uLinkId=usr1mkqgl919blen...
2022-06-09 15:39:48
151
原创 差分前缀和
求前缀和运算时经常有确定数组后,频繁对数组元素进行更改,如果采用暴力解法往往会有超时问题,故时常采用差分数组求法。基本思想为:1.构建差分数组brr2.对差分数组进行增删操作3.利用规律求前缀和(此时差分数组常作为矩阵的元素作为替换)一维替换代码如下:二维替换代码如下:题目链接: 活动 - AcWing题解:题目链接: 活动 - AcWing题解如下:...
2022-06-02 21:58:37
358
空空如也
为什么读取数据scanner和bufferedreader不可以一起用
2022-05-30
链栈判断回文字符,代码运行不了
2021-10-21
单链表分割为三个循环链表问题,代码运行失败
2021-10-05
含三类字符的线性链表分割为三个循环链表问题,运行结果不对,怎么改
2021-10-05
链表多项式相加问题 ,程序运行有问题
2021-10-04
链表求解A,B集合的差,运行结果无法输出,怎么改正
2021-10-04
求两个数组的中位数,为什么输入完数后,运行不了
2021-09-29
求无重复字符的最长子串问题,结果一直显示0,可能改正
2021-09-29
为什么代码运行结果会出现黑方框
2021-09-26
为什么代码运行结果很怪异,请指正下
2021-09-24
为什么第一个代码可以运行,第二个要输入元素的运行结果不对
2021-09-17
程序不知道哪错了,能纠正一下吗
2021-09-16
找出一个二维数组的鞍数,但不知道为什么程序运行结果总是不对
2021-09-13
为什么代码运行显示素数只有0-10内的
2021-09-04
为什么第一个代码运行结果有问题,而第二个没有
2021-09-03
为什么第一个代码只可以在c小于10时运行,第二个却可以在c大于10时运行?
2021-08-29
为什么代码运行出来的最大公因数和最小公倍数有一部分不对
2021-08-28
代码运行时,输入的数字之间加了逗号,还是一直输出第一个数
2021-08-03
TA创建的收藏夹 TA关注的收藏夹
TA关注的人