随笔分类 - 每周算法练习
摘要:这次终于四题全过了。 这次比赛也确实比较简单 "第一题"
阅读全文
摘要:"题目"
阅读全文
摘要:"题目" 题解:动态规划
阅读全文
摘要:"题目" 题解:当然可以O(n k)的效率,但是这样很low,我们可以用O(n log(k))的效率去解决。 首先按照暴力的思想,从一个元素x开始,遍历它后面的k 1位元素,判断是否有符合的条件。如果将这个k个数排序的话,就不用遍历啦,只要找到x的位置,然后判断x的前后是否满足条件皆可以了。 但是如
阅读全文
摘要:"题目"
阅读全文
摘要:"Number of Days Between Two Dates " 计算两个日期的相差天数 "Validate Binary Tree Nodes " 给你一些点和边,判断是否是一颗二叉树。只需要判断所有点的入度& leftChild, vector& rightChild) { for(int
阅读全文
摘要:"题目" 题意:举例:给你一个数组[9,3,5],问你这个数组是否可以由数组[1,1,1]经过某种变换得到。 变换的步骤就是每次用数组的和,去替代数组中的某一个元素,直到达到目标数组。 题解:我们从后往前递推,比如[9,3,5],那么它的上一个状态一定是[1,3,5] ,继续[1,3,1] [1,1
阅读全文
摘要:"题目" 题意:有n个节目,每个节目有一个持续的天数,你一天只能看一个节目,问你这么多天最多能看几个节目 题解:贪心,我们把那种截止日期最近的节目,都看了。把节目按照截止日期从小到大排序。接下来一个一个节目看,可以用数组标记的方法,for循环判断在当前节目的区间内,还有有没有天数是空闲的。 最后一步
阅读全文
摘要:"题目" 题意:求一个数组的后k个数字的乘积,这个数组是不断动态增加的。 题解:由于数字可能为0,所以我们只要维护最后一个0 的位置pos 之后的所有数字的前缀乘积就可以了。如果kpos那么答案就是s[len]/s[len k]
阅读全文
摘要:"题目"
阅读全文
摘要:"题目" 题意:就是有一些矩形,然后让你输出一些点,这些点连成的线是这些矩形的外围。叫做城市天际线。具体的看题目就好了。 题解:首先,设立一个区间,用数组表示。每遇到一个矩形,我们就把这个矩形的底部的宽所占的区间的值全部都设成这个矩形的高。在覆盖区间的时候,如果发现这个区间已经被覆盖过,如果当前值比
阅读全文
摘要:"题目" 题意:有n门课程,就是n个顶点,有m个对应关系:x,y,表示只有先上了y,才能上x。也就是x到y有一条有向边。问你求是否存在环。 题解:对于有向图求是否存在环,可以用拓扑排序,拓扑排序就是寻找入度为0的顶点,然后删去,并减少相邻点的入度,再寻找入度为0的点,直到所有顶点都删去,如果存在换,
阅读全文
摘要:"题目" 翻转列表
阅读全文
摘要:"题目"
阅读全文
摘要:"题目" 题意:求[1 n)中的质数。 题解:判断一个数是否是素数,很简单,
阅读全文
摘要:"题目"
阅读全文
摘要:"题目" 题意:在一个二维矩阵里,找到全是1相连的块,有几个。 题解:使用并查集,将相连的1设为同一个祖先,最后在统计一下就可以了。
阅读全文
摘要:"题目" 题意:假如你在一棵二叉树的右边,往左看,能看到哪些元素。 题解:广搜,每一层的最右边元素即可。
阅读全文
摘要:"题目" 题意:将一个数组旋转k位, 用O(1)空间的算法去解决。找到nums[x]旋转之后对应的位置,交换二者,然后得到的数字再找下去。知道找到一开始的数字,形成一个闭环了,然后x++,直到交换次数==nums.size
阅读全文