
笔记
Bloo8m
谢邀
展开
-
2457. 美丽整数的最小增量
关键在写法上,我是转为字符串去计算每次增加多少,比较麻烦。这种做法还是比较好,记录下。本题我之前也是和题解一样的想法,增加数还让它和变小只有进位操作可以。原创 2024-03-24 20:14:10 · 209 阅读 · 0 评论 -
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 · 91 阅读 · 0 评论 -
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 · 77 阅读 · 0 评论 -
LeetCode 310. 最小高度树
朴素bfs超时的解决方法。,当节点个数在5000及以上时,普通bfs超时。此时采用类似拓扑排序的方法,每次将度为1的节点抹掉。最后一次才被抹掉的就是可能的节点。class Solution {public: vector<int> findMinHeightTrees(int n, vector<vector<int>>& edges) { if (n == 1) return {0}; vector<int&g原创 2022-02-25 21:05:51 · 490 阅读 · 0 评论 -
1139 First Contact (30 分)
无语类型,要说有什么亮点,可能就二维存变一维存吧。题意:A追B,在A的朋友里找一个C,在B的朋友里找一个D,如果C,D是朋友就算一个答案要输出。(朋友只能为同性别。男生朋友一定为男性)注意点:注意如果int存id的话,1234 -0000,这一对会被误认为是朋友,所以要用string存,a.size()==b.size()才是朋友。#include<bits/stdc++.h>using namespace std;int n,m,qury;vector<int> fr原创 2022-02-25 16:32:13 · 506 阅读 · 0 评论 -
1135 Is It A Red-Black Tree (30 分)
没有AVL那么复杂,给一个红黑先序建个树。用链表建,通用。#include<bits/stdc++.h>using namespace std;int n,m,f;struct node{ int val; node *l,*r;};node* inser(node *root,int val){ if(root==NULL){ root=new node(); root->val=val; root->l=root->r=NULL; } el原创 2022-02-24 14:44:03 · 216 阅读 · 0 评论 -
中+后(先)序 求 层序?中+后(先)序 求 先(后)序 ? 先序+后序 判断中序?
1.已知中+先(后) 求 层序;PTA 1020,1127;我一开始用柳神的map+index做,但是这样不能从根本解决问题,因为这样的层序是通过map自动排序的结果,并不能真正的知道每一层的节点情况,如果用这种方法那1127就做不出来。所以我换了一种。采用二维数组,深度作为index,存每个节点的值。这样就可以随心所欲的打印各种层序的变种问题了。注意二维数组里面的那一维存的节点 一定 是从左之右的。PTA1020#include<bits/stdc++.h>using namesp原创 2022-02-23 12:36:25 · 404 阅读 · 0 评论 -
1126 Eulerian Path (25 分)
题意关键这题节点的度就是最终的答案,不是说,求出度了还要看下是不是欧拉路,欧拉回路什么的,我真是服了我的阅读能力。(蓝底这句话就是说,只有两个奇度的节点,就是semi-E,我还以为是还要看一下是不是两点作为起点终点边呢)#include<bits/stdc++.h>using namespace std;int n,m;vector<int> v(505),f(505);int find(int x){ return x==f[x]?x:find(f[x]);}.原创 2022-02-22 21:04:04 · 65 阅读 · 0 评论 -
1103 Integer Factorization (30 分)
dfs+剪枝先把i的p次方存入,再根据这个来判断。这个思想可以看看#include<bits/stdc++.h>using namespace std;int n,m,k;int ma=-1;vector<int> arr;vector<int> ans,now;void init(){ int i=2; int temp=1; while(temp<=n){ arr.push_back(temp); temp=(int) pow(i原创 2022-02-22 19:02:10 · 74 阅读 · 0 评论 -
1119 Pre- and Post-order Traversals (30 分)
先+后序给出的序列,在什么情况下组成的二叉树序列不唯一?答:某一子树长度为0时。用先序举例因为正常划分 根|左|右当某一子树长度为0,那么 多种划分方式 ()|左|右,根|()|右,根|左|();两点和(先+中转后 后+中转先)不同:1.当 发现子树长0,可判定不唯一,f=0;2. 当l==r时,说明只有一点,push之后就return 。#include<bits/stdc++.h>using namespace std;int n=0,f=1;vector<原创 2022-02-22 16:29:04 · 348 阅读 · 0 评论 -
1115 Counting Nodes in a BST (30 分)
n=1000,用链表建树。注意建树的过程,不太会。建树完树之后,dfs统计每个深度的节点个数。#include<bits/stdc++.h>using namespace std;int n,ma=0;vector<int> v(1005);struct node{ int val; struct node *l,*r; };node* create(node *root,int val){ if(root==NULL){ root=new node()原创 2022-02-21 20:34:07 · 143 阅读 · 0 评论 -
pta 1014 Waiting in Line (30 分)
1.本题当队伍不满的时候是按序号进,不是找最快的队伍进。2.≥17:00才开始服务的人Sorry3.队列的pop是第一个数即front。数据结构:struct 方便输出queue q;二维的int队列,模拟。ac:#include<bits/stdc++.h>using namespace std;int n,m,k,q1;struct node{ int end; int cost;}v[1005];int main(){ cin>>n>>原创 2021-12-14 16:12:50 · 1292 阅读 · 0 评论 -
1012 The Best Rank (25 分) 2号测试点
二号测试点: 85 85 80 排名 应为 1 1 3,不为 1 1 2;AC:#include<bits/stdc++.h>using namespace std;struct node{int id=-1;int s[4];int rank[4];};int ff=-1;bool cmp(node a,node b){ return a.s[ff]>b.s[ff];}unordered_map<int,int> mm;int main(){ i原创 2021-12-12 18:24:51 · 576 阅读 · 0 评论 -
PTA1010 Radix (25 分) 进制转化(c++)
1.int->long long int2.不能从2遍历到num1+1;一定要找出最小的进制r1,最大的进制r2,进行二分查找。3.进制转化,xxxx y进制转成10进制数,如果sum+中出现sum,则说明转化失败,即转化函数要考虑异常处理。4.二分查找,r=mid-1的条件有cur>tar也有 cur<0(溢出)5.二分模板:while(有等号) r=mid-1,;=mid+1;ac#include<bits/stdc++.h>using namespace s原创 2021-12-11 19:00:46 · 528 阅读 · 0 评论 -
PTA 1004
本题注意下,01读入可以用int直接存,用string转int不行,就这一点原创 2021-12-09 17:28:37 · 947 阅读 · 0 评论 -
连通图给定起点和终点,求路径的题目(求最短路径,多少条路径,最长路径)
受PTA1003引起思考PTA1003对于给定起始点和终点的图,不用迪杰斯特拉算法,用递归怎么做?(这题之前知道思路,但是就是标识已访问的这行代码不知道怎么放)对于小图,可用 二维数组初始化0存放图,但是大的图用二维数组存放,不初始化。此时第二层数组存放的不是两个点a,b而是b,weight(权重或者其他的,因为a完全可以用索引表示)ac代码:#include<bits/stdc++.h> using namespace std;int g[505][505];unordered_原创 2021-12-08 22:08:24 · 1356 阅读 · 0 评论 -
CCFCSP 202109-2
针对arr的unique int n=unique(arr,arr+arr.size())-arr;这里的n即去重的尾地址。 i<n从全部淹没到全部露出,出现山峰,说明有新岛++,出现山谷,新岛–,记住,这样写最后一定是从100000向1遍历,如果从1到10000遍历,那么++与–的位置要调换。或者用绝对值。ac:#include<iostream>#include<cstring>#include<vector>#include<algorit原创 2021-11-27 18:54:13 · 1747 阅读 · 0 评论 -
CCFCSP 201412-3 集合竞价
本题一开始30分,然后80分,最后100分,能遇到的坑全部遇到了。30分:因为我是将行push进数组的,而cancle这一行,我就是进行了cancle处理,没有将cancle这行push进去,导致后面的cancle错位80分:用的是long类型不是long long#include<iostream>#include<string>#include<vector>using namespace std;struct node{ int t; double原创 2021-11-16 15:47:46 · 353 阅读 · 0 评论 -
ccfcsp201403-3 命令行选项
细节地方:1.使用getline之前用cin.get()防止读入换行符。2.'a’变"-a", c="-"+string b(1,‘a’);3.c++的find,如果int p=str.find(char),没有找到p=-1,找到了p=下标.一定要把这个结果传给int类型变量,要不然不是-1;...原创 2021-11-15 17:54:25 · 322 阅读 · 0 评论 -
PTA.1098 Insertion or Heap Sort (25 分)(n,递归写法,标准堆排序)
本题一开始最后一个测试点没通过#include<iostream>#include<algorithm>using namespace std;const int maxn=1000100;int n,sie,in[maxn],tar[maxn];void heapfy(int sie,int num){ int t=num; if(num*2<=sie && tar[2*num]>tar[t]) t=2*num; if(原创 2021-09-18 16:49:41 · 86 阅读 · 0 评论 -
L470. 用 Rand7() 实现 Rand10()
Randx()生成1x的等概率随机数,则(randx()-1)*y+randy()生成1x*y等概率随机数*eg:(rand7()-1)7+randy()生成149的均匀分布,(9-1)*7+rand7()生成163的// The rand7() API is already defined for you.// int rand7();// @return a random integer in the range 1 to 7class Solution {public: int原创 2021-09-05 08:22:00 · 91 阅读 · 0 评论 -
力扣15. 三数之和 针对三个数的双指针
针对三个数的双指针做法就是一层for循环(i=0;i<length),里面套一层while(l<r);其中 三个数 nums[i],nums[l],nums[r];i由for循环控制;l由i+1控制;r=length-1;针对本题需要先进行排序;解法:特殊情况:nums==null||nums.length<3 直接return ans;排序循环里面1.因为排过序,所以遇到nums[i]>0直接return ans;因为第一个数都>0,看都不用看2.其次如原创 2021-05-10 16:13:33 · 85 阅读 · 0 评论 -
PTA1007 1007 Maximum Subsequence Sum (25 分) 真的恶心人
代码改来改去,从2分改到25分,结果一看,啥都没改,不知道怎么回事。启发:1.当Scanner读取超时时,考虑用BufferedReader +InputStreamReader或者c++;2.最长最大序列这类动态规划的问题,一般是 当前和 触底 的时候进行重置操作,超过最大值 进行更新操作3.细节地方,左边的i+1可能会越界需要中间值进行过渡(即left接受的是迟一步的更新,此时因为已经出循环,故可以避免越界问题)package pta;import java.io.BufferedReade原创 2021-05-08 16:43:37 · 147 阅读 · 0 评论 -
java中对字符串的重复操作
原创 2021-05-06 21:29:48 · 269 阅读 · 0 评论