07 2016 档案

摘要:Paint House I/II 要点:这题要区分房子编号i和颜色编号k:目标是某个颜色,所以min的list是上一个房子编号中所有其他颜色+当前颜色的cost https://repl.it/Chwe/1 (I) 善用slicing来eliminate list中一点,还有一点好处是不用考虑超越边 阅读全文
posted @ 2016-07-31 19:15 absolute100 阅读(114) 评论(0) 推荐(0)
摘要:Graph Valid Tree 要点:本身题不难,关键是这题涉及几道关联题目,要清楚之间的差别和关联才能解类似题:isTree就比isCycle多了检查连通性,所以这一系列题从结构上分以下三部分 given a graph or edges?有可能给点的编号,然后只给edges,这个最适合用uni 阅读全文
posted @ 2016-07-30 19:18 absolute100 阅读(147) 评论(0) 推荐(0)
摘要:3Sum Smaller 要点:类似的题还有lintcode的triangle count i,j,k的规律:i:最外层,每走一步,j要重新来过,j第二层,起始为i+1,k初始取决于题目。主要利用了: [j,k]之间的增序:当k满足条件后,顺序之后的也都满足条件,这时候就可以继续移动j了。 移动j的 阅读全文
posted @ 2016-07-29 19:20 absolute100 阅读(197) 评论(0) 推荐(0)
摘要:Palindrome Permutation I/II 要点: oddCount to increase/decrease count II: chars: 先统计,再得到一半的c,相同的在一起,所以是不用排序的(permute去重需要排序) odds: odds只能在中间,所以要存起来,最后直接拼 阅读全文
posted @ 2016-07-28 19:23 absolute100 阅读(232) 评论(0) 推荐(0)
摘要:Alien Dictionary 要点:topological sort,bfs 只有前后两个word之间构成联系,一个word里的c是没有关系的 只要得到两个word第一个不同char之间的partial order即可。topological sort就是把partial order变为tota 阅读全文
posted @ 2016-07-27 19:26 absolute100 阅读(201) 评论(0) 推荐(0)
摘要:Encode and Decode Strings 要点:题的特点:不是压缩,而是encode为字节流。所以需要找delimiter来分割每个word,但是delimiter可能是字符本身,所以可以用数字记录每个word的长度。这样一般比delimiter简单并且节省空间。接着可能会想到如果前后单词 阅读全文
posted @ 2016-07-27 19:25 absolute100 阅读(140) 评论(0) 推荐(0)
摘要:Closest Binary Search Tree Value II 要点:通过iterator,把closest值附近的k个closest找到,从而time降为O(klgn) in order iterator的本质:栈存当前见到,未来还要再访问到的node。当前见到是沿着left访问,而未来再 阅读全文
posted @ 2016-07-25 19:29 absolute100 阅读(102) 评论(0) 推荐(0)
摘要:Closest Binary Search Tree Value 要点: https://repl.it/CfhL/1 Definition for a binary tree node. class TreeNode(object): def __init__(self, x): self.val 阅读全文
posted @ 2016-07-25 19:29 absolute100 阅读(98) 评论(0) 推荐(0)
摘要:Find the Duplicate Number 要点:通过Pigeonhole principle对值空间做binary search,具体来说, low,mid,high都是值空间,所以范围是[1,n]。注意鸽巢原理是positive:也就是多出来的必有重复。所以如果[1,mid]之间的元素c 阅读全文
posted @ 2016-07-24 19:32 absolute100 阅读(115) 评论(0) 推荐(0)
摘要:Meeting Rooms I/II 要点:这题和skyline类似,利用了interval start有序的特点,从左向右处理,用一个heap来动态表示当前占用rooms的时间段,所以heap的size就是room数。具体来说, heap是end time的min heap 当前?就是和新inte 阅读全文
posted @ 2016-07-23 19:40 absolute100 阅读(118) 评论(0) 推荐(0)
摘要:要点:这题是combination的应用,从左向右想比从右向左容易。 因为有结果从小到大的要求,暗示用combintion而不是permutation 其实就是从小到大验证因子,每个因子和其对称因子立即成为一个res到solutions里 因子的范围是i i 阅读全文
posted @ 2016-07-23 19:38 absolute100 阅读(123) 评论(0) 推荐(0)
摘要:Verify preorder sequence of Binary Search Tree 要点:simulating preorder sequence: 根据preorder的特点,首先会一直向left subtree方向访问,并且值递减。当遇到一个非递减元素是,说明这个是某个当前路径上结点作 阅读全文
posted @ 2016-07-23 19:36 absolute100 阅读(392) 评论(0) 推荐(0)
摘要:Flatten 2D Vector 要点: 这题是2d的iterator,一般对于1d的情况,hasNext()是不需要做移动的。而2d不同,core iterator是j向的,而i向要在hasNext()中移动以保证call next()的时候j是available的。 hasNext()如何移动 阅读全文
posted @ 2016-07-23 19:35 absolute100 阅读(163) 评论(0) 推荐(0)
摘要:Walls and Gates 要点: 同样是bfs,这题可以用渲染的方法(即全部gate进初始q),注意区别Shortest Distance from All Buildings。那道题要找到某个点到"all" buildings的距离,所以不能用渲染,因为不是到该点的一条路径。而本题类似sur 阅读全文
posted @ 2016-07-22 19:49 absolute100 阅读(124) 评论(0) 推荐(0)
摘要:Zigzag Iterator 要点: 实际不是zigzag而是纵向访问 这题可以扩展到k个list,也可以扩展到只给iterator而不给list。结构上没什么区别,iterator的hasNext和计数殊途同归。 一种方法利用queue,进queue的顺序就是下一个要访问的元素index和v,实 阅读全文
posted @ 2016-07-22 19:48 absolute100 阅读(130) 评论(0) 推荐(0)
摘要:Paint Fence 要点: 这题是求number of ways,如果是相邻不相同颜色,那么就trivial了:k (k 1)^(n 1)。所以这里no more than two adjacent fence posts就是不能连续出现3个相同颜色的。 注意这题的解序列都是连续的,所以dp表示 阅读全文
posted @ 2016-07-22 19:47 absolute100 阅读(152) 评论(0) 推荐(0)
摘要:Inorder Successor in BST 要点:这题要注意的是如果不是BST,没法从树结构上从root向那边找p,只能遍历。而根据BST,可以只走正确方向 如果不检查right子树,可以从root到下,但invariant是root!=null。而检查右子树,invariant可以是root 阅读全文
posted @ 2016-07-22 19:46 absolute100 阅读(132) 评论(0) 推荐(0)
摘要:Find the Celebrity 要点: 这题从solution反过来想比较好:loop through n同时maintain一个candidate:如果cand认识某个i,那么modify cand。实际上检查另一个条件i不认识cand也可以,因为这2个条件是exclusive的 这个过程保 阅读全文
posted @ 2016-07-22 19:45 absolute100 阅读(96) 评论(0) 推荐(0)
摘要:Best Meeting Point 要点: 题本身不难理解,manhattan distance。follow up就变成weighted了(因为一个地方可以有多个住户) 注意input是grid的形式,一种方法是2d iterate,然后用两个数组分别存x,y,只需要对column sort,r 阅读全文
posted @ 2016-07-21 19:56 absolute100 阅读(150) 评论(0) 推荐(0)
摘要:Find Median from Data Stream 要点: 基本框架:两个heap:large,small把所有数二分。一个新的element。目标:维持heap中的元素个数相同。错误理解:新元素不是任意可以push到large里的,其值可能应该属于small。所以要2步push/pop,之后 阅读全文
posted @ 2016-07-21 19:55 absolute100 阅读(131) 评论(0) 推荐(0)
摘要:Word Pattern II 要点: 注意与I的差异,其实题不难,看到这种迷乱的,首先要想到backtrack 1:1 mapping两个条件:p in and str in, or p not in and str not in values(). 错误点: false的退出条件是pattern 阅读全文
posted @ 2016-07-21 19:54 absolute100 阅读(166) 评论(0) 推荐(0)
摘要:Implement strStr() 要点:rolling hash方法的速度比较慢。 小优化:不用hash%base,而用hash =base 最高位是一样的。 rolling hash错误点: base的连乘少一位,另外别搞成/10 python应该是ord(c) ord(‘a’),不是ord( 阅读全文
posted @ 2016-07-20 20:01 absolute100 阅读(127) 评论(0) 推荐(0)
摘要:Unique Word Abbreviation 要点: 简单题,主要是理解题意。no other words have the same abbreviation as the given word意思就是如果没有同样的abbrev或者有但是只由dict中相同的word产生。 可以用True/Fa 阅读全文
posted @ 2016-07-19 20:03 absolute100 阅读(137) 评论(0) 推荐(0)
摘要:dp/recursion的方式和是不是game无关,和game本身的规则有关:flip game不累加值,只需要一个boolean就可以。coin in a line II是从一个方向上选取,所以1d dp,而coin in a line III是两个方向,所以是2d dp flip game II 阅读全文
posted @ 2016-07-19 07:20 absolute100 阅读(135) 评论(0) 推荐(0)
摘要:Smallest Rectangle Enclosing Black Pixels 要点:记题:这题有两个限制条件:所有black pixel是连通的(所以可以用binary search)以及给了一个black pixel。 错误理解:给定black pixel所在行/列的top/down/lef 阅读全文
posted @ 2016-07-17 20:07 absolute100 阅读(165) 评论(0) 推荐(0)
摘要:Binary Tree Longest Consecutive Sequence 简单题,只要单向递增的 错误点: +1,不是 = 注意是top.left, top.right, 不是root.left, root.right:debug log:打印每层root.val和当前curlen http 阅读全文
posted @ 2016-07-17 20:06 absolute100 阅读(126) 评论(0) 推荐(0)
摘要:4 Sum 要点: recursion + k sum:可以用combination sum的思路,只要增加一个k的arg:因为k和i是联动的,所以recursion每层的k要 1 这题的success终止条件是k==0 and target==0,而failure的终止条件是k==0 or 过界 阅读全文
posted @ 2016-07-16 20:10 absolute100 阅读(112) 评论(0) 推荐(0)
摘要:Binary Tree Vertical Order Traversal 要点:这题不难,就是要找到最简单的方法还需要有些考量。主要的原因是Tree的宽度是不知道的 用map记录min max的区间,最后再iterate build返回数组。这样可以不用多traverse一遍Tree。 traver 阅读全文
posted @ 2016-07-16 20:09 absolute100 阅读(124) 评论(0) 推荐(0)
摘要:Sparse Matrix Multiplication 要点: 用hashmap与brute force的不同:显然brute force是O(m n k),因为是稀疏矩阵,所以用了hashmap可以把k降到很小。 最终的计算还是2d loop m和n,只是loop k时候,变成找对应n的list 阅读全文
posted @ 2016-07-15 20:12 absolute100 阅读(153) 评论(0) 推荐(0)
摘要:Shortest Distance from All Buildings 要点: 这种没有weight的distance题,首先想到dfs/bfs。这题因为是最短距离,所以用bfs。注意不同于Surrounded Regions,这题不是连通渲染,而是对每个’1’值点作为起点单独的bfs,而不是并行 阅读全文
posted @ 2016-07-14 20:14 absolute100 阅读(180) 评论(0) 推荐(0)
摘要:Generalized Abbreviation 要点:不算难题,注意这类递归的题要按super set的方式(选or不选),而不是combination。比较容易理解。 这题的限制条件是abbreviation的部分要连成一片。 如果是subset方法,因为是从左向右,所以记录左边的count,然 阅读全文
posted @ 2016-07-13 20:16 absolute100 阅读(140) 评论(0) 推荐(0)
摘要:Android Unlock Patterns 要点: 本质:递归选下一个位置,返回count(规律:count的就返回count,True/False就返回True/False) 递归类似permutation,所以用used记录 =m and =0的条件),只有nused:表示i,j没有用 无间 阅读全文
posted @ 2016-07-12 20:22 absolute100 阅读(204) 评论(0) 推荐(0)
摘要:Maximum Size Subarray Sum Equals k 要点: 为什么slinding window或者local ending at方法不行?要得到exact equals k,而array不是sorted。 idea:基本利用了partial sum差得到subarray sum。 阅读全文
posted @ 2016-07-12 20:21 absolute100 阅读(109) 评论(0) 推荐(0)
摘要:Largest BST Subtree 要点: http://articles.leetcode.com/largest binary search tree bst in 这题重点是理解题意,还有道类似题 Largest Binary Search Tree (BST) in a Binary T 阅读全文
posted @ 2016-07-12 20:20 absolute100 阅读(127) 评论(0) 推荐(0)
摘要:Number of Connected Components in an Undirected Graph 要点: union find如何记? data structure就一个array/list,每个元素初始化为val=index,表示每个元素是独立的。之后还保持的元素一定是union后的根。 阅读全文
posted @ 2016-07-12 20:19 absolute100 阅读(141) 评论(0) 推荐(0)
摘要:Design Tic Tac Toe 要点:这题和design题接近,重点是如何表示,从而便于计算game状态。巧妙的方法是只用list[i]表示某行/列,两个players分别从+/ 两个方向累加,哪个位置累加到n/ n则代表哪个player胜出。当然还有对角线/反对角线的情况 和8 queen, 阅读全文
posted @ 2016-07-11 20:27 absolute100 阅读(149) 评论(0) 推荐(0)
摘要:Moving Average from Data Stream https://repl.it/CarT 阅读全文
posted @ 2016-07-11 20:26 absolute100 阅读(112) 评论(0) 推荐(0)
摘要:Reverse Vowels of a String 要点:记题,这题的是对换前后对应的Vowel字符。注意python string是immutable的,所以必然要额外O(n) space。2 line code的基本思路: 一行反向generate vowel,另一行根据这个顺序从正向匹配单个 阅读全文
posted @ 2016-07-11 20:25 absolute100 阅读(143) 评论(0) 推荐(0)
摘要:Rearrange String k Distance Apart 要点:这题要反向思维:如果k distance apart,那么除非最后一组,其他k组都是distinct的。greedy algorithm:显然出现次数越多,越要优先放,这样才能分布到尽可能多个streak。另外同个char最好 阅读全文
posted @ 2016-07-08 20:41 absolute100 阅读(141) 评论(0) 推荐(0)
摘要:Design Snake Game 要点: representation:给了grid,坐标放list里表示蛇身。 api和data structure更新的关系:就一个function: move(direction) 具体的data structure snake:需要随机查找碰撞检测,还要支持 阅读全文
posted @ 2016-07-08 20:40 absolute100 阅读(126) 评论(0) 推荐(0)
摘要:Line Reflection 要点: 一个confusion:找到所有点的median为什么不行?重复的点的情况,另外unsorted找median没有max/min中点容易 注意y轴对称要验证x 公式:2 x x0:x x0就是对称边的delta,所以再加个x就是所求 这题还要考虑y坐标相等:一 阅读全文
posted @ 2016-07-08 20:40 absolute100 阅读(102) 评论(0) 推荐(0)
摘要:Logger Rate Limiter 要点:这题并不是需要circular buffer的那题。因为没有用统计过去10秒的个数来throttle,所以不需要sliding window,而只是过去1个的timestamp来比较,所以用个hashmap记录过去的时间点即可 秒的间隔计算:过去10秒, 阅读全文
posted @ 2016-07-07 20:47 absolute100 阅读(158) 评论(0) 推荐(0)
摘要:Design Hit Counter 要点:因为是second granularity,所以可以用以秒为单位的circular buffer方法。这题简单在只需要count过去300秒的,增加难度可以count过去秒,分钟,小时。 2个时间点都有可能更新超时的统计:query和hit 一种简单方法是 阅读全文
posted @ 2016-07-07 20:46 absolute100 阅读(151) 评论(0) 推荐(0)
摘要:Bomb Enemy 要点: 什么题?目标是合适的地方摆1个炸弹优化最大攻击怪物数, 为什么这个目标和横竖统计有关(内在关联是什么?):炸弹的特性:分段,某个点和某段内的前后方向都有关联。所以统计段内怪物数 处理的方向是逐行遍历matrix,所以”预处理"可以同时进行:在某段的左边界做,之后其他同段 阅读全文
posted @ 2016-07-07 20:45 absolute100 阅读(109) 评论(0) 推荐(0)
摘要:Sort Transformed Array 要点: 知道了解法就容易了:本质:如何把一个单调的转化成双向单调的:结构包括两部分:原array的选择方向(双指针)和填结果array的方向。 min/max在input sorted array的中间点,所以双向验证,另外根据开口方向,决定从两边走是越 阅读全文
posted @ 2016-07-07 20:45 absolute100 阅读(114) 评论(0) 推荐(0)
摘要:Longest Palindromic Substring 要点:manchane method太复杂。这里就用dp实现O(n^2)。一种是用boolean dp记录所有左右边界。二重loop所有左右边界。注意为了保证用到dp,一定是距离小的先计算,所以这里的循环方式是外层len(2开始),内层一点 阅读全文
posted @ 2016-07-06 03:25 absolute100 阅读(180) 评论(0) 推荐(0)
摘要:Data Stream as Disjoint Intervals 要点:因为data stream处理中任何中间结果interval之间都是disjoint的,所以可以直接用binary search tree(而不需要Interval tree)。BST是按interval start存储。 m 阅读全文
posted @ 2016-07-05 03:45 absolute100 阅读(122) 评论(0) 推荐(0)
摘要:Russian Doll Envelopes 要点:题目实际不是难题,就是排序+longest increasing subsequence。 有一点需要注意,因为width相等的情况是不能二者同时考虑的。简单的技巧是对width相等时height大的在前,这样在做LIS的时候不可能二者同时被选。 阅读全文
posted @ 2016-07-05 03:43 absolute100 阅读(137) 评论(0) 推荐(0)
摘要:Water and Jug Problem 要点:利用了Bézout’s theorem:mx+n y对于任意m,n都是gcd(x,y)的整倍数。所以z是gcd整倍数并且zy: x,y=y,x gval = gcd(x,y) print gval if gval==0: return z==0 re 阅读全文
posted @ 2016-07-05 03:43 absolute100 阅读(96) 评论(0) 推荐(0)
摘要:Expression Add Operators 要点:难题,参考了https://discuss.leetcode.com/topic/30089/clean python dfs with comments。 这里因为只有+、 、 ,没有(,),\,所以实际上不从左向右的情况只有+/ 遇到 ,并 阅读全文
posted @ 2016-07-05 03:42 absolute100 阅读(269) 评论(0) 推荐(0)
摘要:Largest Divisible Subset 要点: 因为先排序,所以符合条件的一定是成倍递增序列,这题就和longest increasing subsequence类似了。 想出来的解是dp[i]表示所有前i个数的可能解,这样实际上就是把所有子集都存起来,导致了TLE。而实际上这类题都以dp 阅读全文
posted @ 2016-07-04 03:54 absolute100 阅读(89) 评论(0) 推荐(0)
摘要:Valid Perfect Square 要点:binary search的题,可以扩展到double,就变成2以上的情况n/2,但是 阅读全文
posted @ 2016-07-04 03:51 absolute100 阅读(92) 评论(0) 推荐(0)
摘要:Sum of Two Integers 要点: 基本原理就是a^b得到无进位和,a&b得到carry并左移继续计算,这个算法适用于negative因为signed integer都是2’s complement表示的,所以加法都是统一算法。 上述算法只适合java,python因为自动整数越界为lo 阅读全文
posted @ 2016-07-04 03:51 absolute100 阅读(125) 评论(0) 推荐(0)
摘要:Count Numbers with Unique Digits 要点:排列组合题,思路是对的,但是实现上出了不少问题 想到了要不同位个数累加。这是因为比如1位,000 009如果按三位计算都是不符合的,但是实际是要累积的。 当时忽略了0不能在最高位。所以把最高位但提出来 9(总共10不包括0),剩 阅读全文
posted @ 2016-07-03 03:58 absolute100 阅读(101) 评论(0) 推荐(0)
摘要:Design Twitter 要点:这实际是一道设计题,这类题通常就是选择data structure来实现get和put逻辑。 twitter主要操作是getNewsFeed,这题的要求是某user和其followee的最近10个tweets。类似n way merge,用PriorityQueu 阅读全文
posted @ 2016-07-01 04:01 absolute100 阅读(131) 评论(0) 推荐(0)