- 博客(129)
- 收藏
- 关注
原创 692. 前K个高频单词
这和我排序的预期刚好相反,感觉应该是peiorityqueue内部的问题,因为虽然顺序是反的,但我想用堆来解决,而这个顺序方便我后续的堆操作。可能是内部自己优化了吧,我预期结果应该是 i love coding leetcode。本题熟悉下priority_queue,感觉有点怪,自定义排序和greater<>,less<>不太一样。1.本题注意下priority_queue的自定义写法。
2024-04-10 21:20:41
324
原创 331. 验证二叉树的前序序列化
方法二:如果在数字后面是连续两个 ‘#’,那么就将这三个元素替换成一个 ‘#’,这个过程一直持续到数组遍历结束。最后,判断数组长度是否为 1,且数组唯一的元素是否为 ‘#’ 即可。1.遍历一遍字符串,#的次数=数字的次数+1。2.在遍历过程中,#的次数一定<=数字次数。满足以下两点才是有效的。
2024-03-31 20:50:48
127
原创 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
405
原创 2952. 需要添加的硬币的最小数量
贪心思想,不好做,原理是如果你能得到[0,x)的所有数,那+x,你能得到[0,x)与[x,2x)中的所有数,也就是[0,2x)的所有数。现在给你个target,你排序之后直接贪心模拟,缺一个数加一个数,当目前覆盖的范围比target大,答案就出来了。
2024-03-30 19:34:26
132
原创 【无标题】
用PTA经典万能笨方法,dfs建图,bfs算深度。我看到貌似有直接dfs出的,但是感觉不太容易而且太针对化了,别的题目基本用不着,不打算用。
2024-03-29 22:17:46
209
原创 2434. 使用机器人打印字典序最小的字符串
遍历s,push当前字符,如果当前的栈顶元素<=余下字符串中发最小字符,则pop并加到结果中。否则一直push到栈中。2.if条件中的&&部分左右顺序不能颠倒。颠倒报错,之前一直没重视。1.初始化数组,全部为0的简单写法。
2024-03-29 21:06:27
218
原创 2788. 按分隔符拆分字符串
记录下,按分隔符划分字符串,最后有一部分划分不了怎么办,比如 a.b.cc 按.划分,那么输出可能只有a,b,最后cc出不来。可以在循环之后额外加个判断,但是不优雅。方法是在字符串最后加上分隔符。
2024-03-27 22:06:46
218
原创 130. 被围绕的区域
我的想法是如果在边缘上找到O点则把与之相连的O点全部变成A(随便一个不同的符号),遍历完之后,就有X,O,A三种符号,后面再变一次。我认为我这个是bfs做法,但是看官方题解,我这个应该是dfs,想想也确实。
2024-03-26 14:55:35
167
原创 165.比较版本号
如果使用c++来写的话,应该是老老实实的双指针遍历字符串,并且不能使用int存储,虽然题目中保证32位,但是会溢出,经典。本题首先想到的是split方法,但是c++里面没有提供,所以转java写了。注意下对于长度不同的字符串判断方法,这样写比较优雅。
2024-03-26 10:15:21
212
原创 2457. 美丽整数的最小增量
关键在写法上,我是转为字符串去计算每次增加多少,比较麻烦。这种做法还是比较好,记录下。本题我之前也是和题解一样的想法,增加数还让它和变小只有进位操作可以。
2024-03-24 20:14:10
174
原创 L2558(Java). 从数量最多的堆取走礼物
2. 使用题目中Pow((x-1),0.5)进行模拟的话需要考虑数据边界,但是使用Pow(x,0.5)就不用考虑。1.java PriorityQueue的初次使用,offer,poll,peek。
2024-03-05 21:13:38
336
原创 【无标题】
3月pat 70分 ,满分7 8 个吧,最后一题确实离谱。秋季再来。记录下,怕遗忘进度:树 三种递归(中+后 中+前 前+中)BST AVL 红黑最大小堆建树(找区间最值);中后序表达图 dij flyod dfs bfssscanffindpriority_queue然后 自己博客里面的题解。希望秋季pat能ac(主要是40分钟左右就70分了,剩下两个小时全在最后一题,前面题都是一编过,不甘心)最后一题还剩10分钟的时候有思路了,应该是从下到上bfs做,这个找最小路径不难,但是
2022-03-05 17:02:45
119
原创 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
62
原创 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
193
原创 PTA 1130 Infix Expression (25 分) 1162 Postfix Expression (25 分)
这两个题,一开始用一样的做法做,发现不行,最后发现是自己误解了,总结一下。这种表达就两个规则。左右子树均在: 括号+dfs(左)+当前值+dfs(右)+括号(中序就这样,后序当前值就放两dfs后边,这个是一致的);只有一棵子树: 括号+当前值+dfs(那颗子树)+括号(这里不论什么序,都这样,这点误解了);空的子树不用遍历,这样写方便记忆,空的也能遍历原因看下面代码。PTA 1130 Infix Expression (25 分)针对 中序表达首先根据***普遍规则***,一个式子就能表示
2022-03-01 17:17:06
164
原创 1159 Structure of a Binary Tree (30 分)
抽象学会:1.sscanf;2.str.find();3.给两个序列怎么建树(我只会一个序列建树(BST));PAT题目就全部链表建树吧,要的东西用map vector存。0.mainint main(){ cin>>n; for(int i=0;i<n;i++){ int x; cin>>x; post.push_back(x); } for(int i=0;i<n;i++){ int x; cin>>x; i
2022-02-28 17:18:00
395
原创 1040 Longest Symmetric String (25 分)
中心扩散#include<bits/stdc++.h>using namespace std;string ans;int ma=1;int main(){ getline(cin,ans); for(int i=0;i<ans.size();i++){ int l=i-1; int r=i+1; while(l>=0 &&ans[i]==ans[l]) //先找中心点,因为中心点不是i,比如 1223.中心点是22 l--; wh
2022-02-28 11:47:13
61
原创 有关数组截取的技巧。
一个长n的数组,每三个数排序,怎么写?或者每time个数排序,相加。。。。。。。 for(int i=0;i<n/time;i++){ sort(sou+i*time,sou+(i+1)*time); } sort(sou+(n/time)*time,sou+n);
2022-02-28 11:37:39
131
原创 1155 Heap Paths (30 分)
这个竖着的递归还是有点犯难。#include<bits/stdc++.h>using namespace std;int n;int minn=1,maxx=1;vector<int> v;vector<int> path;void dfs(int inde){ if(2*inde>n &&2*inde+1>n){ if(inde<=n){ for(int i=0;i<path.size();i++){
2022-02-27 12:52:22
51
原创 1152 Google Recruitment (20 分)
以后素数判断就i*i<=num 吧,i<num最后个点会超时。可能是溢出的原因。#include<bits/stdc++.h>using namespace std;string n;int k,m;int isp(string ans){ int num=stoi(ans); if(num<2) return 0; for(int i=2;i*i<num;i++){ //i<num 过不了 if(num%i==0) return 0; }
2022-02-27 11:31:21
53
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人