03 2020 档案
摘要:"第一题" "第四题" 数位DP,之前没有接触过,这次学了一下数位DP
阅读全文
摘要:40分钟刷完4题,打破自己的最高纪录 "第一题" "第二题" 遍历除数的时候从1到sqrt(nums[i]) 10000 sqrt(100000) 是不会超时的 "第四题" KMP 的求最长公共前后缀的部分,就是Next的部分
阅读全文
摘要:"题目" 题解: 现场想到了从结果的二进制的每一位考虑,每一位都是由比它低的低位决定的,但是规律没找好。 举个例子,结果的二进制的第3位(从0位开始)上是否为1,是由0 到 2^4 1 之间的数决定,就是 0000 1111 之间所有数两两相加决定的,所以数组要先对2^4取余。 而相加的结果,只有在
阅读全文
摘要:前言 因为想做一下文本自动摘要,文本自动摘要是NLP的重要应用,搜了一下,有一种TextRank的算法,可以做文本自动摘要。其算法思想来源于Google的PageRank,所以先把PageRank给了解一下。 马尔科夫链 我感觉说到PageRank,应该要提起马尔科夫链,因为PageRank在计算的
阅读全文
摘要:"题目" 题解:DFS,同时记住已经DFS的结果,防止重复搜索
阅读全文
摘要:"题目" 题解:区间DP dp[i][j] 表示i j的所有灯泡都熄灭了之后,能获得最大价值
阅读全文
摘要:"第一题" "第三题" "第四题"
阅读全文
摘要:"题目" 题意:给你一个数组,问你还要加上多少个数字,可以让1 n中的人一个数字都可以由数组里的一些元素相加得来 题解:首先考虑这样一个情况,假设在数组的某个位置i上,已经满足了1~k的所有组合都在里头,那么到下一个元素i+1 将会有1~k+nums[I]的所有组合都可以找到,前提是nums[i]+
阅读全文
摘要:"题目" 题意:找到数组里每个元素的右边有多少个元素小于当前元素 题解:单点更新,区间查询。线段树或者树状数组都可以。注意要离散化
阅读全文
摘要:"题目" 题意:删除重复的字符,得到字典序最小的结果字符串 题解:贪心,咱们从结果字符串的左边开始,左边第一个字符在原字符串中的右边一定有n 1个不同的字符,这里n就是结果字符串的长度。 所以我们每次遍历数组,找到右边有n 1个不同字符的字符,并选择最小的那个。 由于最多26个字母,最多遍历26次,
阅读全文
摘要:"题目" 题意:找出所有区间和在某个范围之内的个数 题解:区间问题用线段树来做。首先n^2 可以遍历所有的区间,这样会超时。 我们用线段树,期望可以在遍历整个线段树的过程中把问题解决掉,遍历整个线段树的效率是O(n logn) 如果遍历每个节点上的区间上所花的时间是n logn,也可以接受,总的效率
阅读全文
摘要:这次终于四题全过了。 这次比赛也确实比较简单 "第一题"
阅读全文
摘要:现场只写出来两道。 "第一题" 题意:找到数组任意一个子集的和是偶数 题解:贪心,找到任意一个偶数或者两个奇数就可以了。
阅读全文
摘要:"题目" DP 险过。 dp[i][j] :means it need remove at least dp[i][j] characters to get vaild parenthese from position i to postion j in string. vector str[i][
阅读全文
摘要:"题目" 题意:有n个操作,存入数字,和输出中位数 题解:要确保输入数字的操作和输出中位数的操作,都是低于等于Log(n)的效率。 那么怎么做呢?我们维护两个multiset ,内部是一棵红黑树。一个树A 维护的是较大值,树B维护的是较小值。A,B平分秋色。 中位数显然就是A里的最小值和B里的最大值
阅读全文
摘要:"题目" 题意:给你一个只有0 9组成的字符串,让你在其中插入'+',' ',' ' 使其计算得到的值恰好等于target,输出所有的可能性。 题解:不给数据范围,很显然就会考虑到超时,每个字符后面有四种选择,如果暴搜的话,字符长度超过10几个,就很快超时了。 但是我可以告诉你,这题目的字符串最多只
阅读全文
摘要:"题目" 题意:从最左上角的点开始,按照格子里规定的方向走,必要时可以改变方向,cost+1。问你能够顺利走到最右下角的最小的cost是多少 题解:我们用贪心的思路,从左上角开始,用BFS 计算每个格子到达时所花费的最小cost。这个方法有点像dijskra算法,区别就是不用去找最小的点,因为在BF
阅读全文
摘要:"题目" 题意:在一个固定长度的滑动窗口里,计算窗口里的最大值,并且这个滑动窗口每次移动一个。 题解:首先想到的是set,窗口滑动,就是删除一个数,增加一个数,都是O(logn)的效率 80ms 我们还可以用单调栈,实现在窗口滑动的过程中O(1)的效率得到最小值。 单调栈是一个单调递减的栈,入栈,也
阅读全文
摘要:"题目" 题意:给你一个数组,让你计算每个位置上除这个位置以外的所有元素的乘积。不能用除法,O(n)的效率,O(1)的空间 题解:不能用除法,因此每个位置的答案可以由两部分乘积组成,左边的前缀积和右边的后缀积。 前缀和后缀积,我们可以不用数组储存,而是在遍历的过程中直接计算,并存到结果数组里
阅读全文
摘要:"题目"
阅读全文
摘要:"题目" 题意:在一颗普通的二叉树里找到两个节点的最近公共祖先。 题解:递归,如果当前节点等于p或者q,那返回当前节点了。 然后递归左子树,和右子树。 如果左子树和右子树返回的都不是NULL,说明当前节点是公共祖先。 否则返回两个子树有值的那一个。
阅读全文
摘要:"题目" 题意:判断BST中两个节点的最近的公共父节点 题解:递归的时候判断如果两个节点的值在父节点两边,那个这个父节点就是最近的公共父节点。否则按照二叉搜索树的规则递归下去。
阅读全文
摘要:"题目" 判断一个链表是否是回文的。
阅读全文
摘要:"题目"
阅读全文
摘要:"题目" 判断一个数是否是2的整次幂最快的方式是,是判断x和x&( x)是否相等。 这道题目要注意0,和 INTMIN
阅读全文
摘要:"题目" 题意:判断BST中第k大的节点 题解:中序遍历
阅读全文
摘要:"题目" 题意:在一个数组里找到所有重复次数大于n/3的数字个数。 题解:可以用hash,但是题目要求线性时间和O(1)的空间 我是看题解的才想到。
阅读全文
摘要:"题目" 后缀表达式一把嗦。
阅读全文
摘要:"题目" 翻转二叉树
阅读全文
摘要:"题目"
阅读全文