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 |