3Sum Closest | O(n^2) 求三个数字之和最接近target的数字,排序后循环一层,接下去两端向中间靠拢 | 80ms |
3Sum | O(n^2) 求3个数字之和为0的组合,同上,注意去重 | 250ms |
4Sum | O(n^3) 求4个数字之和为0的组合,同3Sum,第三层循环两端向中间靠拢 | 250ms |
O(n^2log(n))+大常数 将原数组两两相加组成一个二元组(num[i]+num[j],i,j),接着对原数组两层for循环并对二元组二分取值,用下标保证不重复 | 1100ms | |
Add Binary | 模拟二进制加法,一个for循环 | 20ms |
Add Two Numbers | 链表加法,同上,一个for循环 | 200ms |
Anagrams | 选取strs中由相同字符构成的串,用map<\string,vector<\string> >解决,排序后的str做key,然后把原值塞进vector中 | 250ms |
Balanced Binary Tree | 检查是否是二叉平衡树,任意节点的左右子树高度差不超过1,递归解决 | 68ms |
Best Time to Buy and Sell Stock III | O(n) 知道股票每日价格,只能交易两笔,卖了之后才能买,两边DP | 60ms |
Best Time to Buy and Sell Stock II | O(n) 知道股票每日价格,可以交易任意笔,差值求和 | 48ms |
Best Time to Buy and Sell Stock | O(n) 知道股票每日价格,只能交易一笔,记录最小值 | 56ms |
Binary Tree Inorder Traversal | in-order遍历二叉树 | 12ms |
Binary Tree Level Order Traversal II | 简单遍历二叉树,从叶子到根的顺序装进vector | 132ms |
Binary Tree Level Order Traversal | 简单遍历二叉树,从根到叶子的顺序装进vector | 24ms |
Binary Tree Maximum Patd Sum | 简单树形DP,权值之和最大的一段路径 特别要注意负数 | 152ms |
Binary Tree Zigzag Level Order Traversal | 简单遍历二叉树,从根到叶子,奇数层从左到右,偶数层从右到左 | 28ms |
Climbing Stairs | Fibonacci | 12ms |
Combination Sum II | 简单递归,从数组C中找一些数字组使这些数字和为T,一个数字用一次,且答案不能重复 | 60ms |
Combination Sum | 简单递归,从数组C中找一些数字组使这些数字和为T,一个数字用任意次 | 60ms |
Combinations | 简单递归,列出所有k个数字(1-n)的组合 | 56ms |
Construct Binary Tree from Inorder and Postorder Traversal | 知道中序和后序,构建树,要注意内存 | 168ms |
Construct Binary Tree from Preorder and Inorder Traversal | 知道中序和前序,构建树,要注意内存 | 176ms |
Container With Most Water | 一排直线,找两条线使得能装下的水最多 | 100ms |
Convert Sorted Array to Binary Search Tree | 以排好序的数组生成BST,找到中间节点,用preorder生成 | 92ms |
Convert Sorted List to Binary Search Tree | 已排好序的链表生成BST,先得到长度,然后用inorder来生成 | 164ms |
Count and Say | 简单模拟 1->11->21->1211->... | 20ms |
Decode Ways | 简单DP O(n) 把字符串分段使得每一段都是1-26的方法数 | 16ms |
Distinct Subsequences | 简单DP O(n*m) 有多少个S的子串包含T 注意边界 | 72ms |
Divide Two Integers | 模拟除法,用位运算,注意边界,int转正数会溢出,转成负数做 | 64ms |
Edit Distance | O(n*m) 最短编辑距离 注意边界 | 140ms |
First Missing Positive | 找到最小不存在的正整数,O(1)空间 | 20ms |
Flatten Binary Tree to Linked List | 将二叉树重构,只有右儿子 | 52ms |
Generate Parentheses | 简单递归 生成匹配的括号 | 12ms |
Gray Code | 格雷码 公式i^(i>>1) | 36ms |
Implement strStr() | KMP | 28ms |
Insert Interval | 一个区间和一组有序区间合并 | 72ms |
Integer to Roman | 数字翻译成罗马数字 | 128ms |
Interleaving String | 看s1和s2能不能合并成s3 | 16ms |
Jump Game II | 每个位子可以跳到val远处,问起点到终点的最小步数 | 52ms |
Jump Game | 每个位子可以跳到val远处,问起点能不能跳到终点 | 52ms |
Largest Rectangle in Histogram | 经典问题,最大矩形 left+right | 100ms |
用一个递增栈来做 | 100ms | |
Length of Last Word | 最后一个词的长度 优美解法 | 32ms |
Letter Combinations of a Phone Number | 递归 手机号码和字符的组合数 | 12ms |
Longest Common Prefix | 一组字符串的最长相同前缀 | 24ms |
Longest Consecutive Sequence | 乱序数组中最长的连续数字 用unordered_set O(n) | 64ms |
Longest Palindromic Substring | 最长回文 O(n) | 40ms |
Longest Substring Without Repeating Characters | 字符串中最长不重复的字符 纯O(n) 两种做法,比较优美 | 50ms |
Longest Valid Parentheses | 最长合法圆括号数 | 40ms |
Maximal Rectangle | 二维的Largest Rectangle in Histogram | 72ms |
Maximum Depth of Binary Tree | 树的最长深度 | 44ms |
Maximum Subarray | 最大子序列 | 44ms |
Median of Two Sorted Arrays | 两个排序数组的中位数 | 192ms |
Merge Intervals | 合并区间 O(nlogn) | 88ms |
Merge k Sorted Lists | 合并k个有序链表 O(nlogm) 注意写比较器 | 84ms |
Merge Sorted Array | 将有序数组A,B合并到A中,O(1)内存,倒序 | 32ms |
Merge Two Sorted Lists | 合并两个有序链表,新链表要用原链表拼接 | 60ms |
Minimum Depth of Binary Tree | 根节点到最近的叶子节点的距离 | 52ms |
Minimum Path Sum | 从左上角向下向右走到右下角的最短距离 简单二维DP | 76ms |
Minimum Window Substring | 从S中找到包含T所有字符的最小子串 , O(n) | 60ms |
Multiply Strings | 大数乘法 | 36ms |
N-Queens II | 输出方案数 位运算 | 60ms |
N_Queens | 输出方案 同上 | 16ms |
Next Permutation | 下一个组合数,要求O(n) | 68ms |
Palindrome Number | 判断数字回文 O(1)空间 | 288ms |
Palindrome Partitioning II | 最小几刀将一个串切成全部都是回文串 | 188ms |
Palindrome Partitioning | 将一个串切分成全部都是回文串 | 52ms |
Partition List | 将链表中小于x的归到左边,并保持原顺序不变 | 48ms |
Pascal's Triangle II | 杨辉三角 O(n)空间输出第n行 | 8ms |
Pascal's Triangle | 杨辉三角 | 16ms |
Path Sum II | 输出从根节点到叶子距离为sum的path | 72ms |
Path Sum | 跟加点到叶子的距离是否有和为sum | 64ms |
Permutation Sequence | 第K个组合数 | 12ms |
Permutations II | 有相同数字的组合数 | 164ms |
Permutations | 不同数字的组合数 | 84ms |
Plus One | 大数+1 | 20ms |
Populating Next Right Pointers in Each Node II | 任意二叉树的邻指针 用O(1)的空间bfs | 160ms |
Populating Next Right Pointers in Each Node | 完全二叉树的邻指针 | 128ms |
Pow(x, n) | 模拟pow(double,int) 注意n的int范围,正负 | 20ms |
Recover Binary Search Tree | 树中两个元素错位,要求修复并用O(1)的空间,前序遍历记录上一个节点 | 308ms |
Regular Expression Matching | 正则表达式.*匹配 | 48ms |
Remove Duplicates from Sorted Array II | 使有序数组中只保留最多两份相同数字 | 92ms |
Remove Duplicates from Sorted Array | 把有序数组中相同的数字去掉 | 68ms |
Remove Duplicates from Sorted List II | 有序链表中将有重复的数字全部去掉 | 68ms |
Remove Duplicates from Sorted List | 有序链表去重 | 80ms |
Remove Element | 给一个元素和一个数组,把这个数组中等于这个元素的去掉 | 20ms |
Remove Nth Node From End of List | 把指针的倒数第N个节点去掉 | 20ms |
Restore IP Addresses | 一串数字,转成IP地址 | 24ms |
Reverse Integer | 翻转int | 32ms |
Reverse Linked List II | 链表n到m个数字翻转 | 20ms |
Reverse Nodes in k-Group | 将链表以k个一组翻转 | 144ms |
Roman to Integer | 罗马数字转阿拉伯数字 | 172ms |
Rotate Image | 顺时针翻转n*n矩阵,in-place | 32ms |
Rotate List | 将链表右移k位 | 72ms |
Same Tree | 判断两个二叉树是否相等 | 12ms |
Scramble String | 判断一个字符串能否以二叉树选择成另外一个,O(n^3)空间,O(n^4)时间 | 76ms |
Search a 2D Matrix | 在n*m的有序矩阵中找一个数 | 72ms |
Search for a Range | lower_bound和upper_bound | 68ms |
Search in Rotated Sorted Array II | 同上题,不过有有重复数字,极限情况会退化成O(n) | 56ms |
Search in Rotated Sorted Array | 在旋转过的且唯一的有序数组中二分查找 | 24ms |
Search Insert Position | lower_bound | 40ms |
Set Matrix Zeroes | 如果有某个数字是0,那么把这行这列都设置为0,in-place,用第一行第一列记录,注意顺序 | 372ms |
Simplify Path | 将unix的文件路径化简,用stringstream和栈来做 | 48ms |
Sort Colors | 0,1,2数组的排序,一个循环 | 28ms |
Spiral Matrix II | 回字形填充矩阵 | 24ms |
Spiral Matrix | 回字形遍历矩阵 | 16ms |
Sqrt(x) | 模拟整数开平方 , 二分 , 用除法 | 48ms |
String to Integer (atoi) | 模拟atoi , 只返回第一部分的值 , 注意int范围 | 52ms |
Subsets II | 有重复数字的所有子串 | 60ms |
Subsets | 组数的子串 | 40ms |
Substring with Concatenation of All Words | 在S中找到恰好包含vector L的所有子串 O(S.length() * L[0].length()) | 244 |
Sudoku Solver | 解数独,唯一解,dfs | 24ms |
Sum Root to Leaf Numbers | 二叉树根到叶子的组成的数字的和 | 24ms |
Surrounded Regions | 将被X包围的O变成X | 48ms |
Swap Nodes in Pairs | 交换链表奇偶的节点 | 20ms |
Symmetric Tree | 判断树是否对称 | 24ms |
Text Justification | 文字排版 | 12ms |
Trapping Rain Water | 一个数组代表木条的高度,问这组容器能积多少水 , 一次循环,两边向中间 | 56ms |
Triangle | 数塔 | 44ms |
Two Sum | 找两个数字和等于target | 28ms |
Unique Binary Search Trees II | 输出BST的所有方案 | 120ms |
Unique Binary Search Trees | 输出BST的所有方案数 | 68ms |
Unique Paths II | 从左上角走到右下角的方案数,有障碍物 | 24ms |
Unique Paths | 从左上角走到右下角的方案数 | 12ms |
Valid Number | 判断字符串是否是个合法数字, " -1.2e+3 " 9个状态的自动机 | 24ms |
Valid Palindrome | 判断一个字符串是否是回文,只考虑大小写数字,大小写不care | 52ms |
Valid Parentheses | 判断(){}[]是否合法,stack O(n) | 48ms |
Valid Sudoku | 判断数独已经填了的数字是否冲突 | 48ms |
Validate Binary Search Tree | 判断一个树是否是BST | 64ms |
Wildcard Matching | 模拟通配符匹配 O(1)空间 | 88ms |
Word Ladder II | 从一个词到另一个词的方案,要求相邻的单词相差1且出现才多给的词典中 | 1036ms |
Word Ladder | 从一个词到另一个词的距离,要求相邻的单词相差1且出现才多给的词典中 | 1004ms |
Word Search | 在二维矩阵中找一个串,字母不能重复用,暴力dfs | 88ms |
ZigZag Conversion | Z字型遍历字符串 | 92ms |
forked from notonlysuccess/leetcode
-
Notifications
You must be signed in to change notification settings - Fork 4
wolf5x/leetcode
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
solution for leetcode.com
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published