12 2022 档案
摘要:这跟前面做的蓝桥杯省赛-积木画一个类型,但是递推更简单些 凭什么,同样是第五题,这跟Java那边都不是一个难度的 #include<iostream> #include<vector> using namespace std; const int mod = 99999; vector<int> r
阅读全文
摘要:测试用例1: 5 P1->P3 P2->P4 P4->P1 P3->P5 P1 输出1: P2 3 测试用例2: 8 P3->P5 P5->P2 P4->P3 P2->P6 P1->P7 P6->P8 P8->P1 P6 输出2: P4 5 没做出来,但是事后慢慢做出来了,所以是不熟练 很明显这是一
阅读全文
摘要:年度关键词 要说今年一年的关键词是什么?那肯定就是“==找工作==”了,今年一整年几乎都可以说是围绕着这件事情的 来看看今年的时间线流水账: 流水账 二月:过年就回家待了10天,然后早早跑来了学校 三月:有老师给介绍去了一家校友公司,算是非正式地第一次写简历、第一次面试 项目主管的大概意思说:“写一
阅读全文
摘要:直达链接 感觉是很有意思的题目——如果我会做的话 模拟吗?模拟这个过程,怎么标记一颗雷已经被排除呢?三个元素的存储可能不得不一个二维数组,既然这样,干脆就添加一个标志位:是否已经排除(爆炸),但是每次都遍历的话,复杂度O(N*M)肯定超时 5个过,3个错,12个超时 #include<iostrea
阅读全文
摘要:虚拟化 操作系统的基本抽象——进程。 人们希望同时运行多个程序,但CPU核心往往是屈指可数的。为了使得每个程序都有自己的CPU可用(至少看起来是这样的),系统将CPU虚拟化,让一个进程只运行一个“时间片”,然后切换到其他进程——即时分共享CPU计数 但是很明显进程共享CPU,进程间的切换会有额外的性
阅读全文
摘要:前言 全书的内容围绕虚拟化、并发 、持久性三个主要概念 值得开心的是,本书课程项目除了系统编程项目外,还可以配合着大名鼎鼎的MIT 6.828自行实现xv6操作系统食用 摘录一段最后的话: 叶芝有一句名言:”教育不是注满一桶水,而是点燃一把火“。他说得既对也错——你必须"给桶注入一点水" 但是,叶芝
阅读全文
摘要:看书,专业书,自学,从《深入理解计算机系统》开始,但是这本书目前不在身边,所以只好从《操作系统导论》开始 主要是感觉有点闲了,或者换个说法,能自由支配的时间很多,找工作暂时也不会有什么进展 我承认自己《操作系统》和《计算机组成原理》都没学好: 1.没有形成自己的知识体系,没法自己把整个结构脉络画出来
阅读全文
摘要:直达链接 当时第一眼看到觉得题型挺眼前一亮的,但是怎么做,没想法,也不明白考点在哪里 画布高度固定是2,但是积木可以任意旋转,可以说L型只能和自己组合 怎么用编程解决空间问题? 参考这篇博文 得到的递推方程为:f(i) = 2f(i-1)+f(i-3) 那么需要考虑的就是3以前元素的初始化的问题 代
阅读全文
摘要:直达链接 主要解题思路分为两个部分,1是构造二维前缀和计算矩阵和,降低每次求和的时间复杂度;2是对所有子矩阵的遍历求和过程,因为需要两个坐标,遍历4个行/列值,4层for循环时间复杂度太高,所以最后两层,在同一个数组中就采用了尺取法(滑动窗口),降低了一层时间复杂度 #include<iostrea
阅读全文
摘要:class NumMatrix { private: vector<vector<int>> prefixSum; public: NumMatrix(vector<vector<int>>& matrix) { int n = matrix.size(); int m = matrix[0].si
阅读全文
摘要:前缀和入门模板题 我想着“前缀和”嘛,那就整一个“前缀和”出来,但是好像空间效率特别差 感觉有点空间换时间的意思 class NumArray { private: vector<int> prefixSum; public: NumArray(vector<int>& nums) { int te
阅读全文
摘要:给定一棵二叉树,二叉树的每个结点只有0或2个孩子。 你需要对每个结点赋值一个正整数,使得每个结点的左右子树权值和相等。 你需要返回所有结点的最小权值和对 10^9^+7 取模的结果。 二叉树结点个数不超过10^5^ 输入 {0,0,0} 输出 3 每个节点只有0或2个孩子,那么这棵树就一定是一颗满二
阅读全文
摘要:已知一个二叉树的先序遍历序列和中序遍历序列,但其中一些节点的值可能相同。请你返回所有满足条件的二叉树。二叉树在数组中的顺序是任意的。 输入 [1,1,2],[1,2,1] 输出 [{1,1,#,#,2},{1,#,1,2}] 麻烦的是最后构造出的二叉树不唯一了 看起来并不高明,能过但是我没能写出来的
阅读全文
摘要:基本步骤是这样: 先看先序序列,可以确定根节点,然后在中序遍历中就可以将二叉树划成左子树和右子树两拨 对左右子树递归上述步骤 好像直到怎么遍历二叉树,却对怎么重建二叉树没什么经验 从上往下建还是从下往上建呢?又怎么和两个序列的访问结合起来呢? 递归写法 递归需要更新标明每次构建时,前序和中序的序列左
阅读全文
摘要:我们定义一个矩阵为“好矩阵”,当且仅当该矩阵所有2*2的子矩阵数字和为偶数。 例如: 是好矩阵,两个2*2的子矩阵的和分别是8和12。 请问n行m列,矩阵中每个数均在[1,x][1,x]范围内的好矩阵有多少种?由于答案过大,请对10^9^+7取模。 数据范围:2≤n,m,x≤10^9^ 保证x为偶数
阅读全文
摘要:给定一个数组,请你编写一个函数,返回元素乘积末尾零数量大于等于xx的连续子数组数量。 答案可能太大,请将答案对10^9^+7取模再返回。 数组长度不超过10^5^ 数组元素、xx均为不超过10^9^的正整数。 输入例子: [5,2,3,50,4],2 输出例子: 6 例子说明: 共有以下6个合法连续
阅读全文
摘要:给定一个只包含'0'和'1'两种字符的字符串,每次操作可以选择相邻的两个字符,将它们同时变成'0'或者同时变成'1'。 请问最少多少次操作后,所有的字符都相同? 输入例子: "1001101" 输出例子: 2 很明显是改成全1字符串或者全0字符串,但是究竟改哪个呢?不知道,都改一遍,取操作次数少的那
阅读全文
摘要:给定一个只包含小写字母字符串,每次可以选择两个相同的字符删除,并在字符串结尾新增任意一个小写字母。 请问最少多少次操作后,所有的字母都不相同? 输入例子: "abab" 输出例子: 2 例子说明: 第一次操作将两个'a'变成一个'f',字符串变成"bbf"。 第二次操作将两个'b'变成一个'b',字
阅读全文
摘要:class B{ public B(){ System.out.println("B对象被初始化!"); } } class C extends B{ public C(){ System.out.println("C对象被初始化!"); } } public class Test { public
阅读全文
摘要:能不能把问题转化为找第一个逆序对和最后一个逆序对 int findUnsortedSubarray(vector<int>& nums) { int res = 0; int startIndex=-1, endIndex=-1; for (int i = 1; i < nums.size(); i
阅读全文
摘要:int preSum = 0; void traversal(TreeNode* root) { if (!root) return; traversal(root->right); root->val += preSum; preSum = root->val; traversal(root->l
阅读全文
摘要:第一眼觉得有一种逆向单调栈的既视感 看评论区举了一个很生动形象的例子,自己还是写不出来 vector<vector<int>> reconstructQueue(vector<vector<int>>& people) { vector<vector<int>> ans; sort(people.b
阅读全文
摘要:返回一个数组,ans[i]表示相对于第i天的温度而言,下一个更高的温度出现在几天后 如果没有就是0 一开始接单粗暴地两层for循环遍历,不出意外地超时了 后来又想到可以排序后比对位置,但是数组中可能出现重复的元素,于是又被否决了 官方题解给出的是用“单调栈” 虽然不理解是怎么想到的以及为什么这样是正
阅读全文
摘要:不太清楚为什么会是BFS和DFS 哦,这样,从x出发,每次“+1”、“-1”、“*2”三条路径 广度优先,一层一层往下走,同时一层一层向下构造,得到第一个等于y的,层数就是结果 public static void main(String[] args) throws IOException { S
阅读全文
摘要:按照先序遍历展开 展开后仍然为TreeNode,只是左孩子指针一律置空 关键在于这个先序的访问过程与各个节点指针的修改操作如何统一不冲突 首先就可以排除先序遍历,瞄一眼评论其实是可以先遍历右边,从后往前构造的(我也有点这想法,之前反转链表就有这种从后往前的递归思路,只是不太好想) public: /
阅读全文
摘要:很明显,对于一个排列而言,最后一个位置是动不了的 那么就从倒数第二个位置开始 用递归一点点分析错了几次之后终于自己写出来了(叉腰骄傲) void nextPermutation(vector<int>& nums) { int len = nums.size(); if (len <2) retur
阅读全文
摘要:字母异位词就是:组成单词的字母相同,只是字母位置不同的单词 没什么思路,朴素思路,先全部放到set里,然后不空就取一个出来,回溯构造所有的异位词和set中匹配 public: vector<vector<string>> groupAnagrams(vector<string>& strs) { v
阅读全文
摘要:刚做了前缀树,前缀树可以用来在一维空间上做单词搜索,而这里是二维,本质上是查找一个路径,像是DFS 好吧其实是回溯 class Solution { public: bool exist(vector<vector<char>>& board, string word) { int m = boar
阅读全文
摘要:和LRU一样是实现数据结构的题目 首先,对于树结构,我们要定义树节点: 前缀树是多叉树结构,所以子节点数不固定,这里用一个指向子节点的指针数组来保存子节点 为什么是长度伪26代表26个字母的定长数组? 2. bool值,标记当前节点是否是结束位置,即:根节点到当前节点的路径字符串存在 vector<
阅读全文
摘要:一种树形结构,能够实现对字符串集的高效检索 项目中有所应用,那么: 如果说得明白,写得出来,那就是亮点 反之,就是搬起石头砸自己的脚 有必要好好研究下 实现 首先便是实现一颗前缀树 这里正好有一题力扣-208-实现Trie
阅读全文
摘要:好像相对于全排列唯一的不同就是包含了重复元素,这样的话会与原题有什么区别呢? 明明每次都选择了不同的元素,但是因为有元素相同,所以最终的结果却出现了重复值 然后因为这里是在意序列顺序、定长的,所以不能像之前做组合一样,直接从后面选、或者排序再从后面选什么的 这里用排序+交换?我尝试这么写了,但是很明
阅读全文
摘要:仍旧是有一个目标和,但是另一个条件变了 从给定的数组元素中选择变成了从1-9中固定选择 不限结果数组元素个数变成了限制k个数字 (看起来有点像组合的加强版) 从1-9中选择k个数字组合,使得他们的和=n 嗯…那我不是对组合的结果筛一筛既可以了?! class Solution { public: v
阅读全文
摘要:复习下原题,之前做过的,4个月前了 第一眼看到觉得是完全背包,但是好像不太一样 然后想到了回溯 我很快写了一个标准的回溯出来,但是意识到好像不太对 class Solution { public: vector<vector<int>> res; vector<int> temp; vector<v
阅读全文
摘要:看原始的SQL语句 SELECT * FROM `discuss_post` limit 300000,5 另外可以看到这里并没有走索引 比如这里会查询前300005条数据,然后丢掉前面的300000条数据 对于ID自增 可以利用主键索引 SELECT * FROM `discuss_post` w
阅读全文
摘要:直达链接 这个问题应该就是我想找的答案了,把k=1~n全部输出一遍 ~~然后如果k=n,那就是全排列问题~~不对,还是不一样,这里只考虑数字组合,而没考虑数字顺序也就是排列问题 两种解法,第一种是枚举(选和不选两种情况),而且听说可以写for和不写两种写法(有待验证) 而方法二还是采用类似于子序列的
阅读全文