随笔分类 -  Leetcode

上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页
摘要:二刷。 还是部分遍历+滑窗。 难点在于如何跳过重复的元素。 滑窗过程中遇到重复元素,和前2个固定坐标遇到重复元素是不一样的。 So u shall handle them in different ways respectively. 滑窗过程中,一旦判定成功,左右坐标的下一个如果相同,都没有判断的 阅读全文
posted @ 2016-12-10 23:51 哇呀呀..生气啦~ 阅读(155) 评论(0) 推荐(0)
摘要:和那个4 SUM没啥区别。。。 排序,遍历固定左边,右边2个滑窗从最大往中间滑。 主要就是重复的处理: 一个是找到一个有效组合后,要继续滑,不能BREAK,然后继续滑之前跳过重复; while(L threeSum(int[] nums) { List res = new ArrayList (); 阅读全文
posted @ 2016-12-10 23:36 哇呀呀..生气啦~ 阅读(146) 评论(0) 推荐(0)
摘要:刷 July 11 2019 这个大概没H的难度。 只有加减的话,主要的麻烦在于处理括号,然后用STACK好像是共识了。。 唯一需要注意的是括号会造成变号,因为只有加减,+ 其实就是 1 1的区别。 遇到(先当前sign进栈,再当前res进栈,然后res = 0当做一个新的式子重新算,直到发现)出栈 阅读全文
posted @ 2016-12-08 13:28 哇呀呀..生气啦~ 阅读(195) 评论(0) 推荐(0)
摘要:刷 July 11 2019 跟带括号的区别还是蛮大的。 还是用了STACK,存所有+ 的数,碰到 /就先POP出来算完再PUSH进去。 java class Solution { private static final char INITIAL_SIGN = '+'; public int ca 阅读全文
posted @ 2016-12-08 12:36 哇呀呀..生气啦~ 阅读(240) 评论(0) 推荐(0)
摘要:三刷。 准备面试正好有这个题,把3种方式都撸一下试试。 先是Bucket Sort。因为我们知道所有数据(frequency)的值域:最小是0,element在数组中一次都未出现;最大是数组长度,整个数组只含此element,有了值域就适合Bucket。 前面按出现频率建map,记录每个int出现了 阅读全文
posted @ 2016-12-08 10:54 哇呀呀..生气啦~ 阅读(215) 评论(0) 推荐(0)
摘要:入手的时候一直想打破表面,发现数学本质,结果并没有发现什么数学本质,直接去找答案。 挺复杂的,一般H的题如果我面试的时候遇到,用成语形容可能出现的情况,就是我 可能会吃屎 。这题对我来说是 一定会吃屎 。 dietpepsi给的答案很详细。 首先,一排气球左边是L,右边是R,我们可以假设最后一个打爆 阅读全文
posted @ 2016-12-04 13:32 哇呀呀..生气啦~ 阅读(297) 评论(0) 推荐(0)
摘要:刷 July 14 2019 日他妈好难啊 第一种做法,就是类似于palindrome partition那样,枚举出所有可能,选一个substring数目最少的。 第二种做法DP,看到DP真几把绝望。 minCut[n]代表0~n的substring最少能切多少下,使所有substring都是pa 阅读全文
posted @ 2016-12-04 12:05 哇呀呀..生气啦~ 阅读(140) 评论(0) 推荐(0)
摘要:最后更新 三刷? 找矩阵里的最长路径。 看起来是DFS,实际上也就是。但是如果从每个点都进行一次DFS然后保留最大的话,会超时。 这里需要结合DP,dp[i][j]表示以此点开始的最长路径,这样每次碰到的时候,如果已经算过,可以直接调取这个值。 用空间交换了部分时间。 写的时候我吸取教训,把边界判断 阅读全文
posted @ 2016-12-04 05:03 哇呀呀..生气啦~ 阅读(246) 评论(0) 推荐(0)
摘要:刷 July 25 2019 DP题做了几道我也发现共性了,就是每道我都不会。 这道题要这么想: n位置的最优解是cost[n]里最小的+best[n 1]。问题出在,当前K中里最便宜的情况,有可能和n 1最优解时的颜色一样,在遍历cost[0~k]的时候,如果颜色和上次最优解一样,就要当前COST 阅读全文
posted @ 2016-12-03 08:58 哇呀呀..生气啦~ 阅读(339) 评论(0) 推荐(0)
摘要:比较典型的动态规划。 如果把重点放在当前房子和上一个相同,还是不同来做就做不出来,所以干脆枚举每个房子的情况。 dp[i][0] = costs[i][0] + Math.min(dp[i 1][1],dp[i 1][2]); dp[i][1] = costs[i][1] + Math.min(dp 阅读全文
posted @ 2016-12-03 08:21 哇呀呀..生气啦~ 阅读(187) 评论(0) 推荐(0)
摘要:这题有歧义啊。。说的是颜色相同的相邻数量不能超过2个,不是颜色相同的对数不能超过2个,我日了。 搞懂之后就不难了,动态规划。 每一次粉刷都有2种可能,和前一个颜色相同;和前一个颜色不同。 总和是same[n]+diff[n].. 然后,这种一维DP是不需要整个数组的,3个变量就够了,但是这么写更清楚 阅读全文
posted @ 2016-12-03 08:02 哇呀呀..生气啦~ 阅读(202) 评论(0) 推荐(0)
摘要:二刷吧。。不知道为什么house robbery系列我找不到笔记,不过印象中做了好几次了。 不是很难,用的post order做bottom up的运算。 对于一个Node来说,有2种情况,一种是选(自己+下下层);一种是选左右children. 其实就是选自己和不选自己的区别。其实更像是dfs的题 阅读全文
posted @ 2016-12-03 07:27 哇呀呀..生气啦~ 阅读(364) 评论(0) 推荐(0)
摘要:好像是二刷。 题干改变的一点就是现在所有房子成环了,首尾相连。 现在没法用动态规划来dp[n] 来做了,因为第(n 1)个房子和第1个房子是相连的。 假如我们第一个房子不抢,从n = 1开始,那么剩下的总共n 1个房子和第一题一样,因为最后一个房子此时就算选了也不和n=0(第一个)重合。 假如我们第 阅读全文
posted @ 2016-12-03 07:05 哇呀呀..生气啦~ 阅读(136) 评论(0) 推荐(0)
摘要:我的心好痛,有点可怜自己了,骗子啊。。好伤心。。。。为什么要骗我。 你说,霞染天光,陌上花开与谁享;后来,烟笼柳暗,湖心水动影无双。 dp[i] = Math.max(dp[i 1], dp[i 2] + nums[i]); java public class Solution { public i 阅读全文
posted @ 2016-12-03 04:04 哇呀呀..生气啦~ 阅读(137) 评论(0) 推荐(0)
摘要:刷 June 23 2019 先用UF做了一下,这个不容易想到。valid tree说明 UF最终只有一个group 每次加的2个node都不能发现它已经在树里了。 比如[1,2][3,4]第一个条件不满足 [1,2][2,3][1,3]第二个条件不满足 然后做就行了。其实用n + 1 == edg 阅读全文
posted @ 2016-12-02 12:51 哇呀呀..生气啦~ 阅读(235) 评论(0) 推荐(0)
摘要:List里可以有int或者List,然后里面的List里面可以再有List. 用Stack来做比较直观 Iterator无非是next()或者hasNext()这2个方程 一开始我想的是hasNext()就简单的返还是不是空就行,主要的操作在next()里,结果发现无线循环。。好蠢 然后看网上答案改 阅读全文
posted @ 2016-12-01 03:12 哇呀呀..生气啦~ 阅读(1042) 评论(0) 推荐(0)
摘要:乍看之下没什么难的,应该用DFS,做起来发现确实也不难,DFS。 用STRING来储存当前值,到底了就转换成Integer然后添加到LIST里 最后LIST求和就行了。 感觉上不是很难 另一种还是DFS 可以避免 使用数组 直接加每个NODE的VAL LEVEL 10 简单多了。。 二刷。 和一刷一 阅读全文
posted @ 2016-11-30 11:04 哇呀呀..生气啦~ 阅读(154) 评论(0) 推荐(0)
摘要:找从头到尾SUM=TARGET的路径 就RECURSION就行 注意得SUM==TARGET 还得正好是ROOT LEAF 然后没啥难的了 好像可以用数据结构做 比如LINKEDLIST不过貌似还是得迭代。。 二刷。 先Recursion做了一下。 再试试Iterative. Discussion里 阅读全文
posted @ 2016-11-30 10:50 哇呀呀..生气啦~ 阅读(159) 评论(0) 推荐(0)
摘要:一刷。 在BST里找到K个和给定target值最接近的点。 BST的特性就是可以过in order traversal来得到sorted list. 有一个sorted list,用大小为k的滑窗来滑动就可以了。 停止的标准是: 1)窗口已填满。 2) 左端和target的差距 closestKVa 阅读全文
posted @ 2016-11-30 09:35 哇呀呀..生气啦~ 阅读(190) 评论(0) 推荐(0)
摘要:这个题不是很容易。 变型前是算有几种,每次遍历左边可能性 右边可能性就行了,用的动态规划。 这里要构建树就很麻烦了。 思路差不多,也是分别以1 N为ROOT. 以M为ROOT的时候,左边是1~(M 1),右边是(M+1)~N。分别有很多可能,左边的每种和右边的每种组合加上M为ROOT组成一个树。就是 阅读全文
posted @ 2016-11-29 12:36 哇呀呀..生气啦~ 阅读(124) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 ··· 12 下一页