- 博客(134)
- 收藏
- 关注
原创 1034. 边界着色(JAVA)
2.和传统的找联通不一样,本题要求对边界上色,即BFS或DFS均需要保留上一次的坐标,因为判断(x,y)是不是边界需要根据(x±1,y±1)判断,倘若(x±1,y±1)判定"成功",则对(x,y)着色,这就是本题的最大不同。3.本题我的BFS貌似存在重复上色现象,即有的边界可能被上色多次,故不可以使用取反值进行特殊标记,找到了直接在grid里修改即可。1.DFS(感觉比BFS容易)1.采用BFS或DFS即可。
2024-09-08 21:40:00
380
原创 3174. 清除数字(Java)
2. StringBuffer和StringBuilder方法类似,Buffer支持同步访问,线程安全,速度比较慢,所以Buffer用的少,Builder用的多。1.Java 的 StringBuilder 初用。
2024-09-05 20:40:23
262
原创 3160. 所有球里面不同颜色的数目(java)
这个字典中的值想修改得变成int类型。1.merge是直接运行修改的,比如 if(colors.merge(curc,-1,Integer::sum)==0) ,不论结果真假,这个curc对应的值。2.字典的size和remove方法;
2024-08-30 21:08:11
301
原创 3083. 字符串及其反转中是否存在同一子字符串(Java)
1.字符串可以直接使用contains方法判断是否包含字串,不需要使用字典。2.字符串反转的普通方法。
2024-08-28 18:44:11
237
2
原创 692. 前K个高频单词
这和我排序的预期刚好相反,感觉应该是peiorityqueue内部的问题,因为虽然顺序是反的,但我想用堆来解决,而这个顺序方便我后续的堆操作。可能是内部自己优化了吧,我预期结果应该是 i love coding leetcode。本题熟悉下priority_queue,感觉有点怪,自定义排序和greater<>,less<>不太一样。1.本题注意下priority_queue的自定义写法。
2024-04-10 21:20:41
360
原创 331. 验证二叉树的前序序列化
方法二:如果在数字后面是连续两个 ‘#’,那么就将这三个元素替换成一个 ‘#’,这个过程一直持续到数组遍历结束。最后,判断数组长度是否为 1,且数组唯一的元素是否为 ‘#’ 即可。1.遍历一遍字符串,#的次数=数字的次数+1。2.在遍历过程中,#的次数一定<=数字次数。满足以下两点才是有效的。
2024-03-31 20:50:48
146
原创 2536. 子矩阵元素加 1
思路参考:https://leetcode.cn/problems/increment-submatrices-by-one/solutions/2684930/er-wei-chai-fen-qiu-qian-zhui-he-shi-hen-i8g5/本题暴力可以做,猜到用差分,但是不熟,不知道二维差分怎么用,碰到用差分的题目太少了。多耗费10mb的空间,速度提高了10倍。
2024-03-30 20:29:02
453
原创 2952. 需要添加的硬币的最小数量
贪心思想,不好做,原理是如果你能得到[0,x)的所有数,那+x,你能得到[0,x)与[x,2x)中的所有数,也就是[0,2x)的所有数。现在给你个target,你排序之后直接贪心模拟,缺一个数加一个数,当目前覆盖的范围比target大,答案就出来了。
2024-03-30 19:34:26
158
原创 【无标题】
用PTA经典万能笨方法,dfs建图,bfs算深度。我看到貌似有直接dfs出的,但是感觉不太容易而且太针对化了,别的题目基本用不着,不打算用。
2024-03-29 22:17:46
235
原创 2434. 使用机器人打印字典序最小的字符串
遍历s,push当前字符,如果当前的栈顶元素<=余下字符串中发最小字符,则pop并加到结果中。否则一直push到栈中。2.if条件中的&&部分左右顺序不能颠倒。颠倒报错,之前一直没重视。1.初始化数组,全部为0的简单写法。
2024-03-29 21:06:27
259
原创 2788. 按分隔符拆分字符串
记录下,按分隔符划分字符串,最后有一部分划分不了怎么办,比如 a.b.cc 按.划分,那么输出可能只有a,b,最后cc出不来。可以在循环之后额外加个判断,但是不优雅。方法是在字符串最后加上分隔符。
2024-03-27 22:06:46
246
原创 130. 被围绕的区域
我的想法是如果在边缘上找到O点则把与之相连的O点全部变成A(随便一个不同的符号),遍历完之后,就有X,O,A三种符号,后面再变一次。我认为我这个是bfs做法,但是看官方题解,我这个应该是dfs,想想也确实。
2024-03-26 14:55:35
197
原创 165.比较版本号
如果使用c++来写的话,应该是老老实实的双指针遍历字符串,并且不能使用int存储,虽然题目中保证32位,但是会溢出,经典。本题首先想到的是split方法,但是c++里面没有提供,所以转java写了。注意下对于长度不同的字符串判断方法,这样写比较优雅。
2024-03-26 10:15:21
239
原创 2457. 美丽整数的最小增量
关键在写法上,我是转为字符串去计算每次增加多少,比较麻烦。这种做法还是比较好,记录下。本题我之前也是和题解一样的想法,增加数还让它和变小只有进位操作可以。
2024-03-24 20:14:10
202
原创 L2558(Java). 从数量最多的堆取走礼物
2. 使用题目中Pow((x-1),0.5)进行模拟的话需要考虑数据边界,但是使用Pow(x,0.5)就不用考虑。1.java PriorityQueue的初次使用,offer,poll,peek。
2024-03-05 21:13:38
367
原创 【无标题】
3月pat 70分 ,满分7 8 个吧,最后一题确实离谱。秋季再来。记录下,怕遗忘进度:树 三种递归(中+后 中+前 前+中)BST AVL 红黑最大小堆建树(找区间最值);中后序表达图 dij flyod dfs bfssscanffindpriority_queue然后 自己博客里面的题解。希望秋季pat能ac(主要是40分钟左右就70分了,剩下两个小时全在最后一题,前面题都是一编过,不甘心)最后一题还剩10分钟的时候有思路了,应该是从下到上bfs做,这个找最小路径不难,但是
2022-03-05 17:02:45
143
原创 1105 Spiral Matrix (25 分)
记录下螺旋逻辑#include<bits/stdc++.h>using namespace std;int n;int a=0,b=0;vector<int> v;bool cmp(int a,int b){ return a>b;}void ma(int m){ for(int i=m;i>=1;i--){ if(m%i==0){ if(i>=m/i){ a=i; b=m/i; } else retu
2022-03-01 20:11:27
88
原创 1160 Forever (20 分)
正解应该是dfs剪纸。但是,第一题这样做说实话接受不了。这题可以通过暴力来做,不过有技巧。思路:在给定的K位数中找到符合的存入数组,排序后输出。怎么找?若k=10,100000000~9999999999…找未免不现实。压缩一下。10位数里面,各位数和==m一定有个最大值和最小值,不在这个范围之内的数不用考虑。int ismin(int a,int b){ //找最小值 int ans=0,cnt=0; while(b>9){ ans=ans*10+9; cnt++; b-
2022-03-01 17:25:50
253
原创 PTA 1130 Infix Expression (25 分) 1162 Postfix Expression (25 分)
这两个题,一开始用一样的做法做,发现不行,最后发现是自己误解了,总结一下。这种表达就两个规则。左右子树均在: 括号+dfs(左)+当前值+dfs(右)+括号(中序就这样,后序当前值就放两dfs后边,这个是一致的);只有一棵子树: 括号+当前值+dfs(那颗子树)+括号(这里不论什么序,都这样,这点误解了);空的子树不用遍历,这样写方便记忆,空的也能遍历原因看下面代码。PTA 1130 Infix Expression (25 分)针对 中序表达首先根据***普遍规则***,一个式子就能表示
2022-03-01 17:17:06
206
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人