Leetcode解题总结
milesfei
这个作者很懒,什么都没留下…
展开
-
Longest Valid Parentheses
Longest Valid Parentheses动态规划思路一(未实现):从右端开始遍历,寻找 '(' 到末尾所构成的最大长度,根据存储的dp数组跳跃判断思路二(python实现):类似思路一,只不过遍历的时候不找全局最大,而是局部最大,类似贪心,存储之后再返回计算具体过程如下:) ( ) ( ( ( ) ) ( ( ( ) ( ) ) )01211124原创 2015-01-05 17:52:53 · 261 阅读 · 0 评论 -
Text Justification
Text Justification字符串操作,做好计数器和边界条件即可原创 2014-12-19 11:00:11 · 202 阅读 · 0 评论 -
Minimum Window Substring
Minimum Window Substring用一个滑动的窗口寻找,注意记录下 T 中各个字母的个数,并存放在字典中,提高查找效率滑动窗口:先从左边开始增大,直到包含了 T 中所有字母(注意包括重复个数)然后尝试缩小窗口,从左边开始缩小,直到不能缩小,然后再从右边开始增大增大到遇到窗口左边的第一个字母(因为不然左边一直不能缩小)如此循环到最右边,过程中注意记录最小窗口即可原创 2014-12-19 11:48:57 · 270 阅读 · 0 评论 -
Maximal Rectangle
Maximal Rectangle寻找最大的矩形,一开始最没有思路的一道题这题可以转化为 Largest Rectangle in Histogram将每一行进行转换,逐行计算即可原创 2014-12-19 15:45:45 · 295 阅读 · 0 评论 -
Edit Distance 动态规划
Edit Distance思路来源:https://oj.leetcode.com/discuss/10426/my-o-mn-time-and-o-n-space-solution-using-dp-with-explanationMy O(mn) time and O(n) space solution using DP with explanation转载 2014-12-19 10:10:13 · 361 阅读 · 0 评论 -
Word Ladder II
Word Ladder II思想同第一题,只是如何记录的问题如果暴力记录(每次记录全路径),会出现MLE,内存越界所以我们采用第一题的记录方法,只记录每一层出现的单词,不记录路径在找到end之后,再构造路径构造路径时,就可以遍历每一层中存储的单词来匹配,因为每一层中的单词很少(相对于字典)而且要以end为起点构造,这样得到的路径就会删掉与最短路径相同长度但是没有到达end的原创 2014-12-18 22:41:36 · 268 阅读 · 0 评论 -
Palindrome Partitioning II
Palindrome Partitioning II两个dp记录数组首先一个二维数组记录每一段是否是回文,O(n^2)可完成再一个数组,记录长度为1,2,3...n 的字符串需要几次分割,该数组的每一项的计算都与其前面所有的数有关,也是O(n^2)最终 O(n^2)原创 2014-12-18 21:15:21 · 200 阅读 · 0 评论 -
Copy List with Random Pointer
Copy List with Random Pointer关键在如何记录 Random Pointer 而且要对应方法如下:原来的链表假设为:1 --> 2 --> 3 --> 4 --> None新建的节点插入到这个链表中,变成:1 --> 1* --> 2 --> 2* --> 3 --> 3* --> 4 --> 4* --> None之后遍历一遍赋值Random原创 2014-12-18 11:39:31 · 232 阅读 · 0 评论 -
LRU Cache
LRU Cache关键点在LRU Cache如何实现快速记录和更新最直观的是每次遍历搜索,删除之并插到尾部想要提高速度,可以用map(dict)这种查询时间为O(1)的作为存储,自定义一个节点类,包含next指针即可原创 2014-12-17 20:54:35 · 233 阅读 · 0 评论 -
Sort Colors,Search in Rotated Sorted Array I,II,Merge Intervals,Insert Interval,Subsets II
Sort Colors与其所用快排,不如说用计数排序呢原创 2014-12-01 14:24:34 · 358 阅读 · 0 评论 -
Largest Rectangle in Histogram
Largest Rectangle in Histogram用一个栈,存储递增序列即可,而且不需要每一步算一次,只需要在pop的时候计算原创 2014-12-17 20:05:08 · 197 阅读 · 0 评论 -
Longest Consecutive Sequence,Distinct Subsequences,Interleaving String,Scramble String
Longest Consecutive Sequence并查集OK原创 2014-12-16 11:17:08 · 317 阅读 · 0 评论 -
Gas Station
Gas Station不妨设车站为:A,B,C,D,E,F原创 2014-11-14 21:53:26 · 225 阅读 · 0 评论 -
Substring with Concatenation of All Words
Substring with Concatenation of All Words用哈希表记录各个单词出现的次数即可原创 2015-01-06 13:16:45 · 218 阅读 · 0 评论 -
Compare Version Numbers,Fraction to Recurring Decimal
Compare Version Numbers简单字符串操作原创 2014-12-17 11:32:57 · 285 阅读 · 0 评论 -
Maximum Gap
Maximum GapAnalysis written by @porker2008.Suppose there are N elements and they range from A toB.Then the maximum gap will be no smaller than ceiling[(B - A) / (N - 1)]Let the length转载 2014-12-15 22:36:10 · 304 阅读 · 0 评论 -
Wildcard Matching
Wildcard Matching字符串的模式匹配,类似正则总体思想:把模式串按照 * 分割成字串,如果匹配串中按顺序分布着这些字串,那么就OK本着这个思想实现的是:贪心算法方法一,用字串比较的方法:class Solution: # @param s, an input string # @param p, a pattern string #原创 2015-01-09 15:39:47 · 313 阅读 · 0 评论 -
Find Peak Element,Longest Substring Without Repeating Characters
Find Peak Element根据题目描述可知,相邻元素不相同,有且只有一个峰值(这个峰值一定是最大值,不过分析出该条件没有用,哈哈)只需寻找峰值即可,二分,每次比较中点及与中点相邻的元素即可(因为相邻元素不相同)细节处理:区间只有两个或一个元素的时候原创 2014-12-05 16:10:46 · 247 阅读 · 0 评论 -
Max Points on a Line
Max Points on a Line可优化时间到O(n^2) (如果用unordered_map做存储的话)(map做存储的话是O(n^2 * logn),查找需要O(logn) )以一个点为基准,遍历其他点,存储 x,y 坐标差的最简分数形式(避免用double类型的斜率),寻找该点与后面遍历的点构成的直线上最多的点数只需比较该点与后面的点构成的直线,前面的已经考虑过了(在之前的原创 2014-12-05 22:47:34 · 283 阅读 · 0 评论 -
N-Queens I,II, Trapping Rain Water
N-Queens I,II简单栈操作,注意简化判断即可原创 2015-01-04 15:00:52 · 348 阅读 · 0 评论 -
Binary Search Tree Iterator,Reverse Nodes in k-Group
Binary Search Tree Iterator改 非递归中序遍历 即可原创 2015-01-03 14:11:29 · 264 阅读 · 0 评论 -
Permutations II,Sudoku Solver,Merge k Sorted Lists
Permutations II思路同 Permutations 那题相同,只需多加一条判断即可原创 2015-01-03 14:32:46 · 238 阅读 · 0 评论 -
Longest Palindromic Substring,Container With Most Water
Longest Palindromic Substring纯暴力太慢,二分的话要注意奇偶分开简单暴力加剪枝就能过,剪枝方法类似一个滑动窗口,也是奇偶分开,先找长度为3的,找到了的话找长度为5的,再找到的话找7的,一个窗口不断向后滑动未实现想法:后缀树可以参看“研究者July的文章”并另行百度研究之原创 2014-12-15 18:05:27 · 210 阅读 · 0 评论 -
Majority Element
Majority ElementRuntime: O(n2) — Brute force solution: Check each element if it is the majority element.Runtime: O(n), Space: O(n) — Hash table: Maintain a hash table of the counts of each eleme转载 2014-12-30 14:51:34 · 314 阅读 · 0 评论 -
Factorial Trailing Zeroes
Factorial Trailing ZeroesGiven an integer n, return the number of trailing zeroes in n!.Note: Your solution should be in logarithmic time complexity.Credits:Special thanks to @ts for a原创 2014-12-30 16:01:45 · 286 阅读 · 0 评论 -
Excel Sheet Column Title,Excel Sheet Column Number
Excel Sheet Column Title相当于十进制转换为26进制,不过注意转换后的26进制没有0元素,注意细节转换即可原创 2014-12-30 11:27:48 · 367 阅读 · 0 评论 -
Candy
Candy该题要求返回的是最少的给的糖的数目,所以不需要更新数组中每一个位置是如何分配的,只需要统计升降区间的长度其实状态分为三种:1 -- go Down,2 -- go Flat,3 -- go Up我们只需处理九中情况,即上面三种状态互相转换时如何处理计数器思路启发与讨论中该贴:https://oj.leetcode.com/discuss/13841/easy-unders原创 2014-12-11 22:52:59 · 295 阅读 · 0 评论 -
Largest Number
Largest NumberGiven a list of non negative integers, arrange them such that they form the largest number.For example, given [3, 30, 34, 5, 9], the largest formed number is9534330.Note: The r原创 2015-01-15 20:44:35 · 276 阅读 · 0 评论 -
Anagrams,Permutations,Multiply Strings
Anagrams回文构词法该题目的意思是,把互相为回文的单词找到,并全部输出互相为回文的意思是,两个单词中字母相同,只是字母顺序不同该题用一个map存储即可,key为单词按照字母顺序把字母重排后得到的字符串由于题目中说明单词中只有小写字母,所以可以用大写字母作为记录标识原创 2014-12-10 16:09:37 · 263 阅读 · 0 评论 -
Combination Sum I,II,Divide Two Integers
Combination Sum递归即可原创 2014-12-10 20:53:41 · 456 阅读 · 0 评论 -
Rotate List,Permutation Sequence,Next Permutation
Rotate List循环移位链表,处理一下循环次数之后,拆分链表再合并即可,简单的链表操作原创 2014-12-09 20:49:46 · 262 阅读 · 0 评论 -
Construct Binary Tree from Preorder (Postorder) and Inorder Traversal
Construct Binary Tree from Preorder and Inorder Traversal通过二叉树的 前序遍历序列 和 中序遍历序列 重构二叉树步骤:1、遍历前序遍历序列,每次遍历一个值,创建一个节点,并将节点压入栈,新创建的节点连接为栈顶节点的左孩子节点(如果第2步中的记录pop的节点非空,那么连接为该记录节点的右孩子)2、每次压入新节点后需要进行一次比原创 2014-12-08 20:46:40 · 309 阅读 · 0 评论 -
Generate Parentheses,Maximum Subarray
Generate Parentheses递归即可原创 2014-12-08 21:34:44 · 287 阅读 · 0 评论 -
Dungeon Game 动态规划
Dungeon Game这题用动态规划提示:从右下角的位置开始计算每一个格子中的数字取决于其右边和下边的计算结果,并和格子中原来的数字做计算得到原创 2015-01-12 15:39:01 · 338 阅读 · 0 评论 -
Word Ladder, Gray Code
Word Ladder不要遍历dict,原创 2014-11-24 19:41:28 · 266 阅读 · 0 评论 -
Binary Tree Maximum Path Sum,Unique Binary Search Trees I,II, Recover Binary Search Tree
Binary Tree Maximum Path Sum递归遍历树,同时计算以每个节点为根的子树的最大和路径的和值原创 2014-11-29 20:53:09 · 200 阅读 · 0 评论 -
Binary Tree Preorder, Inorder, Postorder Traversal,Flatten Binary Tree to Linked List
Binary Tree Preorder Traversal树的基本遍历,前序遍历,递归非递归都要原创 2014-11-20 11:09:58 · 257 阅读 · 0 评论 -
Valid Palindrome,Pascal's Triangle I&II,Path Sum,Minimum Depth of Binary Tree
Valid Palindrome简单字符串处理Pascal's Triangle I&II简单数学,注意原创 2014-10-17 15:22:37 · 415 阅读 · 0 评论 -
Balanced Binary Tree,Binary Tree Level Order Traversal I&II,Maximum Depth of Binary Tree,Plus One
Balanced Binary Tree地柜遍历原创 2014-10-17 23:19:18 · 385 阅读 · 0 评论 -
Sum Root to Leaf Numbers,Path Sum II
Sum Root to Leaf Numbers简单树操作,层先法遍历即可原创 2014-11-18 15:01:00 · 229 阅读 · 0 评论