From e90f60d5a85d3b363cc6d7da56e5ee3b5a5efe33 Mon Sep 17 00:00:00 2001 From: yuanguangxin <274841922@qq.com> Date: Sat, 15 Feb 2020 02:25:13 +0800 Subject: [PATCH] update md --- .idea/workspace.xml | 117 +++++++++++++++++++------------- Rocket.md | 1 + src/q10/Solution.java | 60 ++++++++++++++++ src/q110/{ => q1}/Solution.java | 4 +- src/q110/{ => q1}/TreeNode.java | 2 +- src/q110/q2/Solution.java | 26 +++++++ src/q110/q2/TreeNode.java | 11 +++ src/q22/f1/Solution.java | 50 ++++++++++++++ src/q22/f2/Solution.java | 34 ++++++++++ src/q94/Solution.java | 3 + 10 files changed, 257 insertions(+), 51 deletions(-) create mode 100644 src/q10/Solution.java rename src/q110/{ => q1}/Solution.java (90%) rename src/q110/{ => q1}/TreeNode.java (88%) create mode 100644 src/q110/q2/Solution.java create mode 100644 src/q110/q2/TreeNode.java create mode 100644 src/q22/f1/Solution.java create mode 100644 src/q22/f2/Solution.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 9b66a1a..62443b0 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,8 +2,17 @@ - + + + + + + + + + + + - @@ -78,13 +87,13 @@ - + - - - - @@ -217,7 +226,7 @@ - + 1580045439607 @@ -324,7 +333,14 @@ - @@ -346,7 +362,8 @@ - @@ -361,66 +378,70 @@ - + - - + + - - + + - - - + + + - - - + + + - - - + + + - - - + + + - + - + - + - + - + - + - + - + + + + + - - + + - + diff --git a/Rocket.md b/Rocket.md index 3c70419..71d7c48 100644 --- a/Rocket.md +++ b/Rocket.md @@ -205,6 +205,7 @@ Read View判断行的可见性,创建一个新事务时,copy一份当前系 (4)where对null判断 (5)where不等于 (6)or操作有至少一个字段没有索引 +(7)需要回表的查询结果集过大(超过配置的范围) 11. 数据库优化指南 diff --git a/src/q10/Solution.java b/src/q10/Solution.java new file mode 100644 index 0000000..245dc27 --- /dev/null +++ b/src/q10/Solution.java @@ -0,0 +1,60 @@ +package q10; + +public class Solution { + public boolean isMatch(String s, String p) { + int i = 0; + int j = 0; + while (i < s.length()) { + char sc = s.charAt(i); + if (j >= p.length()) { + return false; + } + char pc = p.charAt(j); + + if (j + 1 < p.length()) { + if (p.charAt(j + 1) == '*') { + if (pc == '.') { + j+=2; + break; + } else if (pc == sc) { + while (i < s.length() && s.charAt(i) == pc) { + i++; + } + } + j += 2; + } else { + if ((sc == pc) || (pc == '.')) { + i++; + j++; + } else { + return false; + } + } + } else { + if ((sc == pc) || (pc == '.')) { + i++; + j++; + } else { + return false; + } + } + } + + while (j < p.length()) { + if (p.charAt(j) == '*') { + j++; + } else { + if (j + 1 < p.length() && p.charAt(j) == '*') { + j += 2; + } else { + return false; + } + } + } + return true; + } + + public static void main(String[] args) { + System.out.println(new Solution().isMatch("aaa", "a*a")); + } +} diff --git a/src/q110/Solution.java b/src/q110/q1/Solution.java similarity index 90% rename from src/q110/Solution.java rename to src/q110/q1/Solution.java index 93ffaff..b02fe7c 100644 --- a/src/q110/Solution.java +++ b/src/q110/q1/Solution.java @@ -1,7 +1,7 @@ -package q110; +package q110.q1; /** - * o(n^2) 可修改getHeight(),在求树高后先判断是否平衡,将复杂度降为o(n) + * 从顶至底遍历 o(n^2) */ public class Solution { diff --git a/src/q110/TreeNode.java b/src/q110/q1/TreeNode.java similarity index 88% rename from src/q110/TreeNode.java rename to src/q110/q1/TreeNode.java index d9993fc..e6bf583 100644 --- a/src/q110/TreeNode.java +++ b/src/q110/q1/TreeNode.java @@ -1,4 +1,4 @@ -package q110; +package q110.q1; public class TreeNode { int val; diff --git a/src/q110/q2/Solution.java b/src/q110/q2/Solution.java new file mode 100644 index 0000000..bf6d881 --- /dev/null +++ b/src/q110/q2/Solution.java @@ -0,0 +1,26 @@ +package q110.q2; + +/** + * 从底至顶遍历 o(n) + */ +public class Solution { + + public boolean isBalanced(TreeNode root) { + return depth(root) != -1; + } + + private int depth(TreeNode root) { + if (root == null) { + return 0; + } + int left = depth(root.left); + if (left == -1) { + return -1; + } + int right = depth(root.right); + if (right == -1) { + return -1; + } + return Math.abs(left - right) < 2 ? Math.max(left, right) + 1 : -1; + } +} diff --git a/src/q110/q2/TreeNode.java b/src/q110/q2/TreeNode.java new file mode 100644 index 0000000..c11213c --- /dev/null +++ b/src/q110/q2/TreeNode.java @@ -0,0 +1,11 @@ +package q110.q2; + +public class TreeNode { + int val; + TreeNode left; + TreeNode right; + + TreeNode(int x) { + val = x; + } +} diff --git a/src/q22/f1/Solution.java b/src/q22/f1/Solution.java new file mode 100644 index 0000000..ce9a5ba --- /dev/null +++ b/src/q22/f1/Solution.java @@ -0,0 +1,50 @@ +package q22.f1; + +import java.util.*; + +/** + * 暴力法 o(2^2n*n) + */ +public class Solution { + + public boolean isValid(String s) { + Stack stack = new Stack<>(); + for (int i = 0; i < s.length(); i++) { + char t = s.charAt(i); + if (t == '(') { + stack.push(t); + } else { + if (stack.empty() || stack.pop() != '(') { + return false; + } + } + } + return stack.empty(); + } + + public List generateParenthesis(int n) { + List rs = new ArrayList<>(); + + if (n < 1) { + return rs; + } + String root = "("; + rs.add(root); + for (int k = 0; k < 2 * n - 1; k++) { + List tempList = new ArrayList<>(); + for (int i = 0; i < rs.size(); i++) { + String temp = rs.get(i); + tempList.add(temp + "("); + tempList.add(temp + ")"); + } + rs.clear(); + rs.addAll(tempList); + } + rs.removeIf(s -> !isValid(s)); + return rs; + } + + public static void main(String[] args) { + new Solution().generateParenthesis(3); + } +} diff --git a/src/q22/f2/Solution.java b/src/q22/f2/Solution.java new file mode 100644 index 0000000..9ca1e14 --- /dev/null +++ b/src/q22/f2/Solution.java @@ -0,0 +1,34 @@ +package q22.f2; + +import java.util.ArrayList; +import java.util.List; + +/** + * 回溯法 o((4^n)/(n^1/2)) + */ +public class Solution { + + public List generateParenthesis(int n) { + List ans = new ArrayList(); + backtrack(ans, "", 0, 0, n); + return ans; + } + + public void backtrack(List ans, String cur, int open, int close, int max) { + if (cur.length() == max * 2) { + ans.add(cur); + return; + } + + if (open < max) { + backtrack(ans, cur + "(", open + 1, close, max); + } + if (close < open) { + backtrack(ans, cur + ")", open, close + 1, max); + } + } + + public static void main(String[] args) { + System.out.println(new Solution().generateParenthesis(3)); + } +} diff --git a/src/q94/Solution.java b/src/q94/Solution.java index 7ca4c6d..818673a 100644 --- a/src/q94/Solution.java +++ b/src/q94/Solution.java @@ -4,6 +4,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Stack; +/** + * 非递归 o(n) + */ public class Solution { public List inorderTraversal(TreeNode root) { List rs = new ArrayList<>();