- 博客(85)
- 资源 (1)
- 问答 (1)
- 收藏
- 关注
原创 LeetCode541反转字符串②
可以看到,②和③的情况,右边界是一样的,也就是说我们只需要判断当前剩余字符数是否够k个就可以了,2k的情况我们不需要额外判断。①当剩余字符数<k,是反转当前所有字符,右边界就是right=len-1,不可以超过len-1,会越界;②当剩余字符数>k且<2k,反转k个字符,右边界就是right=left+k-1,③当剩余字符数>=2k,也是反转k个字符,右边界是right=left+k-1,
2025-04-08 20:01:45
173
原创 LeetCode383赎金信
一道简单的哈希查找,一开始惯性思维用上了hashtable,实际题目更简单,题目已经限定了都由小写字母组成,那么只需要用到数组就可以了,先把magazine的字母都映射到数组中,记录出现的次数,后面遍历ransomNote,如果哈希表中对应字母次数小于0说明magazine中没有对应的字母,直接返回false,如果顺利遍历结束则返回true。
2025-04-04 02:17:48
142
原创 LeetCode454四数相加
nums1和nums2分为一组,nums3和nums4分为一组,先遍历第一组(nums1和nums2),计算出两数之和,并记录到哈希表中。考虑优化,题目的有一点很关键,就是不用考虑去重,和上一道哈希数组的题目类似,那么可以将时间复杂度降低到O(n²),四重循环,遍历得出所有为0的和,时间复杂度超高,pass。,存在则说明这四个数可以相加为0,记录次数k。然后遍历第二组,计算两数之和,
2025-04-02 00:48:16
192
原创 LeetCode202快乐数
第二步需要考虑哈希表的长度,题目中给出的n的范围可知,最长是32位,最大数是32位全1,那么平方和最大就是31位9,最大和是2511,所以可以设置数组长度为2512,用于记录平方和是否出现过,从而判断是否循环。第一个点就是求该数各位平方和,第二个就是考虑如何判断是否出现循环,即当前平方和是否曾经出现过,考虑用哈希表。
2025-03-29 20:45:48
209
原创 LeetCode349两个数组的交集
2.遍历nums2查询哈希表中是否存在该元素,若存在,则将该元素写进result中,并将哈希表对应值改为0,避免重复录入。,c语言用数组建立哈希表来解题,题目限定了数组长度在1000以内,那么可以设定一个result数组用于存储交集。1.我们需要将nums1映射到哈希表中。这个题目是查找交集,考虑用。3.输出result。
2025-03-28 17:42:11
288
原创 LeetCode242有效的字母异位词
直接使用哈希数组,创建一个26长度的整形数组,初始值均设为0,数组下标从0-25,表示字母a-z,先遍历s字符串,记录s中已有的字母,出现一个则对应下标数组元素值++,在遍历t字符串,对应下标数组元素–,等于做一个逆运算,最后遍历哈希数组,如果和初始状态一致(值均为0),说明s,t的字母均相同,如果不一致则一定不全相同。
2025-03-26 11:09:21
152
原创 LeetCode142环形链表
快慢指针,fast步长为2,low步长为1,快慢指针相遇则有环,事实上只有一个相遇机会,就是在环的入口,假设在环内相遇,想象一下,圆环拉直成为一条线,一快一慢,快前慢后—>永不相遇,假设不成立,所以一定且只在入口相遇。
2025-03-25 11:29:42
187
原创 LeetCode02.07.链表相交
重点是两个链表同步前进,同个起点,同样步长,那么我们需要知道两个链表的长度,让长的对齐短的,也就是说,按照图上的示例1,链表A从4开始,那么B要从0开始,也就是我们所说的。,剩下就是常规操作了。
2025-03-24 16:50:23
241
原创 LeetCode19删除链表的倒数第N个结点
以1->2->3->4->5,n=2为例,需要删除的目标节点是4,那么最终low定位在3,fast定位在5,从结尾往前推,当low初始停留在虚拟节点dummy处,fast要停留在2的位置,那我们首先需要一个单层循环把fast指针送过去,根据fast指针初始位置(dummy)和目标位置(2),fast要往前跳两次,由此得出循环条件 i=0;对于中间节点能够正确删除,但是对于删除头节点,比如【1】,n=1的情况就无法正确删除,因为fast可能停留在删除目标节点的后一个也可能停留在删除目标节点本身,
2025-03-24 15:41:22
226
原创 LeetCode24两两交换链表中的节点
设定一个dummy虚拟头节点 [注意:需要使用malloc分配好内存],两个指针,pre在后,cur在前,先链接后面的节点,避免链表丢失,循环进入下一轮的要注意指针的位置,剩下就是常规操作。
2025-03-24 14:23:52
280
原创 LeetCode203移除链表
NULL),p的初始指向head,head我们在之前已经进行过判断,所以每一次我们只需要判断p的下一个是否等于val即可,在判断最后一个时,也就是p->next的val值符合删除条件,那么我们只需要设置一个临时指针temp指向p->next,然后让p->next指向temp->next,也就是NULL,最后释放temp即可。删除节点需要考虑两种情况,节点在头部和尾部的情况,节点在头部,也就是head->val=val的情况,还需要考虑要是连续出现需要删除的节点要怎么处理。
2025-03-18 11:05:22
280
原创 LeetCode59螺旋矩阵
n分为奇数和偶数,以n=3和n=4为例,n=3只需要循环最外面一圈,中间的格子单独填充;n=4,有两个圈,一个外圈一个内圈,那么每次循环n/2圈;循环时可以采用左闭右开,比如n=3的时候,第一次循环从左到右,起始是(0,0)–>(0,1),退出循环后j++,j=2,刚好作为下一个从上至下循环的起始,j不变i++主要确定循环的轮次,以及每次循环的边界和条件。
2025-03-14 18:43:15
185
原创 LeetCode209长度最小子数组
思路②:滑动窗口,也就是双指针,其实就是对双重循环的优化,把双重循环变成一次循环,降低时间复杂度到O(n),其中i表示起始位置,j表示终止位置,当区间和小于target,j往后滑动,当区间和>=target,i往前滑动,最终找到满足条件的最小区间长度。思路①:暴力解,双重循环嵌套,遍历所有解找到最终答案,时间复杂度O(n²),超时pass。
2025-03-13 10:45:23
204
原创 LeetCode977有序数组的平方
思路②:双指针左右开弓,首先原数组已经是按照非递减顺序排序,那么最大值只有可能出现在最右边或者最左边,那么我们可以创建一个与原数组等长的空数组,双指针,i指向原数组的最左边,j指向最右边,每次循环都判断是左边大还是右边大,将大的值放入空数组中(空数组的指针k从末尾往前跳,最末尾是最大的值)思路①:先平方,后快排,输出(基准元素,左小右大)时间复杂度:O(nlogn)
2025-03-12 22:00:15
221
原创 LeetCode27移除元素
谁走得快谁设循环---->快指针,边界是数组长度(不溢出),步长为1,移动条件以数组[0,1,2,3,3,0,4,2]为例,当快指针所指向的元素与val不符,那我们期望数组不做改变,指针继续往前走,当快指针所指元素等于val值,则希望当前指针后续的所有元素都往前移动。此时此刻low指针会与fast指针同在,因为没遇到val,low指针不语只是一味地跟随,那么当遇到了val,fast指针需要找到下一个不是val的元素把当前val覆盖掉,也就只需要fast循环,当出现!=val的情况,则会覆盖掉。
2025-03-12 20:18:41
341
原创 Anaconda新建虚拟环境
Q:在Anaconda新建虚拟环境总是显示通道不对且报404的错误,一开始以为是开了代理的原因,但是关闭之后还是同样的报错。Q:在创建的过程中发现虚拟环境默认建在c盘路径下,需要将其更改到D盘,节省空间。解决办法就是:删除无效的channel,使用默认channel。解决办法:通过 命令行修改默认路径到d盘目标路径下就可以了。显示只剩默认通道之后再新建虚拟环境。
2025-03-03 18:59:03
209
原创 机器学习期末复习知识点
假设基分类器的错误率相互独立(但这并不可能,因为准确性和多样性本身就存在冲突,根据个体学习器的生成方式,目前有两大类,1 个体学习器存在强依赖关系,必须串行生成的序列化方法,boosting;2 个体学习器不存在强依赖关系,必须并行生成的方法,bagging),在一定条件下,随着集成分类器数目的增加,集成的错误率将指数级下降,最终趋于0。引入拉普拉斯平滑(用于平滑分类数据的技术),用以解决0概率问题,既避免了出现概率为0的情况,又保证了每个值都在0-1的范围内,保证最终和为1的概率性质。
2025-01-07 12:14:05
642
原创 程序设计挑战赛A卷
输出说明:找到的第一个符合条件的数,如果没有符合条件的数,输出F。“00000”输出“0” 输入说明:数字字符串S,输出说明:最小数字。某药店为了回馈顾客,拿出7个品牌的口罩做特价限购活动:A品牌是3个装2元,B品牌是3个装3元,C品牌是4个装2元,D品牌是5个装3元,E品牌是4个装5元,F品牌是1个装2元,G品牌是2个装2元,每个品牌只能买一包。输入说明:合法的数学表达式(其中的数没有负数) 输出说明:输出表达式的计算结果 输入样例:12 * 3-12 * 2 输出样例:-216。
2024-10-28 18:21:34
337
原创 如何清理C盘
3.新建一个.txt文件,将以下代码粘贴到文本中,重命名为.bat格式。最后清空回收站就ok啦,这次清理重新获得了30+g的C盘空间,非常舒爽。右击选择C盘—>属性–>磁盘清理。4.解决电脑占内存大头–微信。5.使用电脑自带的碎片整理。...
2022-07-15 20:49:39
4855
1
原创 3dsMax---椅子
这次要制作一个椅子,最终效果如下:这是我能做到相对逼真的效果,但是椅子的比例方面存在一定的问题,比如椅子腿的厚度和整个椅子相比略显单薄,这也是因为我没有实际测量数据目测画出来的问题。主要使用到的关键功能有:Loft(放样),scale(变形),Cut,Chamfer(倒角),Extrude,turbo smooth(涡轮增压)第一步首先,在左视图用2D图形—line画出凳子脚的一侧作为放样路径(选中—>右键转化为可编辑样条线—>选中点层,调整角度等待—>在点层找到lathe,让拐
2022-05-21 11:30:41
1198
原创 3dsMax---二维图形[描图]
当我们需要绘制这样的二维图该怎么样画图最还原?我们可以选中顶视图,更改顶视图的背景图,这样就可以用线照着描了描出来的图:
2022-04-13 00:21:06
1146
原创 蓝桥杯历届真题B组C语言---双向排序
超时了,只能得60分,暂时没想别的方法:#include<stdio.h>#include<algorithm> using namespace std;bool cmp(int a,int b){ return a>b;//从大到小排序 }int main(){ int n,m; scanf("%d%d",&n,&m);//n序列长度,m操作次数 int a[m][2];//用来记录操作 int b[n]; for(int ..
2022-04-03 12:51:21
973
原创 蓝桥杯历届真题B组C语言---时间显示
AC:#include<stdio.h>using namespace std;int main(){ int d,h,m,s,t; int HH,MM,SS; s=1000;//1s=1000ms m=60*s;//分钟 h=60*m;//小时 d=24*h;//天 long long ms; scanf("%I64d",&ms); if(ms%d==0||(ms-(ms/d)*d)<s)//如果给的毫秒数等于1天||超过不足1s { print.
2022-04-03 12:47:58
953
原创 蓝桥杯算法训练C语言---二元函数
资源限制内存限制:256.0MB C/C++时间限制:1.0s Java时间限制:3.0s Python时间限制:5.0s问题描述 令二元函数f(x,y)=ax+by,a和b为整数,求一个表达式S的值。 只有满足以下要求的表达式才是合法的: 1.任意整数x是一个合法的表达式; 2.如果A和B都是合法的表达式,则f(A,B)也是一个合法的表达式。输入格式 第一行两个数a和b; 第二行一个字符串S表示要求的表达式。输出格式 一行一个数表示表达式S的值。样例输入
2022-03-31 02:11:25
523
原创 蓝桥杯C语言基础题---矩阵乘法
问题描述 给定一个N阶矩阵A,输出A的M次幂(M是非负整数) 例如: A = 1 2 3 4 A的2次幂 7 10 15 22输入格式 第一行是一个正整数N、M(1<=N<=30, 0<=M<=5),表示矩阵A的阶数和要求的幂数 接下来N行,每行N个绝对值不超过10的非负整数,描述矩阵A的值输出格式 输出共N行,每行N个整数,表示A的M次幂所对应的矩阵。相邻的数之间用一个空格隔开#include<stdio.h>#inc
2022-03-24 14:55:28
387
原创 3dsMax---曲奇饼干
① 创建一个Box,段数不能为1②用twist编辑器和bend编辑器,先把长方体自身扭1000°,再弯折360°变成一圈③将将~!成品一些小tips—选择物体后右键的转成可编辑多边形和modify里面的编辑多边形的差别是,前者不能回头更改原始参数,后者可以随时回去更改,所以后者对于初学者的我来说更方便好使;—怎么做空心的圆锥体也就是一个漏斗呢,先选择Cone创建一个圆锥体,然后在modify选择编辑多边形,选择面子物体,选择底面/顶面,然后delete,就可以得到一个空心的圆锥体了;
2022-03-23 16:32:43
810
原创 蓝桥杯C语言基础题---分解质因数
问题描述 求出区间[a,b]中所有整数的质因数分解。输入格式 输入两个整数a,b。输出格式 每行输出一个数的分解,形如k=a1a2a3…(a1<=a2<=a3…,k也是从小到大的)(具体可看样例)样例输入3 10样例输出3=34=225=56=237=78=2229=3310=25提示 先筛出所有素数,然后再分解。数据规模和约定 2<=a<=b<=10000#include<stdio.h>int main()
2022-03-22 13:39:15
349
原创 蓝桥杯C语言基础题---阶乘计算
问题描述 输入一个正整数n,输出n!的值。 其中n!=123*…*n。算法描述 n!可能很大,而计算机能表示的整数范围有限,需要使用高精度计算的方法。使用一个数组A来表示一个大整数a,A[0]表示a的个位,A[1]表示a的十位,依次类推。 将a乘以一个整数k变为将数组A的每一个元素都乘以k,请注意处理相应的进位。 首先将a设为1,然后乘2,乘3,当乘到n时,即得到了n!的值。输入格式 输入包含一个正整数n,n<=1000。输出格式 输出n!的准确值。样例输入10
2022-03-19 16:13:55
315
原创 蓝桥杯C语言基础题---01字串
问题描述对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:0000000001000100001100100请按从小到大的顺序输出这32种01串。输入格式本试题没有输入。输出格式输出32行,按从小到大的顺序每行一个长度为5的01串。样例输出00000000010001000011<以下部分省略>#include<stdio.h>int main(){ int i,j,n; int num[32][5];
2022-03-19 16:11:07
1908
原创 蓝桥杯C语言基础题---字母图形
问题描述利用字母可以组成一些美丽的图形,下面给出了一个例子:ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。输入格式输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。输出格式输出n行,每个m个字符,为你的图形。样例输入5 7样例输出ABCDEFGBABCDEFCBABCDEDCBABCDEDCBABC数据规模与约定1 <= n, m <= 26。
2022-03-19 16:08:41
413
笔记本电脑连接wifi后能登陆QQ不能访问网站,显示dns服务未响应
2021-12-22
TA创建的收藏夹 TA关注的收藏夹
TA关注的人