随笔分类 -  LeetCode

上一页 1 2 3 4 5 6 7 8 ··· 10 下一页
摘要:Brute Force做的话,时间复杂度 O(mn),考虑有没有更好的方法。 方法一:Rabin-Karp 把needle hash一下,然后对与needle相同长度的在haystack的字符串hash一下,如果hash值相等,就找到了。 期中精髓就是,这个hash如何选择。最好的方法是使用 rol 阅读全文
posted @ 2018-12-05 05:31 約束の空 阅读(138) 评论(0) 推荐(0)
摘要:方法一: 最容易想到的就是一个个比,如果不一样,那么前面的就是最长公共前缀。 为了防止下标越界等情况,先把最短的字符找出来,作为基准用来一位位比较。 方法二:Trie 虽然在这道题里trie的优势没有体现出来,但还是写了一下,就当复习Trie。 找最长公共前缀也很容易,只要找到 next数组里有超过 阅读全文
posted @ 2018-12-03 13:59 約束の空 阅读(124) 评论(0) 推荐(0)
摘要:典型DP题,思路上和 LCS 很像。 dp[i][j] 表示word1前i个 word2前j个 所需的最小操作数。 base case: dp[i][0]=i, dp[0][j]=j. 需要额外注意这里的base case。 dp[i][j] = dp[i-1][j-1] if word1[i-1] 阅读全文
posted @ 2018-11-29 22:37 約束の空 阅读(136) 评论(0) 推荐(0)
摘要:方法一:PreOrder, Recursive Serialize a tree,最容易的还是前序遍历,用空格分开节点即可。 Deserialize 也很容易,递归即可。 方法二:LevelOrder 层次遍历,这种序列化的方式和leetcode序列化的方式基本一样。 Deserialize的时候同 阅读全文
posted @ 2018-11-22 11:15 約束の空 阅读(187) 评论(0) 推荐(0)
摘要:方法一:Set (BST) Set存放有人的index。 每次坐下时,遍历set找到最大的距离,并且记录位置,离开则直接删除目标数字。 注意一些边界情况和下标即可,最容易遗漏的就是最左边和最右边的位置。 时间复杂度 seat O(n),leave O(logn) 方法二:Set (BST) + Un 阅读全文
posted @ 2018-11-20 13:12 約束の空 阅读(272) 评论(0) 推荐(0)
摘要:方法一:DFS+Memoization dfs做最直接,但是会超时。 DFS+Memoization 实际就是把所有return的地方就保存到memo再return,时间复杂度O(n^2) 方法二:DP 我最开始想的时候,dp[i][j] 表示用j跳到i,可不可行。dp[0][0]=true, if 阅读全文
posted @ 2018-11-16 11:15 約束の空 阅读(224) 评论(0) 推荐(0)
摘要:题不难,但是考虑的时候要全面,很可能漏掉一些条件。 首先要判断棋子个数是否合法。由于X先动,所以X的个数要么比O多一个(O还没下),要么和O相等(O下好了)。 一开始我做的时候,只想到win的只可能一个,就用了一个count_win,判断是不是1。但是这样做是不对的,因为赢了以后,游戏是立即结束的, 阅读全文
posted @ 2018-11-14 09:45 約束の空 阅读(371) 评论(0) 推荐(0)
摘要:Graph+BFS/DFS 这道题最好想到的就是建立一个graph,两个节点的ratio就当做图的边保存下来。 query的时候,只要从一个节点开始,dfs或者bfs,把一路的ratio都乘起来即可。 用BFS来做: Union Find 用图来做,既需要大量空间,而且dfs和bfs的效率都不是很高 阅读全文
posted @ 2018-11-13 03:28 約束の空 阅读(595) 评论(0) 推荐(0)
摘要:Read N Characters Given Read4 这个题目和C里面读文件很像。 read4每次只能读四个字符,把字符放到buf里,返回值是实际读到的字符数。 而我们要做的是用read4实现一个能够读n个字符的函数 read,同样,读到的字符放到buf里。 if (count==0) bre 阅读全文
posted @ 2018-11-12 12:57 約束の空 阅读(374) 评论(0) 推荐(0)
摘要:DFS 最一开始想到的就是dfs,从题目给的点开始dfs搜索。 时间复杂度为O(mn) Binary Search 这道题给了一个坐标(x,y),其实是有用意的。如果只是单纯的搜索,我们完全可以搜索整个图。 这道题其实可以用二分来做。由于给定的点是黑的,我们可以从水平和竖直两个方向,分别找到由黑变白 阅读全文
posted @ 2018-11-12 09:19 約束の空 阅读(310) 评论(0) 推荐(0)
摘要:暴力模拟会超时。因此必须一行行直接放,不能一个个word放。 这种方法很巧妙,把word整合成一个string,单词间用空格分隔,最后也加一个空格。 用一个变量记录当前已经在screen上放了多少个字符,记为count。因此 count%n 下一个要放的字符。 对于每一行,先假设cols个字符都能放 阅读全文
posted @ 2018-11-12 05:46 約束の空 阅读(339) 评论(0) 推荐(0)
摘要:Subsets Subsets II 先排序,方便跳过重复元素。同一层递归中相同元素跳过。 Subsets 时间复杂度 T(n) = T(n-1)+T(n-2)+...+T(1)+T(0) -> T(n) = O(2^n) 如果考虑 res.push_back(cur) 是时间 O(n),那么总的时 阅读全文
posted @ 2018-11-11 23:06 約束の空 阅读(263) 评论(0) 推荐(0)
摘要:deep copy graph,图的问题。要copy首先要遍历,遍历图可以用dfs也可以bfs。 本题的关键在于,由于节点和节点之间连通,当前遍历的节点很可能之前就已经clone过了,此时就不需要再一次clone了,否则会出现问题。 因此,我们可以建立原节点与clone节点的映射,用一个unorde 阅读全文
posted @ 2018-11-11 10:18 約束の空 阅读(129) 评论(0) 推荐(0)
摘要:题目看着很吓人,实际就是模拟来做。 题目的意思其实是先看左边,每次找离k最近的局部最小值。左边不行才找右边,右边也不行就放在 heights[k]。 阅读全文
posted @ 2018-11-11 04:46 約束の空 阅读(420) 评论(0) 推荐(0)
摘要:先根据身高排序,高的在前。然后对people进行遍历(从高到矮放入队伍),对于当前的人来说,比他高的人都已经排好队了,因此只要根据k插入队伍即可。 代码非常简洁。 阅读全文
posted @ 2018-11-10 03:33 約束の空 阅读(120) 评论(0) 推荐(0)
摘要:一看就是用dp来做,但是这道题还是有点意思的。 dp[i] = sum_{coin} dp[i-coin] 上述的递推公式看似很对,但是会把重复的情况都考虑进去。举个例子,算dp[5]的时候,dp[5]=dp[0]+dp[4]+dp[3],但是之前算的dp[4]就是从dp[3]计算得到的。 解决办法 阅读全文
posted @ 2018-11-09 21:53 約束の空 阅读(128) 评论(0) 推荐(0)
摘要:Trie树主要用于字符串前缀匹配,树的根节点不存元素,其余节点存一个字符。对于一个字符串,其实就是顺着一条路径搜索的过程。 TrieNode节点有一个bool表示是否是一个word的结束,还有一个TrieNode *的数组,指向所有的孩子。 插入和搜索的时间复杂度都是 O(n),n表示给定字符串的长 阅读全文
posted @ 2018-11-09 11:58 約束の空 阅读(157) 评论(0) 推荐(0)
摘要:Solution 写的很好,怎么一步步到dp的 https://leetcode.com/problems/predict-the-winner/solution/ dp[i][j] 当前玩家从下标i~j的数组,能取得的比另一个玩家多的分数 base case dp[i][i]=nums[i] 每次 阅读全文
posted @ 2018-11-09 00:14 約束の空 阅读(121) 评论(0) 推荐(0)
摘要:很tricky的一道题,想通之后不难。 一个数组,从后往前找,找到第一个 nums[i]<nums[i+1] 的下标,因此下标 i+1 ~ n-1 的数组元素都是递减的,这一串序列已经是最大的了,找不到next permutation,因此我们必须找到 i ~ n-1 这一串序列的next perm 阅读全文
posted @ 2018-11-03 10:13 約束の空 阅读(142) 评论(0) 推荐(0)
摘要:高频题,需要用unordered_map和list,做到O(1)。unordered_map: key->iterator,而list的元素是pair(key,value) 是有好处的,这样我们就不用另外一个hashtable来记录 key->val。 至于为何要将key和value的pair作为l 阅读全文
posted @ 2018-11-02 07:54 約束の空 阅读(112) 评论(0) 推荐(0)

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