摘要:
Longest Substring with At Most Two Distinct Characters Given a string, find the length of the longest substring T that contains at most 2 distinct cha 阅读全文
摘要:
Missing Range 要点:题简单,这类题的特点都是记录上一步的状态,比如这题是end 错误点: 三种情况:一是连续的,即和上一个end差1,而是中间只差1个数,没有’ ',最后是大于1,有’ ' 看清题:upper/lower是boundary,不一定出现在nums里。为了统一,把upper 阅读全文
摘要:
Read N Characters Given Read4 I/II 要点:这题的要点就是搞清楚几个变量的内在逻辑:只有buffer是整4 bytes的。而client要读的bytes(需求)和实际上disk上有的bytes(供给)都是不整的。所以, 循环的条件就是either 供给不足 or 需求 阅读全文
摘要:
Binary Tree Upside Down 要点: recursion反转如何做?两个要点,一是在递归之后反转link(因为先要通过原来的link到下一层),二是要一层层把最底层的root返回来。 https://repl.it/CjUz iteration如何做?和recursion不同,不是 阅读全文
摘要:
Strobogrammatic Number I/II/III 要点:记题,注意轴对称和点对称的区别。这题就是几个固定digit之间的palindrome I https://repl.it/CqLu II https://repl.it/CivO (java) https://repl.it/Cq 阅读全文
摘要:
Shortest Word Distance I/II/III 要点:系列题最重要的是记清题,重点是题目本身的变化和解法之间的关联。 I https://repl.it/CqPf 这题的一般规律从左到右的某个word提供了boundary为之后的word做比较用:所以遇到两个word中的一个,一是和 阅读全文
摘要:
Group Shifted Strings 要点:开始就想到了string之间前后字符diff要相同。 思维混乱的地方:和某个string的diff之间是没有关系的。所以和单个string是否在那个点会出现z a也没关系。 唯一tricky的地方是z a的diff为 25,其和1是等价的。同理a z 阅读全文
摘要:
Count Univalue Subtrees 要点:检测条件比较有意思:因为可能的情况比较多,只要违反了任意一条就return False,所以可以只考虑False的情况,最后return True。 https://repl.it/CoqQ 错误点:这题类似Largest BST Subtree 阅读全文
摘要:
Paint House I/II 要点:这题要区分房子编号i和颜色编号k:目标是某个颜色,所以min的list是上一个房子编号中所有其他颜色+当前颜色的cost https://repl.it/Chwe/1 (I) 善用slicing来eliminate list中一点,还有一点好处是不用考虑超越边 阅读全文
摘要:
Graph Valid Tree 要点:本身题不难,关键是这题涉及几道关联题目,要清楚之间的差别和关联才能解类似题:isTree就比isCycle多了检查连通性,所以这一系列题从结构上分以下三部分 given a graph or edges?有可能给点的编号,然后只给edges,这个最适合用uni 阅读全文
摘要:
3Sum Smaller 要点:类似的题还有lintcode的triangle count i,j,k的规律:i:最外层,每走一步,j要重新来过,j第二层,起始为i+1,k初始取决于题目。主要利用了: [j,k]之间的增序:当k满足条件后,顺序之后的也都满足条件,这时候就可以继续移动j了。 移动j的 阅读全文
摘要:
Palindrome Permutation I/II 要点: oddCount to increase/decrease count II: chars: 先统计,再得到一半的c,相同的在一起,所以是不用排序的(permute去重需要排序) odds: odds只能在中间,所以要存起来,最后直接拼 阅读全文
摘要:
Alien Dictionary 要点:topological sort,bfs 只有前后两个word之间构成联系,一个word里的c是没有关系的 只要得到两个word第一个不同char之间的partial order即可。topological sort就是把partial order变为tota 阅读全文
摘要:
Encode and Decode Strings 要点:题的特点:不是压缩,而是encode为字节流。所以需要找delimiter来分割每个word,但是delimiter可能是字符本身,所以可以用数字记录每个word的长度。这样一般比delimiter简单并且节省空间。接着可能会想到如果前后单词 阅读全文
摘要:
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 阅读全文
摘要:
Closest Binary Search Tree Value II 要点:通过iterator,把closest值附近的k个closest找到,从而time降为O(klgn) in order iterator的本质:栈存当前见到,未来还要再访问到的node。当前见到是沿着left访问,而未来再 阅读全文
摘要:
Find the Duplicate Number 要点:通过Pigeonhole principle对值空间做binary search,具体来说, low,mid,high都是值空间,所以范围是[1,n]。注意鸽巢原理是positive:也就是多出来的必有重复。所以如果[1,mid]之间的元素c 阅读全文
摘要:
Meeting Rooms I/II 要点:这题和skyline类似,利用了interval start有序的特点,从左向右处理,用一个heap来动态表示当前占用rooms的时间段,所以heap的size就是room数。具体来说, heap是end time的min heap 当前?就是和新inte 阅读全文
摘要:
要点:这题是combination的应用,从左向右想比从右向左容易。 因为有结果从小到大的要求,暗示用combintion而不是permutation 其实就是从小到大验证因子,每个因子和其对称因子立即成为一个res到solutions里 因子的范围是i i 阅读全文
摘要:
Verify preorder sequence of Binary Search Tree 要点:simulating preorder sequence: 根据preorder的特点,首先会一直向left subtree方向访问,并且值递减。当遇到一个非递减元素是,说明这个是某个当前路径上结点作 阅读全文
摘要:
Flatten 2D Vector 要点: 这题是2d的iterator,一般对于1d的情况,hasNext()是不需要做移动的。而2d不同,core iterator是j向的,而i向要在hasNext()中移动以保证call next()的时候j是available的。 hasNext()如何移动 阅读全文
摘要:
Walls and Gates 要点: 同样是bfs,这题可以用渲染的方法(即全部gate进初始q),注意区别Shortest Distance from All Buildings。那道题要找到某个点到"all" buildings的距离,所以不能用渲染,因为不是到该点的一条路径。而本题类似sur 阅读全文
摘要:
Zigzag Iterator 要点: 实际不是zigzag而是纵向访问 这题可以扩展到k个list,也可以扩展到只给iterator而不给list。结构上没什么区别,iterator的hasNext和计数殊途同归。 一种方法利用queue,进queue的顺序就是下一个要访问的元素index和v,实 阅读全文
摘要:
Paint Fence 要点: 这题是求number of ways,如果是相邻不相同颜色,那么就trivial了:k (k 1)^(n 1)。所以这里no more than two adjacent fence posts就是不能连续出现3个相同颜色的。 注意这题的解序列都是连续的,所以dp表示 阅读全文
摘要:
Inorder Successor in BST 要点:这题要注意的是如果不是BST,没法从树结构上从root向那边找p,只能遍历。而根据BST,可以只走正确方向 如果不检查right子树,可以从root到下,但invariant是root!=null。而检查右子树,invariant可以是root 阅读全文
摘要:
Find the Celebrity 要点: 这题从solution反过来想比较好:loop through n同时maintain一个candidate:如果cand认识某个i,那么modify cand。实际上检查另一个条件i不认识cand也可以,因为这2个条件是exclusive的 这个过程保 阅读全文
摘要:
Best Meeting Point 要点: 题本身不难理解,manhattan distance。follow up就变成weighted了(因为一个地方可以有多个住户) 注意input是grid的形式,一种方法是2d iterate,然后用两个数组分别存x,y,只需要对column sort,r 阅读全文
摘要:
Find Median from Data Stream 要点: 基本框架:两个heap:large,small把所有数二分。一个新的element。目标:维持heap中的元素个数相同。错误理解:新元素不是任意可以push到large里的,其值可能应该属于small。所以要2步push/pop,之后 阅读全文
摘要:
Word Pattern II 要点: 注意与I的差异,其实题不难,看到这种迷乱的,首先要想到backtrack 1:1 mapping两个条件:p in and str in, or p not in and str not in values(). 错误点: false的退出条件是pattern 阅读全文
摘要:
Implement strStr() 要点:rolling hash方法的速度比较慢。 小优化:不用hash%base,而用hash =base 最高位是一样的。 rolling hash错误点: base的连乘少一位,另外别搞成/10 python应该是ord(c) ord(‘a’),不是ord( 阅读全文
摘要:
Unique Word Abbreviation 要点: 简单题,主要是理解题意。no other words have the same abbreviation as the given word意思就是如果没有同样的abbrev或者有但是只由dict中相同的word产生。 可以用True/Fa 阅读全文
摘要:
dp/recursion的方式和是不是game无关,和game本身的规则有关:flip game不累加值,只需要一个boolean就可以。coin in a line II是从一个方向上选取,所以1d dp,而coin in a line III是两个方向,所以是2d dp flip game II 阅读全文
摘要:
Smallest Rectangle Enclosing Black Pixels 要点:记题:这题有两个限制条件:所有black pixel是连通的(所以可以用binary search)以及给了一个black pixel。 错误理解:给定black pixel所在行/列的top/down/lef 阅读全文
摘要:
Binary Tree Longest Consecutive Sequence 简单题,只要单向递增的 错误点: +1,不是 = 注意是top.left, top.right, 不是root.left, root.right:debug log:打印每层root.val和当前curlen http 阅读全文
摘要:
4 Sum 要点: recursion + k sum:可以用combination sum的思路,只要增加一个k的arg:因为k和i是联动的,所以recursion每层的k要 1 这题的success终止条件是k==0 and target==0,而failure的终止条件是k==0 or 过界 阅读全文
摘要:
Binary Tree Vertical Order Traversal 要点:这题不难,就是要找到最简单的方法还需要有些考量。主要的原因是Tree的宽度是不知道的 用map记录min max的区间,最后再iterate build返回数组。这样可以不用多traverse一遍Tree。 traver 阅读全文
摘要:
Sparse Matrix Multiplication 要点: 用hashmap与brute force的不同:显然brute force是O(m n k),因为是稀疏矩阵,所以用了hashmap可以把k降到很小。 最终的计算还是2d loop m和n,只是loop k时候,变成找对应n的list 阅读全文
摘要:
Shortest Distance from All Buildings 要点: 这种没有weight的distance题,首先想到dfs/bfs。这题因为是最短距离,所以用bfs。注意不同于Surrounded Regions,这题不是连通渲染,而是对每个’1’值点作为起点单独的bfs,而不是并行 阅读全文
摘要:
Generalized Abbreviation 要点:不算难题,注意这类递归的题要按super set的方式(选or不选),而不是combination。比较容易理解。 这题的限制条件是abbreviation的部分要连成一片。 如果是subset方法,因为是从左向右,所以记录左边的count,然 阅读全文
摘要:
Android Unlock Patterns 要点: 本质:递归选下一个位置,返回count(规律:count的就返回count,True/False就返回True/False) 递归类似permutation,所以用used记录 =m and =0的条件),只有nused:表示i,j没有用 无间 阅读全文