02 2020 档案
摘要:"题目" 查找规律: 只有一位的数字n,只有1个数字包含1,就是1,设a[1]=1; 两位数字的话,有10 11 12...19 21 31 41 ...91 ,那么a[2]=a[1] 9+10^(2 1) 同理a[i]=a[i 1] 9+10^(i 1) 举例,比如113 113 首先我们把小于3
阅读全文
摘要:"题目" 题解:后缀表达式一把嗦
阅读全文
摘要:"题目" 计算矩形覆盖面积
阅读全文
摘要:"题目" 题意:计算一个完全二叉树的节点个数 题解:DFS 或者BFS都太low,我们可以用O(log(n)^2)的效率解决,n为节点个数,log(n)就是树的高度。 我们首先获得数的高度,然后,二分去寻找,最后一层的最右边的一个节点,就能计算树的节点个数了。 二分是Log(n),DFS也是Log(
阅读全文
摘要:"题目" 题解:动态规划
阅读全文
摘要:"题目" 题解:当然可以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
阅读全文
摘要:"题目"
阅读全文
摘要:"题目" 题意:从1 9中选出k个数之和等于n,这个k个数不能有相同的,输出所有可能的k个数字的集合,结果也不能重复 题解:暴搜,从n开始,每次减去1 9中的某个数字,然后继续递归。要注意剪枝,比如1 9中的数字大于n/k的是不可能存在答案中的,如果n 的值小于sum[k]也是不会有答案的。sum[
阅读全文
摘要:"题目" 题意:找到一个数组里第K大的数字。 题解:我们当然可以排序好了,之后,选择第K大的数字。但是这样做一点技术含量也没有。 排序算法选用快排。寻找第K大的数字,不必把数组完全排完序之后,再找第K大。快排中是选取一个数字,把大于它的放在右边,小于它的放在左边,在递归的时候,我们判断k 和右边数字
阅读全文
摘要:"题目" 题意:举例:给你一个数组[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]
阅读全文
摘要:"题目"
阅读全文
摘要:"题目" 题意:就是有一些矩形,然后让你输出一些点,这些点连成的线是这些矩形的外围。叫做城市天际线。具体的看题目就好了。 题解:首先,设立一个区间,用数组表示。每遇到一个矩形,我们就把这个矩形的底部的宽所占的区间的值全部都设成这个矩形的高。在覆盖区间的时候,如果发现这个区间已经被覆盖过,如果当前值比
阅读全文
摘要:"题目" 和这道题目 https://www.cnblogs.com/dacc123/p/12295924.html 一样,改进了一点,就是首尾也是相邻的。 那么我们在DP的时候,还要考虑第一个房子有没有被抢劫的情况。所以状态数组变成了DP[i][j][k],j表示i个房子是否抢劫,k表示第1个房子
阅读全文
摘要:"题目" 字典树。
阅读全文
摘要:"题目" 和这道题目一样:https://www.cnblogs.com/dacc123/p/12306344.html 拓扑排序,把排序结果打印出来了。
阅读全文
摘要:"题目" 题意:求一个数组里最短的连续子序列的和大于等于s的长度 题解:可以用动态规划,我就是用动态规划过的,但是确实不是最简单的解法,看了题解最简单的是双指针, 双指针 DP 二者效率都是差不多的。
阅读全文
摘要:"题目" 题意:实现一个前缀树
阅读全文
摘要:"题目" 题意:有n门课程,就是n个顶点,有m个对应关系:x,y,表示只有先上了y,才能上x。也就是x到y有一条有向边。问你求是否存在环。 题解:对于有向图求是否存在环,可以用拓扑排序,拓扑排序就是寻找入度为0的顶点,然后删去,并减少相邻点的入度,再寻找入度为0的点,直到所有顶点都删去,如果存在换,
阅读全文
摘要:"题目" 翻转列表
阅读全文
摘要:"题目"
阅读全文
摘要:"题目" 题意:求[1 n)中的质数。 题解:判断一个数是否是素数,很简单,
阅读全文
摘要:"题目"
阅读全文
摘要:"题目" 题意:给你两个数n,m 0=0;i ) { if(x=a[i]) { return 0; } if(x =a[i]&&y =a[i]) { return a[i]; } } return 0; } }; ```
阅读全文
摘要:"题目" 题意:在一个二维矩阵里,找到全是1相连的块,有几个。 题解:使用并查集,将相连的1设为同一个祖先,最后在统计一下就可以了。
阅读全文
摘要:"题目" 题意:假如你在一棵二叉树的右边,往左看,能看到哪些元素。 题解:广搜,每一层的最右边元素即可。
阅读全文
摘要:"题目" 题意:将一个数组旋转k位, 用O(1)空间的算法去解决。找到nums[x]旋转之后对应的位置,交换二者,然后得到的数字再找下去。知道找到一开始的数字,形成一个闭环了,然后x++,直到交换次数==nums.size
阅读全文
摘要:"题目" 题意:给你一个数组表示一个街道,每个数字表示一个房子里有多少钱,你可以打劫获得这些钱,但是不能同时打劫相邻的房子,问你最多可以得到多少钱, 题解:动态规划,DP[i][0]表示第0个房子没有打劫,DP[i][1] 表示第1个房子打劫了。
阅读全文
摘要:"题目" 题意:求一个数的二进制形式里有多少个1,我们可以用位运算一位一位的去取,但是还有更高级的方法。 x&( x) 得出的x的从右往左第一个1,形成的十进制数。我们每次让x x&( x),不断的减1,就好了。
阅读全文
摘要:"题目" 很简单的位运算题目
阅读全文
摘要:"https://leetcode.com/problems/shortest palindrome/" 好题目啊! 题目: Given a string s, you are allowed to convert it to a palindrome by adding characters in
阅读全文
摘要:"题目"
阅读全文
摘要:"题目" 用hash,比较两个字符串数组的每个字符的hash值
阅读全文
摘要:"题目" 不想多说
阅读全文
摘要:"题目" 1349. Maximum Students Taking Exam Add to List Share Given a m n matrix seats that represent seats distributions in a classroom. If a seat is bro
阅读全文
摘要:"题目" 双周赛最后一题 题意:从起始点开始走,每次只能往前走一步,或者往后走一步,或者直接跳到数值一样的格子。求跳到最后一个格子的最小步数 题解: 一开始以为是动态规划,后来发现用BFS更加简单。动态规划也是可以解的。
阅读全文
摘要:"题目" 题意:给你一个字母组成的矩阵,和一些单词,问你在矩阵中能否找到这些单词。 题解:这道题目的数据范围大概是,单词很多!矩阵倒不大。这么多单词,一个一个拿来暴搜肯定超时,把他们变成hash 效率也很低。最好的办法,把这些单词组成一个字典树(前缀树),然后在矩阵里DFS时同时从树上匹配单词。
阅读全文
摘要:"题目" 题意:给你一个数组代表每天的股价。你有k次买入和卖出的机会,问你最多能赚多少钱。买入之前必须卖出已有股份。同一天是可以先买,再卖,或者先卖再买的。 题解:题目没有说数据范围,但是经过我实际测试 k 最大为10^8 ,n最大为10^4。当然k最多只需要取n/2就好了,因为当天买当天卖是没有意
阅读全文