/leetcode

日常leetcode找工作(╯‵□′)╯︵┻━┻

Primary LanguageJava

LeetCode

id Title Solution Note
1 Two Sum C++
2 Add Two Numbers JAVA
3 Longest Substring Without Repeating Characters JAVA 维护前后两个指针
5 Longest Palindromic Substring JAVA dp做O(n^2),Manacher算法可以做到O(n)
6 ZigZag Conversion JAVA
7 Reverse Integer JAVA 神TM样例还越界了,最后居然上了trycatch
8 String to Integer (atoi) JAVA
9 Palindrome Number JAVA
10 Container With Most Water JAVA h[l]小于h[r]时左移l,舍弃了(l,r-1)(l,r-2)..这样的区间,这样的区间是比(l,r)的值小的
11 Integer to Roman JAVA
12 Roman to Integer JAVA
14 Longest Common Prefix JAVA
15 3Sum JAVA 快排nlgn,枚举一个数再维护前后两个指针遍历一共O(n^2),再处理一些重复答案的细节
16 3Sum Closest JAVA 和上道题思路相同
17 Letter Combinations of a Phone Number JAVA dfs
18 4Sum JAVA 和15思路相同O(n^3),再预判断一些可能的最小值和最大值可以大幅减少时间
19 Remove Nth Node From End of List JAVA 前后两个指针,后指针到底时删前指针的,头部单独处理
20 Valid Parentheses JAVA
21 Merge Two Sorted Lists JAVA 递归从尾部开始
22 Generate Parentheses JAVA 顺手测了下sb还是比string快多了
24 Swap Nodes in Pairs JAVA
26 Remove Duplicates from Sorted Array JAVA
27 Remove Element JAVA
28 Implement strStr() JAVA KMP
29 Divide Two Integers JAVA O(logn)实现除法
31 Next Permutation JAVA 根据全序列的定义模拟
34 Search for a Range JAVA 左右二分查找
35 Search Insert Position JAVA
36 Valid Sudoku JAVA 用二维数组来标记TF
38 Count and Say JAVA
39 Combination Sum JAVA dfs
40 Combination Sum II JAVA
43 Multiply Strings JAVA 大数相乘的逻辑,没处理好逻辑WA了好多发,Karatsuba可以做到O(n^1.58)
46 Permutations JAVA dfs不好处理已经用过的数,用数字对换做比较方便
47 Permutations II JAVA 没想通重复的原因,在46的基础上加了个答案判重,效率极低,哪天智商高点的时候再来想想
47 Permutations II JAVA 不用对换了,上dfs了,重复数字必须从前往后搜索
48 Rotate Image JAVA
49 Group Anagrams JAVA HashMap的使用、遍历;String、List的排序
50 Pow(x, n) [JAVA](./pow(x, n)/Pow.java) 先写了理论上也是二分的超时了,原因改天再想,换了种思路二分递归
53 Maximum Subarray JAVA O(n)最大子数组
54 Spiral Matrix JAVA 模拟
55 Jump Game JAVA
58 Length of Last Word JAVA
59 Spiral Matrix II JAVA
60 Permutation Sequence JAVA 神TM时间超过了99%的提交,写的有点难懂,大概就是取(n-i)!来判断第i位是什么
61 Rotate List JAVA
62 Unique Paths JAVA dp
63 Unique Paths II JAVA dp
64 Minimum Path Sum JAVA dp三连
66 Plus One JAVA
67 Add Binary JAVA
69 Sqrt(x) JAVA
70 Climbing Stairs JAVA dp
71 Simplify Path JAVA
73 Set Matrix Zeroes JAVA
74 Search a 2D Matrix JAVA 标准二分
75 Sort Colors JAVA
77 Combinations JAVA
78 Subsets JAVA
79 Word Search JAVA
80 Remove Duplicates from Sorted Array II JAVA
33 Search in Rotated Sorted Array JAVA 二分,逻辑有点乱,自己都不知道怎么过的
81 Search in Rotated Sorted Array II JAVA 上一道题的加强版,逻辑理清了二分还是很简单的
82 Remove Duplicates from Sorted List II JAVA 做了补头不补头两个版本,这种涉及头部变化的最好补头,不然逻辑很乱
83 Remove Duplicates from Sorted List JAVA 上一道题的弱化版,最直观的就是头部不会变化了,这种就不用补头,而且特简单
86 Partition List JAVA 现在想想只要不重新申请一个链表出来,申请个头部、几个指针什么的还是合理的,而且会让问题很简单,没有必要非要在原链表上进行直接操作
88 Merge Sorted Array JAVA 从后往前避免覆盖
89 Gray Code JAVA
90 Subsets II JAVA 78上加一行
91 Decode Ways JAVA dp
92 Reverse Linked List II JAVA 三个指针翻转
93 Restore IP Addresses JAVA
94 Binary Tree Inorder Traversal JAVA 标准中序遍历
95 Unique Binary Search Trees II JAVA 二叉搜索树的生成,递归有点绕,回头再做一遍(而且做的其实不严谨,这里面的下层节点都用的一个引用,这些生成的搜索树都没有分开)
96 Unique Binary Search Trees JAVA 95的逻辑,dp
98 Validate Binary Search Tree JAVA BST的定义是左子树的所有节点都要比根节点小,右同,因此用min、max对子树进行界限规定,使用Integer可取null值表示不受限
98 Validate Binary Search Tree JAVA BST的中序遍历是递增数列,以此判断,效率不如上面的做法
100 Same Tree JAVA
101 Symmetric Tree JAVA 100改一行
102 Binary Tree Level Order Traversal JAVA bfs
103 Binary Tree Zigzag Level Order Traversal JAVA bfs,往头部添加元素用LinkedList
104 Maximum Depth of Binary Tree JAVA bfs
104 Maximum Depth of Binary Tree JAVA dfs
105 Construct Binary Tree from Preorder and Inorder Traversal JAVA 前序中序构造树
105 Construct Binary Tree from Preorder and Inorder Traversal JAVA 这道题测试用例的原因,导致把从前往后查找改成从后往前查找就超过了99%的提交,我还以为那些快的是什么新方法呢
106 Construct Binary Tree from Inorder and Postorder Traversal JAVA 中序后序构造树
107 Binary Tree Level Order Traversal II JAVA
108 Convert Sorted Array to Binary Search Tree JAVA
109 Convert Sorted List to Binary Search Tree JAVA 快慢指针+二分O(nlogn)超时了,转数组后108解O(n)即可
56 Merge Intervals JAVA
110 Balanced Binary Tree JAVA
111 Minimum Depth of Binary Tree JAVA
112 Path Sum JAVA
113 Path Sum II JAVA
114 Flatten Binary Tree to Linked List JAVA
116 Populating Next Right Pointers in Each Node JAVA bfs
116 Populating Next Right Pointers in Each Node JAVA dfs递归
117 Populating Next Right Pointers in Each Node II JAVA 116 bfs 一模一样