随笔分类 - Leetcode
摘要:这个题有点坑啊。。主要是自己蠢,以为 Integer.MIN_VALUE 1 == 2147483649
阅读全文
摘要:找到所有长度大于3的等差数列。 用DP dp[i]代表以nums[i]开始往右,有多少个等差数列。 遍历数组,以每一个数nums[i]为等差数列最左值,看看有多少种情况。 i+1的时候如果也成等差数列,看看它和nums[i]的差一不一样,一样的话只比dp[i]的情况小1。。 然后因为只需要前一个情况
阅读全文
摘要:新题,没有follow up,所以暂时目的不明。 Java public class Solution { public List fizzBuzz(int n) { List res = new ArrayList(); for(int i = 1; i
阅读全文
摘要:这个题直接in order是O(n)。。要求应该是lgn之类的。 分情况讨论: 有右节点,go right,然后无限往左到,直到左边是NULL,就停止,停止的地方就是答案。 没有右节点,就要traverse了。规则是,找到第一个大于P的点,找不到就是NULL,找到就保存下来。 当前点大于P,保存当前
阅读全文
摘要:呃,对于一个数,奇数位的话,中间只能是018. 偶数话,00 11 88 96 69 i=3开始所有的数都基于i 2的情况构造,左右两边分别加上 0 0 1 1 8 8 9 6 6 9 i=n的最后一轮构造,不能包含0 0,因为开头不能是0,但是中间构造不能省。。 仔细想想做蠢了,没必要N个LIST
阅读全文
摘要:提示一大堆,也没看懂。 只要2个Iter就行了,iter1是大LIST的iterator,iter2只能是小sub list的(这里使用了排除法...) 换句话说,iter2是iter1的iterator。。 iter2没NEXT()的时候,iter1 goes to next.. 最大的问题是解决
阅读全文
摘要:刷 June 18 2019 变体,条件和上一题一样,但是让算最多同时有多少会议进行。 按startTime sort array PQ based on endTime to track on going meetings. 遍历array,每有一个meeting,看下再这个会开始前有多少个在进行
阅读全文
摘要:这个题做得很乱,主要是忘了矩阵相乘的规则,学完linear algebra再也没遇到过这种知识,整个linear algebra到现在为止就能记住个bra。。 复习了一下,除了navie approach还是不会做。 看TAG是MAP。。依然不会。。 看答案。原来是为了省却0无意义操作。。。 那就是
阅读全文
摘要:怎么今天全是BACKTRACK的题。 这个也一样,剪枝就行了,算因数的时候一开始是觉得不能超过一半,但是12会出现34 43这样的情况,进而想起不能超过平方根。。 然后每次分解的因子,再分解的时候不能小于上一个因子,否则就又有重复。 最后,没了。
阅读全文
摘要:这个题做得不太好,上来思路就有了,但是逻辑上老犯错,我真是猪脑。 traverse的时候,判断一个node是不是uni value tree的时候有2点: 他的左右子树是uni value tree; 他和左右子树的值相等。 缺一不可。。 一旦是uni value tree,总数++就行了。。 但是
阅读全文
摘要:最后更新 二刷。 好蠢,直接按3sum做的,还在想有什么意义。 这个题有巧办法,3个数的和小于target的时候,nums[i], nums[l] + (l, r]范围内的所有值都小于target,直接加数量就可以了。。 一刷 滑窗。。 和上一个3 SUM不同的是,一旦判定成功就有一个范围了,比如L
阅读全文
摘要:比较基础的题,用了recursive方法。 一般还有iterative的办法,然而没做出来。。。。。。。 我在一刷的时候说到 " 比较基础的 ".. 我以前就这么屌了= =? 现在做还想了一会,才照着题里给的图改出来的。 这个题reverse linked list如出一辙。。感觉是个套路啊。。 r
阅读全文
摘要:一元二次方程。。。仿佛回到了初中。 主要看a的情况来分情况讨论: =0,一次函数,根据b的正负单调递增递减就行了。 0,凹状。。从左往右。。 Java public class Solution { public int[] sortTransformedArray(int[] nums, int
阅读全文
摘要:提示给的太直白了。。 比如player 1占据了(0,1),那么row[0]++ col[1]++ 表示第一行有1个O,第一列有1个X,假设PLAYER 1最终在第一行连成一排,那最终row[0] == n。 player 2占据了(0,2),那么 row[0] col[2] 如果PLAYER最终在
阅读全文
摘要:nlgn就不说了。。说n的方法。 这个题做了好久。 一开始想到的是post order traversal. 左右都是BST,然后自己也是BST,返还长度是左+右+自己(1)。 左右其中一个不是,或者自己不是的话,返还 1. 第一次尝试忽略了跳级问题,判断自己能不能和左右子树组成BST的情况是,自己
阅读全文
摘要:abc de先整个翻转: ed cba再逐个单词翻转: de abc就是要求的结果。 Java public class Solution { public void reverseWords(char[] s) { if(s.length
阅读全文
摘要:首先找到X方向的中点,如果中点是一个点,那么分别从这个点开始往左右找就行;如果是一个区间,比如1 2之间,那么首先总点数得是偶数,然后以1和2往左右两边找就行。。 找的时候,有3种情况: 同时没找到,继续; 一个找到,一个没找到,FALSE; 同时找到,左边找到的每个点,必须对应一个右边找到的每个点
阅读全文
摘要:题里没说get的时候应该随机选取还是,选取least available number,题里似乎是后者,就按后者做。 用SET来判断是否被占用,STACK保存可用的号码,好像就是这样,用QUEUE也试了一下,比STACK慢,不知道为什么,估计跟具体的CASE有关吧。。 Java public cla
阅读全文
摘要:二刷。。 二刷有印象,所以一下做出来了,不过还是忽略了MIN_VALUE的问题。。。 还是divide and conquer Java public class Solution { public double myPow(double x, int n) { if(n == 0) return
阅读全文
摘要:贪食蛇。 GAME OVER有2种情况,1是咬到自己,2是出界。 1)用QUEUE来保留占据的格子,每走一格就添加1个,然后POll()最后一个。 做一个一样的SET来check要走的格子是不是已经在自己身体里。这里需要注意用int[2]来加到SET里是不行的。。开始怀念C的指针了。 我们用一个比较
阅读全文

浙公网安备 33010602011771号