文章分类 -  五月集训

摘要:五月集训结语 终于把考试周落下的题补上了,像线段树这种,使劲看,边抄边看,懂一些了,但是没有完全懂,希望六月再见能好一些。 之前找了很多算法资料,但是一个人真的很难坚持,会遇到刷题顺序跳脱(一会儿看看这个,一会儿看看那个,最后啥也不会,就不看了),题难不会做就不知所措等等,各种原因导致刷题一直不系统 阅读全文
posted @ 2022-06-04 19:59 番茄元 阅读(19) 评论(0) 推荐(0) 编辑
摘要:状态压缩 1. 1994. 好子集的数目 嘤嘤嘤,好难 思路: 好不容易才看懂,具体思路参考了英雄哥的思路,如下 代码实现的细节在题目中体现 class Solution { #define ll long long #define mod 1000000007 int prime[10] = {2 阅读全文
posted @ 2022-06-04 17:34 番茄元 阅读(17) 评论(0) 推荐(0) 编辑
摘要:拓扑排序 1. 207. 课程表 思路: 拓扑排序模板题,思路在代码注释中。 class Solution { public: bool canFinish(int numCourses, vector<vector<int>>& prerequisites) { int prerequisites 阅读全文
posted @ 2022-06-04 15:27 番茄元 阅读(22) 评论(0) 推荐(0) 编辑
摘要:分而治之 1. 21. 合并两个有序链表 思路: 两个链表分别比较,递归合并两链表 /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val 阅读全文
posted @ 2022-06-04 13:23 番茄元 阅读(18) 评论(0) 推荐(0) 编辑
摘要:动态规划 1. 70. 爬楼梯 思路: 到达第n层的方法可以是,从第n-1层走一步,或者从n-2层走两步,所以状态方程为f[n] = f[n - 1] + f[n - 2]; class Solution { public: int climbStairs(int n) { int f[50], i 阅读全文
posted @ 2022-06-03 14:32 番茄元 阅读(19) 评论(0) 推荐(0) 编辑
摘要:图 1. 1791. 找出星型图的中心节点 思路: 每条边都会连接中心结点,所以一条边的起点或者终点是中心结点。 class Solution { public: int findCenter(vector<vector<int>>& edges) { int a = edges[0][0]; if 阅读全文
posted @ 2022-06-03 12:04 番茄元 阅读(18) 评论(0) 推荐(0) 编辑
摘要:并查集 1. 990. 等式方程的可满足性 思路: 如果 a==b则将a,b放入同一个集合(union)。最后判断,如果出现a!=b,而a,b在同一个集合里的情况,矛盾,返回false;否则,返回true。 class Solution { #define maxn 30 int F[maxn]; 阅读全文
posted @ 2022-06-02 14:51 番茄元 阅读(18) 评论(0) 推荐(0) 编辑
摘要:树状数组 知识点 每个结点管辖的区域范围是 [x - lowbit(x) + 1, x] 1. 327. 区间和的个数 这题说的晦涩难懂,先解释一下题意: 给定一个整数数组 nums和范围区间[lower,upper],已知数组nums内的元素个数为size,以元素索引(下标)为起点,元素个数逐次递 阅读全文
posted @ 2022-06-01 17:48 番茄元 阅读(13) 评论(0) 推荐(0) 编辑
摘要:线段树 破防了,线段树好难,啊不对,是线段树和扫描线放一起就有些不理解了,边抄边理解,理解了个大概,以后再深入一下 线段树模板 先来个线段树模板 // 建树 void build(int s, int t, int p) { if (s == t) { d[p] = a[s]; return ; } 阅读全文
posted @ 2022-06-01 15:52 番茄元 阅读(24) 评论(0) 推荐(0) 编辑
摘要:字典树(Trie) 1. 211. 添加与搜索单词 - 数据结构设计 思路: 字典树模板 为什么要使用递归查询呢?那是因为存在特殊符号.,该符号可以代表字典树上当前结点的任意子节点,所以要从多个分支往下搜,递归很容易实现, 但是迭代就很难实现了。 class WordDictionary { str 阅读全文
posted @ 2022-05-31 21:11 番茄元 阅读(30) 评论(0) 推荐(0) 编辑
摘要:上次考试炸了,这周三门考试要好好复习,今天做了一题,先复习了,加油! 有序集合 1. 1418. 点菜展示表 思路: 这其实就是个模拟题,但是我没掌握map的用法,看着题解利用unoredered_set和unordered_map边抄边理解,算是写完了。 class Solution { publ 阅读全文
posted @ 2022-05-22 06:39 番茄元 阅读(21) 评论(0) 推荐(0) 编辑
摘要:堆 1. 2099. 找到和最大的长度为 K 的子序列 思路: 将每个元素的值和下标打包,利用堆进行排序,取出其中最大的K个元素,再按照下标恢复原来的顺序即可。详细实现思路见代码注释。 class Solution { class Pair { public: int val; int idx; P 阅读全文
posted @ 2022-05-21 13:10 番茄元 阅读(24) 评论(0) 推荐(0) 编辑
摘要:二叉搜索树 1. 700. 二叉搜索树中的搜索 思路: 类似于二分查找 (1)val < root->val,去左子树查找 (1)val > root->val,去右子树查找 (1)val == root->val,返回该结点,即为目标子树的根节点 class Solution { public: 阅读全文
posted @ 2022-05-20 06:35 番茄元 阅读(26) 评论(0) 推荐(0) 编辑
摘要:二叉树 1. 144. 二叉树的前序遍历 思路1: 递归实现 先序遍历,当前节点-->左子节点-->右子节点 /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * Tre 阅读全文
posted @ 2022-05-19 07:54 番茄元 阅读(18) 评论(0) 推荐(0) 编辑
摘要:树 1. 2236. 判断根结点是否等于子结点之和 思路: 超级大水题 bool checkTree(TreeNode* root) { if (root->left->val + root->right->val == root->val) return true; return false; } 阅读全文
posted @ 2022-05-18 07:30 番茄元 阅读(25) 评论(0) 推荐(0) 编辑
摘要:广度优先搜索(Breadth-First Search, BFS) 1. LCP 44. 开幕式焰火 思路: BFS整棵二叉树,记录每种颜色出现的次数。 /** * Definition for a binary tree node. * struct TreeNode { * int val; * 阅读全文
posted @ 2022-05-17 08:04 番茄元 阅读(28) 评论(0) 推荐(0) 编辑
摘要:队列 1. 933. 最近的请求次数 思路: 有新的ping请求,则入队,将t - 3000之前的请求出队。查询[t - 3000, t]的请求次数。 class RecentCounter { int front, rear; int data[10010]; public: RecentCoun 阅读全文
posted @ 2022-05-16 07:16 番茄元 阅读(24) 评论(0) 推荐(0) 编辑
摘要:深度优先搜索(Depth First Search, DFS) 1. 565. 数组嵌套 思路: 一开始以每个点为起点暴力深搜,结果超时了。发现染色法是真不错,每次深搜染成不一样的颜色,这样染过色的点就不用再当成起点了,因为它必然是之前答案的后缀,集合元素不是最大的。而且利用染色法深搜只需要将has 阅读全文
posted @ 2022-05-15 10:47 番茄元 阅读(31) 评论(0) 推荐(0) 编辑
摘要:双向链表 1. 1472. 设计浏览器历史记录 思路: 设置一个双向链表,按题意模拟即可。注意访问一个新网页时要把之前的next网页结点删除。 struct NODE { string val; NODE *pre; NODE *next; }; class BrowserHistory { NOD 阅读全文
posted @ 2022-05-14 15:07 番茄元 阅读(33) 评论(0) 推荐(0) 编辑
摘要:栈 1. 1441. 用栈操作构建数组 思路: 利用vector模拟栈操作。每个i都入栈,不是target的出栈 class Solution { public: vector<string> buildArray(vector<int>& target, int n) { vector<strin 阅读全文
posted @ 2022-05-14 12:32 番茄元 阅读(23) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示