diff --git a/.gitignore b/.gitignore
index 4201a9b07ad7138bb4164c14d60450410d09c9db..67d3034b21223c431c42d563b017f27f7cfe423b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,3 +4,5 @@
/app/app.iml
build
out/
+*.class
+./code_java/classes
\ No newline at end of file
diff --git a/README.md b/README.md
index b921417f5a4d4558bab22e53f1a7d281b154709f..06fb91fb8a2d73fd1b2cecd89c18d2dbebf3f34b 100644
--- a/README.md
+++ b/README.md
@@ -1,437 +1,43 @@
-# Leetcode 学习与总结
+# 每日力扣
-[Leetcode全量题目](LeetCode全部题目.md)
+1. [每日打卡](每日打卡.md)
+2. [LeetCode全部题目](LeetCode全部题目.md)
+3. [LeetCode题目分类](LeetCode题目分类.md)
+4. [其它题目](extras.md)
-## 一、题目列表
+## 电子书
-| # | TitleEN | TitleCN | Level | [Java](code_java/README.md) | [C++](code_cpp/README.md) | [Python](code_python\README.md) | Go | Remark |
-| ---- | ------------------------------------------------------------ | ---------- | ----- | ------------------------------------------------------------ | ------------------------- | ------------------------------- | ---- | ------------------------------------------------------------ |
-| 1 | [Two Sum](https://leetcode-cn.com/problems/two-sum/) | | | [Java解答](code_java/src/solution/TwoSum.java) | | | | |
-| 2 | [Add Two Numbers](https://leetcode-cn.com/problems/add-two-numbers/) | | | [Java解答](code_java/src/solution/AddTwoNumber.java) | | | | |
-| 3 | [Longest Substring Without Repeating Characters](https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/) | 无重复字符的最长子串 | medium| [Java解答](code_java/src/solution/LongestSubstringWithoutRepeatingCharacters.java) | | | | 使用双指针法,跟#11题一起做 |
-| 4 | [Median of Two Sorted Arrays](https://leetcode-cn.com/problems/median-of-two-sorted-arrays/) | | | [Java解答](code_java/src/solution/MedianOfTwoSortedArrays.java) | | | | 这题很经典,多做几遍 |
-| 5 | [Longest Palindromic Substring](https://leetcode-cn.com/problems/longest-palindromic-substring/) | | | [Java解答](code_java/src/solution/LongestPalindromicSubstring.java) | | | | 这题对比动态规划和最优算法 |
-| 6 | [ZigZag Conversion](https://leetcode-cn.com/problems/zigzag-conversion/) | | | [Java解答](code_java/src/solution/ZigZagConversion.java) | | | | |
-| 7 | [Reverse Integer](https://leetcode-cn.com/problems/reverse-integer/) | | | [Java解答](code_java/src/solution/ReverseInteger.java) | | | | |
-| 8 | [String to Integer (atoi)](https://leetcode-cn.com/problems/string-to-integer-atoi/) | | | [Java解答](code_java/src/solution/String2Integer.java) | | | | 很考代码能力,容易错 |
-| 9 | [Palindrome Number](https://leetcode-cn.com/problems/palindrome-number/) | | | [Java解答](code_java/src/solution/PalindromeNumber.java) | | | | |
-| 10 | [Regular Expression Matching](https://leetcode-cn.com/problems/regular-expression-matching/) | | | [Java解答](code_java/src/solution/RegularExpressionMatching.java) | | | | 这题很经典,多做几遍,和#44一起 |
-| 11 | [Container With Most Water](https://leetcode-cn.com/problems/container-with-most-water/) | 盛最多水的容器 | medium | [Java解答](code_java/src/solution/ContainerWithMostWater.java) | | | | |
-| 12 | [Integer to Roman](https://leetcode-cn.com/problems/integer-to-roman/) | | | [Java解答](code_java/src/solution/IntegerToRoman.java) | | | | |
-| 13 | [Roman to Integer](https://leetcode-cn.com/problems/roman-to-integer/) | | | [Java解答](code_java/src/solution/RomanToInteger.java) | | | | |
-| 14 | [Longest Common Prefix](https://leetcode-cn.com/problems/longest-common-prefix/) | | | [Java解答](code_java/src/solution/LongestCommonPrefix.java) | | | | |
-| 15 | [3Sum](https://leetcode-cn.com/problems/3sum/) | 三数之和 | | [Java解答](code_java/src/solution/ThreeSum.java) | | | | |
-| 16 | [3Sum Closest](https://leetcode-cn.com/problems/3sum-closest/) | | | [Java解答](code_java/src/solution/ThreeSumClosest.java) | | | | |
-| 17 | [Letter solution.Combinations of a Phone Number](https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/) | | | [Java解答](code_java/src/solution/LetterCombinationOfPhoneNumber.java) | | | | 递归/回溯:最后一次递归才加入结果列表 |
-| 18 | [4Sum](https://leetcode-cn.com/problems/4sum/) | | | [Java解答](code_java/src/solution/FourSum.java) | | | | |
-| 19 | [Remove Nth Node From End of List](https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/) | | | [Java解答](code_java/src/solution/RemoveNthNodeFromEndOfList.java) | | | | |
-| 20 | [Valid Parentheses](https://leetcode-cn.com/problems/valid-parentheses/) | | | [Java解答](code_java/src/solution/ValidParentheses.java) | | | | |
-| 21 | [Merge Two Sorted Lists](https://leetcode-cn.com/problems/merge-two-sorted-lists/) | | | [Java解答](code_java/src/solution/MergeTwoSortedList.java) | | | | |
-| 22 | [Generate Parentheses](https://leetcode-cn.com/problems/generate-parentheses/) | | | [Java解答](code_java/src/solution/GenerateParentheses.java) | | | | 这题看两遍 |
-| 23 | [Merge k Sorted Lists](https://leetcode-cn.com/problems/merge-k-sorted-lists/) | | | [Java解答](code_java/src/solution/MergeKSortedList.java) | | | | |
-| 24 | [Swap Nodes in Pairs](https://leetcode-cn.com/problems/swap-nodes-in-pairs/) | | | [Java解答](code_java/src/solution/SwapNodesInPairs.java) | | | | |
-| 25 | [Reverse Nodes in k-Group](https://leetcode-cn.com/problems/reverse-nodes-in-k-group/) | | | [Java解答](code_java/src/solution/ReverseNodesInKGroup.java) | | | | |
-| 26 | [Remove Duplicates from Sorted Array](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array/) | | | [Java解答](code_java/src/solution/RemoveDuplicatesFromSortedArray.java) | | | | |
-| 27 | [Remove Element](https://leetcode-cn.com/problems/remove-element/) | | | [Java解答](code_java/src/solution/RemoveElement.java) | | | | |
-| 28 | [ Implement strStr()](https://leetcode-cn.com/problems/implement-strstr/) | | | [Java解答](code_java/src/solution/StrStr.java) | | | | |
-| 29 | [Divide Two Integers](https://leetcode-cn.com/problems/divide-two-integers/) | | | [Java解答](code_java/src/solution/DivideTwoIntegers.java) | | | | |
-| 30 | [Substring with Concatenation of All Words](https://leetcode-cn.com/problems/substring-with-concatenation-of-all-words/) | | | [Java解答](code_java/src/solution/SubstringWithConcatenationOfAllWords.java) | | | | |
-| 31 | [Next Permutation](https://leetcode-cn.com/problems/next-permutation/) | | | [Java解答](code_java/src/solution/NextPermutation.java) | | | | |
-| 32 | [Longest Valid Parentheses](https://leetcode-cn.com/problems/longest-valid-parentheses/) | | | [Java解答](code_java/src/solution/LongestValidParentheses.java) | | | | |
-| 33 | [Search in Rotated Sorted Array](https://leetcode-cn.com/problems/search-in-rotated-sorted-array/) | | | [Java解答](code_java/src/solution/SearchInRotatedSortedArray.java) | | | | |
-| 34 | [Search for a Range](https://leetcode-cn.com/problems/search-for-a-range/) | | | [Java解答](code_java/src/solution/SearchForARange.java) | | | | |
-| 35 | [Search Insert Position](https://leetcode-cn.com/problems/search-insert-position/) | | | [Java解答](code_java/src/solution/SearchInsertPosition.java) | | | | |
-| 36 | [Valid Sudoku](https://leetcode-cn.com/problems/valid-sudoku/#/description) | | | [Java解答](code_java/src/solution/ValidSudoku.java) | | | | |
-| 37 | [Sudoku Solver](https://leetcode-cn.com/problems/sudoku-solver/#/description) | | | [Java解答](code_java/src/solution/SudokuSolver.java) | | | | 这道题是典型的back tracking,多做几遍 |
-| 38 | [Count and Say](https://leetcode-cn.com/problems/count-and-say/) | | | [Java解答](code_java/src/solution/CountAndSay.java) | | | | |
-| 39 | [Combination Sum](https://leetcode-cn.com/problems/combination-sum/) | | | [Java解答](code_java/src/solution/CombinationSum.java) | | | | 排列组合系列的题要多做几遍 |
-| 40 | [Combination Sum II](https://leetcode-cn.com/problems/combination-sum-ii/) | | | [Java解答](code_java/src/solution/CombinationSumII.java) | | | | |
-| 41 | [First Missing Positive](https://leetcode-cn.com/problems/first-missing-positive/#/description) | | | [Java解答](code_java/src/solution/FirstMissingPositive.java) | | | | |
-| 42 | [Trapping Rain Water](https://leetcode-cn.com/problems/trapping-rain-water/) | | | [Java解答](code_java/src/solution/TrappingRainWater.java) | | | | |
-| 43 | [Multiply Strings](https://leetcode-cn.com/problems/multiply-strings/) | | | [Java解答](code_java/src/solution/MultiplyStrings.java) | | | | |
-| 44 | [Wildcard Matching](https://leetcode-cn.com/problems/wildcard-matching/) | | | [Java解答](code_java/src/solution/WildcardMatching.java) | | | | 和#10多做几遍 |
-| 45 | [Jump Game II](https://leetcode-cn.com/problems/jump-game-ii/#/description) | | | [Java解答](code_java/src/solution/JumpGameII.java) | | | | |
-| 46 | [solution.Permutations](https://leetcode-cn.com/problems/permutations/) | | | [Java解答](code_java/src/solution/Permutations.java) | | | | |
-| 47 | [solution.Permutations II](https://leetcode-cn.com/problems/permutations-ii/) | | | [Java解答](code_java/src/solution/PermutationsII.java) | | | | 多做几遍 |
-| 48 | [Rotate Image](https://leetcode-cn.com/problems/rotate-image/) | | | [Java解答](code_java/src/solution/RotateImage.java) | | | | |
-| 49 | [Group Anagrams](https://leetcode-cn.com/problems/anagrams/) | | | [Java解答](code_java/src/solution/GroupAnagrams.java) | | | | |
-| 50 | [solution.Pow(x, n)](https://leetcode-cn.com/problems/powx-n/) | | | [Java解答](code_java/src/solution/Pow.java) | | | | |
-| 51 | [N-Queens](https://leetcode-cn.com/problems/n-queens/) | | | [Java解答](code_java/src/solution/NQueens.java) | | | | |
-| 52 | [N-Queens II](https://leetcode-cn.com/problems/n-queens-ii/) | | | [Java解答](code_java/src/solution/NQueensII.java) | | | | |
-| 53 | [Maximum Subarray](https://leetcode-cn.com/problems/maximum-subarray/) | 最大子序和 | easy | [DP算法](code_java/src/solution/MaximumSubarray.java) | | | | DP算法,T=O(N),S=O(1) |
-| 54 | [Spiral Matrix](https://leetcode-cn.com/problems/spiral-matrix/) | | | [Java解答](code_java/src/solution/SpiralMatrix.java) | | | | |
-| 55 | [Jump Game](https://leetcode-cn.com/problems/jump-game/#/description) | | | [Java解答](code_java/src/solution/JumpGame.java) | | | | |
-| 56 | [Merge Intervals](https://leetcode-cn.com/problems/merge-intervals/) | | | [Java解答](code_java/src/solution/MergeIntervals.java) | | | | |
-| 57 | [Insert Interval](https://leetcode-cn.com/problems/insert-interval/) | | | [Java解答](code_java/src/solution/InsertInterval.java) | | | | 这题要多做几遍 |
-| 60 | [Permutation Sequence](https://leetcode-cn.com/problems/permutation-sequence/) | | | [Java解答](code_java/src/solution/PermutationSequence.java) | | | | 这题思路巧妙,多做两遍 |
-| 61 | [Rotate List](https://leetcode-cn.com/problems/rotate-list/) | | | [Java解答](code_java/src/solution/RotateList.java) | | | | |
-| 62 | [Unique Paths](https://leetcode-cn.com/problems/unique-paths/) | 不同的路径 | medium | [排列组合法/DP算法](code_java/src/solution/UniquePath.java) | | | | 排列组合法: 将机器人行列要走的轨迹当作要选择的方块 |
-| 63 | [Unique Path II](https://leetcode-cn.com/problems/unique-paths-ii/) | 不同的路径2 | medium | [DP算法](code_java/src/solution/UniquePathII.java) | | | | DP算法,可以利用原先矩阵将空间复杂度降为 O(1) |
-| 66 | [Plus One](https://leetcode-cn.com/problems/plus-one/) | | | [Java解答](code_java/src/solution/PlusOne.java) | | | | 这题多看一遍 |
-| 67 | [Add Binary](https://leetcode-cn.com/problems/add-binary/) | | | [Java解答](code_java/src/solution/AddBinary.java) | | | | |
-| 68 | [Text Justification](https://leetcode-cn.com/problems/text-justification/) | | | [Java解答](code_java/src/solution/TextJustification.java) | | | | |
-| 69 | [solution.Sqrt(x)](https://leetcode-cn.com/problems/sqrtx/) | | | [Java解答](code_java/src/solution/Sqrt.java) | | | | |
-| 70 | [Climb Stairs](https://leetcode-cn.com/problems/climbing-stairs/) | 爬楼梯 | easy | [迭代法/动态规划法/递归法](code_java/src/solution/ClimbingStairs.java) | | | | 可使用迭代法/动态规划法/递归法 |
-| 71 | [Simplify Path](https://leetcode-cn.com/problems/simplify-path/) | | | [Java解答](code_java/src/solution/SimplifyPath.java) | | | | |
-| 72 | [Edit Distance](https://leetcode-cn.com/problems/edit-distance/) | 编辑距离 | difficult | [Java解答](code_java/src/solution/EditDistance.java) | | | | DP算法 |
-| 73 | [Set Matrix Zeroes](https://leetcode-cn.com/problems/set-matrix-zeroes/description/) | | | [Java解答](code_java/src/solution/SetMatrixZeroes.java) | | | | |
-| 74 | [Search a 2D Matrix](https://leetcode-cn.com/problems/search-a-2d-matrix/) | | | [Java解答](code_java/src/solution/Search2DMatrix.java) | | | | |
-| 75 | [Sort Colors](https://leetcode-cn.com/problems/sort-colors/) | | | [Java解答](code_java/src/solution/SortColors.java) | | | | 这题多做几遍,很有意思 |
-| 76 | [Minimum Window Substring](https://leetcode-cn.com/problems/minimum-window-substring/) | | | [Java解答](code_java/src/solution/MinimumWindowSubstring.java) | | | | 这题以及类似的题一定要多做几遍,很经典,参见window |
-| 77 | [solution.Combinations](https://leetcode-cn.com/problems/combinations) | | | [Java解答](code_java/src/solution/Combinations.java) | | | | |
-| 78 | [solution.Subsets](https://leetcode-cn.com/problems/subsets/) | | | [Java解答](code_java/src/solution/Subsets.java) | | | | |
-| 79 | [Word Search](https://leetcode-cn.com/problems/word-search/) | | | [Java解答](code_java/src/solution/WordSearch.java) | | | | |
-| 80 | [Remove Duplicates from Sorted Array II](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-array-ii/) | | | [Java解答](code_java/src/solution/RemoveDuplicatesFromSortedArrayII.java) | | | | |
-| 81 | [Search in Rotated Sorted Array II](https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/) | | | [Java解答](code_java/src/solution/SearchInRotatedSortedArrayII.java) | | | | |
-| 82 | [Remove Duplicates from Sorted List II](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/) | | | [Java解答](code_java/src/solution/RemoveDuplicatesFromSortedListII.java) | | | | |
-| 83 | [Remove Duplicates from Sorted List](https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/) | | | [Java解答](code_java/src/solution/RemoveDuplicatesFromSortedList.java) | | | | |
-| 84 | [Largest Rectangle in Histogram](https://leetcode-cn.com/problems/largest-rectangle-in-histogram/) | | | [Java解答](code_java/src/solution/LargestRectangleInHistogram.java) | | | | |
-| 85 | [Maximal Rectangle](https://leetcode-cn.com/problems/maximal-rectangle/) | | | [Java解答](code_java/src/solution/MaximalRectangle.java) | | | | |
-| 86 | [Partition List](https://leetcode-cn.com/problems/partition-list/) | | | [Java解答](code_java/src/solution/PartitionList.java) | | | | |
-| 88 | [Merge Sorted Array](https://leetcode-cn.com/problems/merge-sorted-array/) | | | [Java解答](code_java/src/solution/MergeSortedArray.java) | | | | |
-| 90 | [solution.Subsets II](https://leetcode-cn.com/problems/subsets-ii/) | | | [Java解答](code_java/src/solution/SubsetsII.java) | | | | |
-| 91 | [Decode Ways](https://leetcode-cn.com/problems/decode-ways/) | | | [Java解答](code_java/src/solution/DecodeWays.java) | | | | 这题多做几遍,包括#639 |
-| 92 | [Reverse Linked List II](https://leetcode-cn.com/problems/reverse-linked-list-ii/) | | | [Java解答](code_java/src/solution/ReverseLinkedListII.java) | | | | |
-| 93 | [Restore IP Addresses](https://leetcode-cn.com/problems/restore-ip-addresses/) | | | [Java解答](code_java/src/solution/RestoreIPAddresses.java) | | | | 多看两遍 |
-| 94 | [Binary Tree Inorder Traversal](https://leetcode-cn.com/problems/binary-tree-inorder-traversal/) | | | [Java解答](code_java/src/solution/BinaryTreeInorderTraversal.java) | | | | |
-| 95 | [Unique Binary Search Trees II](https://leetcode-cn.com/problems/unique-binary-search-trees-ii/) | | | [Java解答](code_java/src/solution/UniqueBinarySearchTreesII.java) | | | | 多做几遍,递归和DP |
-| 96 | [Unique Binary Search Trees](https://leetcode-cn.com/problems/unique-binary-search-trees/) | | | [Java解答](code_java/src/solution/UniqueBinarySearchTrees.java) | | | | |
-| 98 | [Validate Binary Search Tree](https://leetcode-cn.com/problems/validate-binary-search-tree/) | | | [Java解答](code_java/src/solution/ValidateBinarySearchTree.java) | | | | 注意溢出 |
-| 99 | [Recover Binary Search Tree](https://leetcode-cn.com/problems/recover-binary-search-tree/) | | | [Java解答](code_java/src/solution/RecoverBinarySearchTree.java) | | | | 这题很容易错,要多做几遍 |
-| 100 | [Same Tree](https://leetcode-cn.com/problems/same-tree/) | | | [Java解答](code_java/src/solution/SameTree.java) | | | | |
-| 101 | [Symmetric Tree](https://leetcode-cn.com/problems/symmetric-tree/) | 对称二叉树 | | [Java解答](code_java/src/solution/SymmetricTree.java) | | | | |
-| 102 | [Binary Tree Level Order Traversal](https://leetcode-cn.com/problems/binary-tree-level-order-traversal/) | | | [Java解答](code_java/src/solution/BinaryTreeLevelOrderTraversal.java) | | | | |
-| 103 | [Binary Tree Zigzag Level Order Traversal](https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/) | | | [Java解答](code_java/src/solution/BinaryTreeZigzagLevelOrderTraversal.java) | | | | |
-| 104 | [Maximum Depth of Binary Tree](https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/) | 最大树深度 | | [Java解答](code_java/src/solution/MaximumDepthOfBinaryTree.java) | | | | |
-| 105 | [Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | | | [Java解答](code_java/src/solution/ConstructBinaryTreeFromPreorderInorderTraversal.java) | | | | |
-| 106 | [Construct Binary Tree from Inorder and Postorder Traversal](https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | | | [Java解答](code_java/src/solution/ConstructBinaryTreeFromInorderAndPostorderTraversal.java) | | | | |
-| 107 | [Binary Tree Level Order Traversal II](https://leetcode-cn.com/problems/binary-tree-level-order-traversal-ii/) | | | [Java解答](code_java/src/solution/BinaryTreeLevelOrderTraversalII.java) | | | | |
-| 108 | [Convert Sorted Array to Binary Search Tree](https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree/) | | | [Java解答](code_java/src/solution/ConvertSortedArrayToBinarySearchTree.java) | | | | |
-| 109 | [Convert Sorted List to Binary Search Tree](https://leetcode-cn.com/problems/convert-sorted-list-to-binary-search-tree/) | | | [Java解答](code_java/src/solution/ConvertSortedListToBinarySearchTree.java) | | | | |
-| 110 | [Balanced Binary Tree](https://leetcode-cn.com/problems/balanced-binary-tree/) | 平衡二叉树 | | [Java解答](code_java/src/solution/BalancedBinaryTree.java) | | | | |
-| 111 | [Minimum Depth of Binary Tree](https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/) | | | [Java解答](code_java/src/solution/MinimumDepthOfBinaryTree.java) | | | | |
-| 112 | [Path Sum](https://leetcode-cn.com/problems/path-sum/) | | | [Java解答](code_java/src/solution/PathSum.java) | | | | |
-| 113 | [Path Sum II](https://leetcode-cn.com/problems/path-sum-ii/) | | | [Java解答](code_java/src/solution/PathSumII.java) | | | | 错了好几次,得多做几遍 |
-| 114 | [Flatten Binary Tree to Linked List](https://leetcode-cn.com/problems/flatten-binary-tree-to-linked-list/) | | | [Java解答](code_java/src/solution/FlattenBinaryTreeToLinkedList.java) | | | | |
-| 116 | [Populating Next Right Pointers in Each Node](https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node/) | | | [Java解答](code_java/src/solution/PopulatingNextRightPointersInEachNode.java) | | | | |
-| 117 | [Populating Next Right Pointers in Each Node II](https://leetcode-cn.com/problems/populating-next-right-pointers-in-each-node-ii/) | | | [Java解答](code_java/src/solution/PopulatingNextRightPointersInEachNodeII.java) | | | | |
-| 118 | [Pascal's Triangle](https://leetcode-cn.com/problems/pascals-triangle/) | | | [Java解答](code_java/src/solution/PascalsTriangle.java) | | | | |
-| 119 | [Pascal's Triangle II](https://leetcode-cn.com/problems/pascals-triangle-ii/description/) | | | [Java解答](code_java/src/solution/PascalTriangleII.java) | | | | |
-| 120 | [Triangle](https://leetcode-cn.com/problems/triangle) | 三角形最小路径和 | medium | [Java解答](code_java/src/solution/Triangle.java) | | | | dp, 自上而下,自下而上的方法,可用 dp[][],dp[] 两种辅助空间 |
-| 121 | [Best Time to Buy and Sell Stock](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock/) | | | [Java解答](code_java/src/solution/BestTimeBuySellStock.java) | | | | |
-| 122 | [Best Time to Buy and Sell Stock II](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-ii/) | | | [Java解答](code_java/src/solution/BestTimeBuySellStockII.java) | | | | |
-| 123 | [Best Time to Buy and Sell Stock III](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iii/) | | | [Java解答](code_java/src/solution/BestTimeBuySellStockIII.java) | | | | |
-| 124 | [Binary Tree Maximum Path Sum](https://leetcode-cn.com/problems/binary-tree-maximum-path-sum/) | | | [Java解答](code_java/src/solution/BinaryTreeMaximumPathSum.java) | | | | |
-| 125 | [Valid Palindrome](https://leetcode-cn.com/problems/valid-palindrome/) | | | [Java解答](code_java/src/solution/ValidPalindrome.java) | | | | |
-| 126 | [Word Ladder II](https://leetcode-cn.com/problems/word-ladder-ii/) | | | [Java解答](code_java/src/solution/WordLadderII.java) | | | | |
-| 127 | [Word Ladder](https://leetcode-cn.com/problems/word-ladder/) | | | [Java解答](code_java/src/solution/WordLadder.java) | | | | 此题非常经典,务必连同ii多做几遍,将双端BFS吃透 |
-| 128 | [Longest Consecutive Sequence](https://leetcode-cn.com/problems/longest-consecutive-sequence/) | | | [Java解答](code_java/src/solution/LongestConsecutiveSequence.java) | | | | |
-| 129 | [Sum Root to Leaf Numbers](https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/) | | | [Java解答](code_java/src/solution/SumRootToLeafNumbers.java) | | | | |
-| 130 | [Surrounded Regions](https://leetcode-cn.com/problems/surrounded-regions/) | | | [Java解答](code_java/src/solution/SurroundedRegions.java) | | | | |
-| 131 | [Palindrome Partitioning](https://leetcode-cn.com/problems/palindrome-partitioning/) | | | [Java解答](code_java/src/solution/PalindromePartitioning.java) | | | | |
-| 132 | [Palindrome Partitioning II](https://leetcode-cn.com/problems/palindrome-partitioning-ii/) | | | [Java解答](code_java/src/solution/PalindromePartitioningII.java) | | | | |
-| 133 | [Clone Graph](https://leetcode-cn.com/problems/clone-graph/) | | | [Java解答](code_java/src/solution/CloneGraph.java) | | | | 这题不难,多看两遍,BFS方法再做两遍 |
-| 135 | [solution.Candy](https://leetcode-cn.com/problems/candy/) | | | [Java解答](code_java/src/solution/Candy.java) | | | | |
-| 138 | [Copy List with Random Pointer](https://leetcode-cn.com/problems/copy-list-with-random-pointer/) | | | [Java解答](code_java/src/solution/CopyListWithRandomPointer.java) | | | | 有一个易错点 |
-| 139 | [Word Break](https://leetcode-cn.com/problems/word-break/) | | | [Java解答](code_java/src/solution/WordBreak.java) | | | | 多看两遍 |
-| 140 | [Word Break II](https://leetcode-cn.com/problems/word-break-ii/) | | | [Java解答](code_java/src/solution/WordBreakII.java) | | | | 这题多做两遍,很典型 |
-| 141 | [Linked List Cycle](https://leetcode-cn.com/problems/linked-list-cycle/) | | | [Java解答](code_java/src/solution/LinkedListCycle.java) | | | | |
-| 142 | [Linked List Cycle II](https://leetcode-cn.com/problems/linked-list-cycle-ii/) | | | [Java解答](code_java/src/solution/LinkedListCycleII.java) | | | | |
-| 143 | [Reorder List](https://leetcode-cn.com/problems/reorder-list/) | | | [Java解答](code_java/src/solution/ReorderList.java) | | | | |
-| 144 | [Binary Tree Preorder Traversal](https://leetcode-cn.com/problems/binary-tree-preorder-traversal/) | | | [Java解答](code_java/src/solution/BinaryTreePreorderTraversal.java) | | | | |
-| 145 | [Binary Tree Postorder Traversal](https://leetcode-cn.com/problems/binary-tree-postorder-traversal/) | | | [Java解答](code_java/src/solution/BinaryTreePostorderTraversal.java) | | | | |
-| 146 | [LRU Cache](https://leetcode-cn.com/problems/lru-cache/) | | | [Java解答](code_java/src/solution/LRUCache.java) | | | | 好题目,多做几遍 |
-| 147 | [Insertion Sort List](https://leetcode-cn.com/problems/insertion-sort-list/) | | | [Java解答](code_java/src/solution/InsertionSortList.java) | | | | |
-| 148 | [Sort List](https://leetcode-cn.com/problems/sort-list) | | | [Java解答](code_java/src/solution/SortList.java) | | | | |
-| 149 | [Max Points on a Line](https://leetcode-cn.com/problems/max-points-on-a-line/) | | | [Java解答](code_java/src/solution/MaxPointsOnALine.java) | | | | |
-| 150 | [Evaluate Reverse Polish Notation](https://leetcode-cn.com/problems/evaluate-reverse-polish-notation/) | | | [Java解答](code_java/src/solution/EvaluateReversePolishNotation.java) | | | | |
-| 151 | [Reverse Words in a String](https://leetcode-cn.com/problems/reverse-words-in-a-string/description/) | | | [Java解答](code_java/src/solution/ReverseWordsInAString.java) | | | | 这题虽然不难,但是也错了几次 |
-| 152 | [Maximum Product Subarray](https://leetcode-cn.com/problems/maximum-product-subarray/) | | | [Java解答](code_java/src/solution/MaximumProductSubarray.java) | | | | |
-| 153 | [Find Minimum in Rotated Sorted Array](https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array/) | | | [Java解答](code_java/src/solution/FindMinimumInRotatedSortedArray.java) | | | | |
-| 154 | [Find Minimum in Rotated Sorted Array II](https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array-ii/) | | | [Java解答](code_java/src/solution/FindMinimumInRotatedSortedArrayII.java) | | | | |
-| 155 | [Min Stack](https://leetcode-cn.com/problems/min-stack/) | | | [Java解答](code_java/src/solution/MinStack.java) | | | | |
-| 156 | [Binary Tree Upside Down](https://leetcode-cn.com/problems/binary-tree-upside-down/) | | | [Java解答](code_java/src/solution/BinaryTreeUpsideDown.java) | | | | 这道题挺有意思,多做几遍 |
-| 157 | [Read N Characters Given Read4](https://leetcode-cn.com/problems/read-n-characters-given-read4/) | | | [Java解答](code_java/src/solution/ReadNCharactersGivenRead4.java) | | | | 这题多做几遍,结合#158 |
-| 158 | [Read N Characters Given Read4 II - Call multiple times](https://leetcode-cn.com/problems/read-n-characters-given-read4-ii-call-multiple-times/) | | | [Java解答](code_java/src/solution/ReadNCharactersGivenRead4II.java) | | | | |
-| 159 | [Longest Substring with At Most Two Distinct Characters](https://leetcode-cn.com/problems/longest-substring-with-at-most-two-distinct-characters/) | | | [Java解答](code_java/src/solution/LongestSubstringWithAtMostTwoDistinctCharacters.java) | | | | 多看两遍 |
-| 160 | [Intersection of Two Linked Lists](https://leetcode-cn.com/problems/intersection-of-two-linked-lists/) | | | [Java解答](code_java/src/solution/IntersectionOfTwoLinkedLists.java) | | | | |
-| 161 | [One Edit Distance](https://leetcode-cn.com/problems/one-edit-distance/) | | | [Java解答](code_java/src/solution/OneEditDistance.java) | | | | 和#72做两遍 |
-| 162 | [Find Peak Element](https://leetcode-cn.com/problems/find-peak-element/) | | | [Java解答](code_java/src/solution/FindPeakElement.java) | | | | |
-| 163 | [Missing Ranges](https://leetcode-cn.com/problems/missing-ranges/) | | | [Java解答](code_java/src/solution/MissingRanges.java) | | | | 多做几遍,太容易错了 |
-| 164 | [Maximum Gap](https://leetcode-cn.com/problems/maximum-gap/) | | | [Java解答](code_java/src/solution/MaximumGap.java) | | | | |
-| 167 | [Two Sum II - Input array is sorted](https://leetcode-cn.com/problems/two-sum-ii-input-array-is-sorted/) | | | [Java解答](code_java/src/solution/TwoSumII.java) | | | | |
-| 168 | [Excel Sheet Column Title](https://leetcode-cn.com/problems/excel-sheet-column-title/) | | | [Java解答](code_java/src/solution/ExcelSheetColumnTitle.java) | | | | |
-| 169 | [Majority Element](https://leetcode-cn.com/problems/majority-element/) | | | [Java解答](code_java/src/solution/MajorityElement.java) | | | | |
-| 170 | [Two Sum III - Data structure design](https://leetcode-cn.com/problems/two-sum-iii-data-structure-design/) | | | [Java解答](code_java/src/solution/TwoSumIII.java) | | | | 这道题再多做一遍 |
-| 171 | [Excel Sheet Column Number](https://leetcode-cn.com/problems/excel-sheet-column-number/) | | | [Java解答](code_java/src/solution/ExcelSheetColumnNumber.java) | | | | |
-| 172 | [Factorial Trailing Zeroes](https://leetcode-cn.com/problems/factorial-trailing-zeroes/) | | | [Java解答](code_java/src/solution/FactorialTrailingZeroes.java) | | | | |
-| 173 | [Binary Search Tree Iterator](https://leetcode-cn.com/problems/binary-search-tree-iterator/) | | | [Java解答](code_java/src/solution/BSTIterator.java) | | | | 多留意一下 |
-| 179 | [Largest Number](https://leetcode-cn.com/problems/largest-number/) | | | [Java解答](code_java/src/solution/LargestNumber.java) | | | | |
-| 186 | [Reverse Words in a String II](https://leetcode-cn.com/problems/reverse-words-in-a-string-ii/description/) | | | [Java解答](code_java/src/solution/ReverseWordsInAStringII.java) | | | | |
-| 188 | [Best Time to Buy and Sell Stock IV](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-iv/) | | | [Java解答](code_java/src/solution/BestTimeBuySellStockIV.java) | | | | |
-| 189 | [Rotate Array](https://leetcode-cn.com/problems/rotate-array/) | | | [Java解答](code_java/src/solution/RotateArray.java) | | | | |
-| 190 | [Reverse Bits](https://leetcode-cn.com/problems/reverse-bits/) | | | [Java解答](code_java/src/solution/ReverseBits.java) | | | | |
-| 198 | [House Robber](https://leetcode-cn.com/problems/house-robber/) | | | [Java解答](code_java/src/solution/HouseRobber.java) | | | | |
-| 199 | [Binary Tree Right Side View](https://leetcode-cn.com/problems/binary-tree-right-side-view/) | | | [Java解答](code_java/src/solution/BinaryTreeRightSideView.java) | | | | |
-| 200 | [Number of Islands](https://leetcode-cn.com/problems/number-of-islands/) | | | [Java解答](code_java/src/solution/NumberOfIslands.java) | | | | 这道题很经典,而且方法不止一种,每种方法都多做几遍,包括UF,#305 |
-| 203 | [Remove Linked List Elements](https://leetcode-cn.com/problems/remove-linked-list-elements/) | | | [Java解答](code_java/src/solution/RemoveLinkedListElements.java) | | | | |
-| 204 | [Count Primes](https://leetcode-cn.com/problems/count-primes/) | | | [Java解答](code_java/src/solution/CountPrimes.java) | | | | |
-| 206 | [Reverse Linked List](https://leetcode-cn.com/problems/reverse-linked-list/) | | | [Java解答](code_java/src/solution/ReverseLinkedList.java) | | | | |
-| 207 | [Course Schedule](https://leetcode-cn.com/problems/course-schedule/) | | | [Java解答](code_java/src/solution/CourseSchedule.java) | | | | 典型的拓扑排序 |
-| 208 | [Implement solution.Trie (Prefix Tree)](https://leetcode-cn.com/problems/implement-trie-prefix-tree/) | | | [Java解答](code_java/src/solution/Trie.java) | | | | 和#211多留意,trie很典型 |
-| 209 | [Minimum Size Subarray Sum](https://leetcode-cn.com/problems/minimum-size-subarray-sum/) | | | [Java解答](code_java/src/solution/MinimumSizeSubarraySum.java) | | | | |
-| 210 | [Course Schedule II](https://leetcode-cn.com/problems/course-schedule-ii/) | | | [Java解答](code_java/src/solution/CourseScheduleII.java) | | | | |
-| 211 | [Add and Search Word - Data structure design](https://leetcode-cn.com/problems/add-and-search-word-data-structure-design/) | | | [Java解答](code_java/src/solution/WordDictionary.java) | | | | |
-| 212 | [Word Search II](https://leetcode-cn.com/problems/word-search-ii/) | | | [Java解答](code_java/src/solution/WordSearchII.java) | | | | |
-| 213 | [House Robber II](https://leetcode-cn.com/problems/house-robber-ii/) | | | [Java解答](code_java/src/solution/HouseRobberII.java) | | | | |
-| 214 | [Shortest Palindrome](https://leetcode-cn.com/problems/shortest-palindrome/) | | | [Java解答](code_java/src/solution/ShortestPalindrome.java) | | | | |
-| 215 | [Kth Largest Element in an Array](https://leetcode-cn.com/problems/kth-largest-element-in-an-array/) | | | [Java解答](code_java/src/solution/KthLargestElementInArray.java) | | | | 这题很经典,三种解法都要了然于胸 |
-| 216 | [Combination Sum III](https://leetcode-cn.com/problems/combination-sum-iii/) | | | [Java解答](code_java/src/solution/CombinationSumIII.java) | | | | |
-| 217 | [Contains Duplicate](https://leetcode-cn.com/problems/contains-duplicate/) | | | [Java解答](code_java/src/solution/ContainsDuplicate.java) | | | | |
-| 218 | [The Skyline Problem](https://leetcode-cn.com/problems/the-skyline-problem/) | | | [Java解答](code_java/src/solution/TheSkylineProblem.java) | | | | 这题多做两遍 |
-| 219 | [Contains Duplicate II](https://leetcode-cn.com/problems/contains-duplicate-ii/) | | | [Java解答](code_java/src/solution/ContainsDuplicateII.java) | | | | |
-| 220 | [Contains Duplicate III](https://leetcode-cn.com/problems/contains-duplicate-iii/) | | | [Java解答](code_java/src/solution/ContainsDuplicateIII.java) | | | | |
-| 221 | [Maximal Square](https://leetcode-cn.com/problems/maximal-square/) | | | [Java解答](code_java/src/solution/MaximalSquare.java) | | | | |
-| 222 | [Count Complete Tree Nodes](https://leetcode-cn.com/problems/count-complete-tree-nodes/) | | | [Java解答](code_java/src/solution/CountCompleteTreeNodes.java) | | | | 一般的做法会超时 |
-| 223 | [Rectangle Area](https://leetcode-cn.com/problems/rectangle-area/) | | | [Java解答](code_java/src/solution/RectangleArea.java) | | | | |
-| 224 | [Basic Calculator](https://leetcode-cn.com/problems/basic-calculator/) | | | [Java解答](code_java/src/solution/BasicCalculator.java) | | | | |
-| 225 | [Implement Stack using Queues](https://leetcode-cn.com/problems/implement-stack-using-queues/) | | | [Java解答](code_java/src/solution/MyStack.java) | | | | |
-| 226 | [Invert Binary Tree](https://leetcode-cn.com/problems/invert-binary-tree/) | | | [Java解答](code_java/src/solution/InvertBinaryTree.java) | | | | |
-| 228 | [Summary Ranges](https://leetcode-cn.com/problems/summary-ranges/) | | | [Java解答](code_java/src/solution/SummaryRanges.java) | | | | |
-| 229 | [Majority Element II](https://leetcode-cn.com/problems/majority-element-ii/) | | | [Java解答](code_java/src/solution/MajorityElementII.java) | | | | |
-| 230 | [Kth Smallest Element in a BST](https://leetcode-cn.com/problems/kth-smallest-element-in-a-bst/) | | | [Java解答](code_java/src/solution/KthSmallestElementInBST.java) | | | | 注意Follow Up |
-| 232 | [Implement Queue using Stacks](https://leetcode-cn.com/problems/implement-queue-using-stacks/) | | | [Java解答](code_java/src/solution/MyQueue.java) | | | | |
-| 233 | [Number of Digit One](https://leetcode-cn.com/problems/number-of-digit-one/) | | | [Java解答](code_java/src/solution/NumberOfDigitOne.java) | | | | |
-| 234 | [Palindrome Linked List](https://leetcode-cn.com/problems/palindrome-linked-list/) | | | [Java解答](code_java/src/solution/PalindromeLinkedList.java) | | | | |
-| 235 | [Lowest Common Ancestor of a Binary Search Tree](https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-search-tree/) | | | [Java解答](code_java/src/solution/LowestCommonAncestorOfBinarySearchTree.java) | | | | |
-| 236 | [Lowest Common Ancestor of a Binary Tree](https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree/) | | | [Java解答](code_java/src/solution/LowestCommonAncestorOfBinaryTree.java) | | | | 这题很经典,多做几遍,留意节点不在树中的情况 |
-| 237 | [Delete Node in a Linked List](https://leetcode-cn.com/problems/delete-node-in-a-linked-list/) | | | [Java解答](code_java/src/solution/DeleteNodeInALinkedList.java) | | | | |
-| 238 | [Product of Array Except Self](https://leetcode-cn.com/problems/product-of-array-except-self/) | | | [Java解答](code_java/src/solution/ProductOfArrayExceptSelf.java) | | | | |
-| 239 | [Sliding Window Maximum](https://leetcode-cn.com/problems/sliding-window-maximum/) | | | [Java解答](code_java/src/solution/SlidingWindowMaximum.java) | | | | 这题非常经典,多做几遍,包括常规算法(优先队列,treemap)及优化算法双端队列 |
-| 240 | [Search a 2D Matrix II](https://leetcode-cn.com/problems/search-a-2d-matrix-ii/) | | | [Java解答](code_java/src/solution/Search2DMatrixII.java) | | | | |
-| 241 | [Different Ways to Add Parentheses](https://leetcode-cn.com/problems/different-ways-to-add-parentheses/) | | | [Java解答](code_java/src/solution/DifferenceWaysToAddParentheses.java) | | | | |
-| 242 | [Valid Anagram](https://leetcode-cn.com/problems/valid-anagram/) | | | [Java解答](code_java/src/solution/ValidAnagram.java) | | | | |
-| 243 | [Shortest Word Distance](https://leetcode-cn.com/problems/shortest-word-distance/) | | | [Java解答](code_java/src/solution/ShortestWordDistance.java) | | | | |
-| 244 | [Shortest Word Distance II](https://leetcode-cn.com/problems/shortest-word-distance-ii/) | | | [Java解答](code_java/src/solution/ShortestWordDistanceII.java) | | | | |
-| 245 | [Shortest Word Distance III](https://leetcode-cn.com/problems/shortest-word-distance-iii/) | | | [Java解答](code_java/src/solution/ShortestWordDistanceIII.java) | | | | |
-| 246 | [Strobogrammatic Number](https://leetcode-cn.com/problems/strobogrammatic-number/) | | | [Java解答](code_java/src/solution/StrobogrammaticNumber.java) | | | | #247一个系列,多看两遍 |
-| 247 | [Strobogrammatic Number II](https://leetcode-cn.com/problems/strobogrammatic-number-ii/) | | | [Java解答](code_java/src/solution/src/StrobogrammaticNumberII.java) | | | | 多看两遍 |
-| 249 | [Group Shifted Strings](https://leetcode-cn.com/problems/group-shifted-strings/) | | | [Java解答](code_java/src/solution/GroupShiftedStrings.java) | | | | |
-| 250 | [Count Univalue Subtrees](https://leetcode-cn.com/problems/count-univalue-subtrees/) | | | [Java解答](code_java/src/solution/CountUnivalueSubtrees.java) | | | | 这题要多做几遍 |
-| 251 | [Flatten 2D Vector](https://leetcode-cn.com/problems/flatten-2d-vector/) | | | [Java解答](code_java/src/solution/Vector2D.java) | | | | |
-| 252 | [Meeting Rooms](https://leetcode-cn.com/problems/meeting-rooms/) | | | [Java解答](code_java/src/solution/MeetingRooms.java) | | | | |
-| 253 | [Meeting Rooms II](https://leetcode-cn.com/problems/meeting-rooms-ii/) | | | [Java解答](code_java/src/solution/MeetingRoomsII.java) | | | | |
-| 254 | [Factor solution.Combinations](https://leetcode-cn.com/problems/factor-combinations/) | | | [Java解答](code_java/src/solution/FactorCombinations.java) | | | | |
-| 255 | [Verify Preorder Sequence in Binary Search Tree](https://leetcode-cn.com/problems/verify-preorder-sequence-in-binary-search-tree/) | | | [Java解答](code_java/src/solution/VerifyPreorderSequenceInBinarySearchTree.java) | | | | 很简单,粗心错了 |
-| 256 | [Paint House](https://leetcode-cn.com/problems/paint-house/) | | | [Java解答](code_java/src/solution/PaintHouse.java) | | | | |
-| 257 | [Binary Tree Paths](https://leetcode-cn.com/problems/binary-tree-paths/) | | | [Java解答](code_java/src/solution/BinaryTreePaths.java) | | | | |
-| 259 | [3Sum Smaller](https://leetcode-cn.com/problems/3sum-smaller/) | | | [Java解答](code_java/src/solution/ThreeSumSmaller.java) | | | | 这题虽然简单,但是因为思维定式还是错了几次 |
-| 261 | [Graph Valid Tree](https://leetcode-cn.com/problems/graph-valid-tree/) | | | [Java解答](code_java/src/solution/GraphValidTree.java) | | | | 这题多做几遍 |
-| 263 | [Ugly Number](https://leetcode-cn.com/problems/ugly-number/) | | | [Java解答](code_java/src/solution/UglyNumber.java) | | | | |
-| 264 | [Ugly Number II](https://leetcode-cn.com/problems/ugly-number-ii/) | | | [Java解答](code_java/src/solution/UglyNumberII.java) | | | | |
-| 265 | [Paint House II](https://leetcode-cn.com/problems/paint-house-ii) | | | [Java解答](code_java/src/solution/PaintHouseII.java) | | | | |
-| 266 | [Palindrome Permutation](https://leetcode-cn.com/problems/palindrome-permutation/) | | | [Java解答](code_java/src/solution/PalindromePermutation.java) | | | | |
-| 267 | [Palindrome Permutation II](https://leetcode-cn.com/problems/palindrome-permutation-ii/) | | | [Java解答](code_java/src/solution/PalindromePermutationII.java) | | | | 典型,多看两遍 |
-| 268 | [Missing Number](https://leetcode-cn.com/problems/missing-number) | | | [Java解答](code_java/src/solution/MissingNumber.java) | | | | |
-| 269 | [Alien Dictionary](https://leetcode-cn.com/problems/alien-dictionary/) | | | [Java解答](code_java/src/solution/AlienDictionary.java) | | | | 这题要多做几遍 |
-| 270 | [Closest Binary Search Tree Value](https://leetcode-cn.com/problems/closest-binary-search-tree-value/) | | | [Java解答](code_java/src/solution/ClosestBinarySearchTreeValue.java) | | | | |
-| 271 | [Encode and Decode Strings](https://leetcode-cn.com/problems/encode-and-decode-strings/) | | | [Java解答](code_java/src/solution/EncodeAndDecodeStrings.java) | | | | 思路巧妙,多看几遍 |
-| 272 | [Closest Binary Search Tree Value II](https://leetcode-cn.com/problems/closest-binary-search-tree-value-ii/) | | | [Java解答](code_java/src/solution/ClosestBinarySearchTreeValueII.java) | | | | 这题非常值得多做几遍,几种写法都试试 |
-| 273 | [Integer to English Words](https://leetcode-cn.com/problems/integer-to-english-words/) | | | [Java解答](code_java/src/solution/IntegerToEnglishWords.java) | | | | 多做几遍,做到bug free |
-| 274 | [H-Index](https://leetcode-cn.com/problems/h-index/) | | | [Java解答](code_java/src/solution/HIndex.java) | | | | |
-| 275 | [H-Index II](https://leetcode-cn.com/problems/h-index-ii/) | | | [Java解答](code_java/src/solution/HIndexII.java) | | | | |
-| 277 | [Find the Celebrity](https://leetcode-cn.com/problems/find-the-celebrity/) | | | [Java解答](code_java/src/solution/FindCelebrity.java) | | | | |
-| 278 | [First Bad Version](https://leetcode-cn.com/problems/first-bad-version/) | | | [Java解答](code_java/src/solution/FirstBadVersion.java) | | | | |
-| 279 | [Perfect Squares](https://leetcode-cn.com/problems/perfect-squares/) | | | [Java解答](code_java/src/solution/PerfectSquares.java) | | | | |
-| 280 | [Wiggle Sort](https://leetcode-cn.com/problems/wiggle-sort/) | | | [Java解答](code_java/src/solution/WiggleSort.java) | | | | 思路巧妙,多看两遍 |
-| 281 | [Zigzag Iterator](https://leetcode-cn.com/problems/zigzag-iterator/) | | | [Java解答](code_java/src/solution/ZigzagIterator.java) | | | | 多做三遍,考虑扩展到k的情况 |
-| 282 | [Expression Add Operators](https://leetcode-cn.com/problems/expression-add-operators/) | | | [Java解答](code_java/src/solution/ExpressionAddOperators.java) | | | | |
-| 283 | [Move Zeroes](https://leetcode-cn.com/problems/move-zeroes/) | | | [Java解答](code_java/src/solution/MoveZeroes.java) | | | | |
-| 284 | [Peeking Iterator](https://leetcode-cn.com/problems/peeking-iterator/) | | | [Java解答](code_java/src/solution/PeekingIterator.java) | | | | |
-| 285 | [Inorder Successor in BST](https://leetcode-cn.com/problems/inorder-successor-in-bst/) | | | [Java解答](code_java/src/solution/InorderSuccessorInBST.java) | | | | 这道题有意思,要多做几遍 |
-| 286 | [Walls and Gates](https://leetcode-cn.com/problems/walls-and-gates/) | | | [Java解答](code_java/src/solution/WallsAndGates.java) | | | | 多看两遍 |
-| 287 | [Find the Duplicate Number](https://leetcode-cn.com/problems/find-the-duplicate-number/) | | | [Java解答](code_java/src/solution/FindTheDuplicateNumber.java) | | | | |
-| 288 | [Unique Word Abbreviation](https://leetcode-cn.com/problems/unique-word-abbreviation/) | | | [Java解答](code_java/src/solution/ValidWordAbbr.java) | | | | 这题不难,多做两遍,题目意思容易理解错 |
-| 289 | [Game of Life](https://leetcode-cn.com/problems/game-of-life/) | | | [Java解答](code_java/src/solution/GameOfLife.java) | | | | |
-| 293 | [Flip Game](https://leetcode-cn.com/problems/flip-game/) | | | [Java解答](code_java/src/solution/FlipGame.java) | | | | |
-| 294 | [Flip Game II](https://leetcode-cn.com/problems/flip-game-ii/) | | | [Java解答](code_java/src/solution/FlipGameII.java) | | | | |
-| 295 | [Find Median from Data Stream](https://leetcode-cn.com/problems/find-median-from-data-stream/) | | | [Java解答](code_java/src/solution/FindMedianFromDataStream.java) | | | | |
-| 297 | [Serialize and Deserialize Binary Tree](https://leetcode-cn.com/problems/serialize-and-deserialize-binary-tree/) | | | [Java解答](code_java/src/solution/Codec.java) | | | | 好题目,多做做,递归的非递归的 |
-| 298 | [Binary Tree Longest Consecutive Sequence](https://leetcode-cn.com/problems/binary-tree-longest-consecutive-sequence/) | | | [Java解答](code_java/src/solution/BinaryTreeLongestConsecutiveSequence.java) | | | | 多做三遍,尽可能简洁 |
-| 299 | [Bulls and Cows](https://leetcode-cn.com/problems/bulls-and-cows/) | | | [Java解答](code_java/src/solution/BullsAndCows.java) | | | | |
-| 300 | [Longest Increasing Subsequence](https://leetcode-cn.com/problems/longest-increasing-subsequence/) | | | [Java解答](code_java/src/solution/LongestIncreasingSubsequence.java) | | | | |
-| 301 | [Remove Invalid Parentheses](https://leetcode-cn.com/problems/remove-invalid-parentheses/) | | | [Java解答](code_java/src/solution/RemoveInvalidParentheses.java) | | | | 比较难,多做几遍 |
-| 302 | [Smallest Rectangle Enclosing Black Pixels](https://leetcode-cn.com/problems/smallest-rectangle-enclosing-black-pixels/) | | | [Java解答](code_java/src/solution/SmallestRectangleEnclosingBlackPixels.java) | | | | |
-| 303 | [Range Sum Query - Immutable](https://leetcode-cn.com/problems/range-sum-query-immutable/) | | | [Java解答](code_java/src/solution/NumArray.java) | | | | |
-| 304 | [Range Sum Query 2D - Immutable](https://leetcode-cn.com/problems/range-sum-query-2d-immutable/) | | | [Java解答](code_java/src/solution/NumMatrix.java) | | | | |
-| 305 | [Number of Islands II](https://leetcode-cn.com/problems/number-of-islands-ii/) | | | [Java解答](code_java/src/solution/NumberOfIslandsII.java) | | | | 这题多做几遍,经典的UF |
-| 307 | [Range Sum Query - Mutable](https://leetcode-cn.com/problems/range-sum-query-mutable/) | | | [Java解答](code_java/src/solution/NumArrayII.java) | | | | 和#303, #304, #308定要多做几遍,掌握BIT |
-| 308 | [Range Sum Query 2D - Mutable](https://leetcode-cn.com/problems/range-sum-query-2d-mutable/) | | | [Java解答](code_java/src/solution/NumMatrixII.java) | | | | |
-| 309 | [Best Time to Buy and Sell Stock with Cooldown](https://leetcode-cn.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/) | | | [Java解答](code_java/src/solution/BestTimeBuySellStockWithCoolDown.java) | | | | |
-| 310 | [Minimum Height Trees](https://leetcode-cn.com/problems/minimum-height-trees/) | | | [Java解答](code_java/src/solution/MinimumHeightTrees.java) | | | | 这题多做几遍 |
-| 311 | [Sparse Matrix Multiplication](https://leetcode-cn.com/problems/sparse-matrix-multiplication/) | | | [Java解答](code_java/src/solution/SparseMatrixMultiplication.java) | | | | |
-| 312 | [Burst Balloons](https://leetcode-cn.com/problems/burst-balloons/) | | | [Java解答](code_java/src/solution/BurstBalloons.java) | | | | |
-| 313 | [Super Ugly Number](https://leetcode-cn.com/problems/super-ugly-number/) | | | [Java解答](code_java/src/solution/SuperUglyNumber.java) | | | | |
-| 314 | [Binary Tree Vertical Order Traversal](https://leetcode-cn.com/problems/binary-tree-vertical-order-traversal/) | | | [Java解答](code_java/src/solution/BinaryTreeVerticalOrderTraversal.java) | | | | |
-| 315 | [Count of Smaller Numbers After Self](https://leetcode-cn.com/problems/count-of-smaller-numbers-after-self/) | | | [Java解答](code_java/src/solution/CountOfSmallerNumbersAfterSelf.java) | | | | |
-| 316 | [Remove Duplicate Letters](https://leetcode-cn.com/problems/remove-duplicate-letters/) | | | [Java解答](code_java/src/solution/RemoveDuplicateLetters.java) | | | | |
-| 317 | [Shortest Distance from All Buildings](https://leetcode-cn.com/problems/shortest-distance-from-all-buildings/) | | | [Java解答](code_java/src/solution/ShortestDistanceFromAllBuildings.java) | | | | 典型的bfs,多做两遍 |
-| 319 | [Bulb Switcher](https://leetcode-cn.com/problems/bulb-switcher/) | | | [Java解答](code_java/src/solution/BulbSwitcher.java) | | | | |
-| 320 | [Generalized Abbreviation](https://leetcode-cn.com/problems/generalized-abbreviation/) | | | [Java解答](code_java/src/solution/GeneralizedAbbreviation.java) | | | | 这题是典型的back tracking,多做几遍 |
-| 322 | [Coin Change](https://leetcode-cn.com/problems/coin-change/) | | | [Java解答](code_java/src/solution/CoinChange.java) | | | | |
-| 323 | [Number of Connected Components in an Undirected Graph](https://leetcode-cn.com/problems/number-of-connected-components-in-an-undirected-graph/) | | | [Java解答](code_java/src/solution/NumberOfConnectedComponents.java) | | | | 典型的图,多看两遍 |
-| 324 | [Wiggle Sort II](https://leetcode-cn.com/problems/wiggle-sort-ii/) | | | [Java解答](code_java/src/solution/WiggleSortII.java) | | | | |
-| 325 | [Maximum Size Subarray Sum Equals k](https://leetcode-cn.com/problems/maximum-size-subarray-sum-equals-k/) | | | [Java解答](code_java/src/solution/MaximumSizeSubarraySumEqualsK.java) | | | | 这题思路有意思,多做几遍 |
-| 328 | [Odd Even Linked List](https://leetcode-cn.com/problems/odd-even-linked-list/) | | | [Java解答](code_java/src/solution/OddEvenLinkedList.java) | | | | |
-| 329 | [Longest Increasing Path in a Matrix](https://leetcode-cn.com/problems/longest-increasing-path-in-a-matrix/) | | | [Java解答](code_java/src/solution/LongestIncreasingPathInAMatrix.java) | | | | 这题要多做几遍 |
-| 332 | [Reconstruct Itinerary](https://leetcode-cn.com/problems/reconstruct-itinerary/) | | | [Java解答](code_java/src/solution/ReconstructItinerary.java) | | | | |
-| 333 | [Largest BST Subtree](https://leetcode-cn.com/problems/largest-bst-subtree/) | | | [Java解答](code_java/src/solution/LargestBSTSubtree.java) | | | | 这道题虽然不难,但是折腾了很久,一定要多做 |
-| 334 | [Increasing Triplet Subsequence](https://leetcode-cn.com/problems/increasing-triplet-subsequence/) | | | [Java解答](code_java/src/solution/IncreasingTripletSubsequence.java) | | | | |
-| 335 | [Self Crossing](https://leetcode-cn.com/problems/self-crossing/) | | | [Java解答](code_java/src/solution/SelfCrossing.java) | | | | |
-| 336 | [Palindrome Pairs](https://leetcode-cn.com/problems/palindrome-pairs/) | | | [Java解答](code_java/src/solution/PalindromePairs.java) | | | | |
-| 337 | [House Robber III](https://leetcode-cn.com/problems/house-robber-iii/) | | | [Java解答](code_java/src/solution/HouseRobberIII.java) | | | | 建议再做两遍 |
-| 339 | [Nested List Weight Sum](https://leetcode-cn.com/problems/nested-list-weight-sum/) | | | [Java解答](code_java/src/solution/NestedListWeightSum.java) | | | | |
-| 340 | [Longest Substring with At Most K Distinct Characters](https://leetcode-cn.com/problems/longest-substring-with-at-most-k-distinct-characters/) | | | [Java解答](code_java/src/solution/LongestSubstringWithAtMostKDistinctCharacters.java) | | | | 和#159类似 |
-| 341 | [Flatten Nested List Iterator](https://leetcode-cn.com/problems/flatten-nested-list-iterator/) | | | [Java解答](code_java/src/solution/src/NestedIterator.java) | | | | 这题有点意思,多做两遍 |
-| 344 | [Reverse String](https://leetcode-cn.com/problems/reverse-string/) | | | [Java解答](code_java/src/solution/ReverseString.java) | | | | |
-| 345 | [Reverse Vowels of a String](https://leetcode-cn.com/problems/reverse-vowels-of-a-string/) | | | [Java解答](code_java/src/solution/ReverseVowelsOfaString.java) | | | | |
-| 346 | [Moving Average from Data Stream](https://leetcode-cn.com/problems/moving-average-from-data-stream/) | | | [Java解答](code_java/src/solution/MovingAverage.java) | | | | |
-| 347 | [Top K Frequent Elements](https://leetcode-cn.com/problems/top-k-frequent-elements/) | | | [Java解答](code_java/src/solution/TopKFrequentElements.java) | | | | |
-| 349 | [Intersection of Two Arrays](https://leetcode-cn.com/problems/intersection-of-two-arrays/) | | | [Java解答](code_java/src/solution/IntersectionOfTwoArrays.java) | | | | |
-| 350 | [Intersection of Two Arrays II](https://leetcode-cn.com/problems/intersection-of-two-arrays-ii/) | | | [Java解答](code_java/src/solution/IntersectionOfTwoArraysII.java) | | | | |
-| 351 | [Android Unlock Patterns](https://leetcode-cn.com/problems/android-unlock-patterns/) | | | [Java解答](code_java/src/solution/AndroidUnlockPatterns.java) | | | | 这题多做几遍 |
-| 357 | [Count Numbers with Unique Digits](https://leetcode-cn.com/problems/count-numbers-with-unique-digits/) | | | [Java解答](code_java/src/solution/CountNumberWithUniqueDigits.java) | | | | |
-| 358 | [Rearrange String k Distance Apart](https://leetcode-cn.com/problems/rearrange-string-k-distance-apart/) | | | [Java解答](code_java/src/solution/RearrangeStringKDistanceApart.java) | | | | |
-| 359 | [Logger Rate Limiter](https://leetcode-cn.com/problems/logger-rate-limiter/) | | | [Java解答](code_java/src/solution/LoggerRateLimiter.java) | | | | 这题如果不考虑空间消耗的话其实很简单 |
-| 361 | [Bomb Enemy](https://leetcode-cn.com/problems/bomb-enemy/) | | | [Java解答](code_java/src/solution/BombEnemy.java) | | | | 这题多做几遍,开始没思路 |
-| 364 | [Nested List Weight Sum II](https://leetcode-cn.com/problems/nested-list-weight-sum-ii/) | | | [Java解答](code_java/src/solution/NestedListWeightSumII.java) | | | | |
-| 366 | [Find Leaves of Binary Tree](https://leetcode-cn.com/problems/find-leaves-of-binary-tree/) | | | [Java解答](code_java/src/solution/FindLeavesOfBinaryTree.java) | | | | 这道题刚开始还没思路 |
-| 367 | [Valid Perfect Square](https://leetcode-cn.com/problems/valid-perfect-square) | | | [Java解答](code_java/src/solution/ValidPerfectSquare.java) | | | | |
-| 369 | [Plus One Linked List](https://leetcode-cn.com/problems/plus-one-linked-list/) | | | [Java解答](code_java/src/solution/PlusOneLinkedList.java) | | | | |
-| 370 | [Range Addition](https://leetcode-cn.com/problems/range-addition/) | | | [Java解答](code_java/src/solution/RangeAddition.java) | | | | |
-| 373 | [Find K Pairs with Smallest Sums](https://leetcode-cn.com/problems/find-k-pairs-with-smallest-sums/) | | | [Java解答](code_java/src/solution/FindKPairsWithSmallestSums.java) | | | | |
-| 374 | [Guess Number Higher or Lower](https://leetcode-cn.com/problems/guess-number-higher-or-lower/) | | | [Java解答](code_java/src/solution/GuessNumberHigherOrLower.java) | | | | |
-| 375 | [Guess Number Higher or Lower II](https://leetcode-cn.com/problems/guess-number-higher-or-lower-ii/) | | | [Java解答](code_java/src/solution/GuessNumberHigherOrLowerII.java) | | | | |
-| 377 | [Combination Sum IV](https://leetcode-cn.com/problems/combination-sum-iv/) | | | [Java解答](code_java/src/solution/src/combinationSum4.java) | | | | |
-| 378 | [Kth Smallest Element in a Sorted Matrix](https://leetcode-cn.com/problems/kth-smallest-element-in-a-sorted-matrix/) | | | [Java解答](code_java/src/solution/KthSmallestElementInASortedMatrix.java) | | | | |
-| 380 | [Insert Delete GetRandom O(1)](https://leetcode-cn.com/problems/insert-delete-getrandom-o1/) | | | [Java解答](code_java/src/solution/src/RandomizedSet.java) | | | | 这道题很有意思,多做几遍 |
-| 381 | [Insert Delete GetRandom O(1) - Duplicates allowed](https://leetcode-cn.com/problems/insert-delete-getrandom-o1-duplicates-allowed/) | | | [Java解答](code_java/src/solution/src/RandomizedCollection.java) | | | | |
-| 382 | [Linked List Random Node](https://leetcode-cn.com/problems/linked-list-random-node/) | | | [Java解答](code_java/src/solution/LinkedListRandomNode.java) | | | | |
-| 384 | [Shuffle an Array](https://leetcode-cn.com/problems/shuffle-an-array/) | | | [Java解答](code_java/src/solution/ShuffleAnArray.java) | | | | |
-| 387 | [First Unique Character in a String](https://leetcode-cn.com/problems/first-unique-character-in-a-string/) | | | [Java解答](code_java/src/solution/FirstUniqueCharacterInAString.java) | | | | |
-| 388 | [Longest Absolute File Path](https://leetcode-cn.com/problems/longest-absolute-file-path/) | | | [Java解答](code_java/src/solution/LongestAbsoluteFilePath.java) | | | | 其实不难,乍看没思路,多做几遍 |
-| 391 | [Perfect Rectangle](https://leetcode-cn.com/problems/perfect-rectangle/) | | | [Java解答](code_java/src/solution/PerfectRectangle.java) | | | | 这题很trick,多做两遍 |
-| 392 | [Is Subsequence](https://leetcode-cn.com/problems/is-subsequence/)| 判断子序列 | esay | [贪心算法/DP算法](code_java/src/solution/IsSubsequence.java) | | | | DP算法:不建议使用,纯粹学习思想 |
-| 393 | [UTF-8 Validation](https://leetcode-cn.com/problems/utf-8-validation/) | | | [Java解答](code_java/src/solution/UTFValidation.java) | | | | 错了很多次,多做几遍 |
-| 394 | [Decode String](https://leetcode-cn.com/problems/decode-string/) | | | [Java解答](code_java/src/solution/DecodeString.java) | | | | 这题容易错,多做四遍 |
-| 395 | [Longest Substring with At Least K Repeating Characters](https://leetcode-cn.com/problems/longest-substring-with-at-least-k-repeating-characters/) | | | [Java解答](code_java/src/solution/LongestSubstringWithAtLeastKRepeatingCharacters.java) | | | | |
-| 398 | [Random Pick Index](https://leetcode-cn.com/problems/random-pick-index/) | | | [Java解答](code_java/src/solution/RandomPickIndex.java) | | | | |
-| 399 | [Evaluate Division](https://leetcode-cn.com/problems/evaluate-division/) | | | [Java解答](code_java/src/solution/EvaluateDivision.java) | | | | 这题多做几遍 |
-| 401 | [Binary Watch](https://leetcode-cn.com/problems/binary-watch/) | | | [Java解答](code_java/src/solution/BinaryWatch.java) | | | | |
-| 404 | [Sum of Left Leaves](https://leetcode-cn.com/problems/sum-of-left-leaves/) | | | [Java解答](code_java/src/solution/SumOfLeftLeaves.java) | | | | |
-| 406 | [Queue Reconstruction by Height](https://leetcode-cn.com/problems/queue-reconstruction-by-height/) | | | [Java解答](code_java/src/solution/QueueReconstructionByHeight.java) | | | | 这题开始没思路,多做几遍 |
-| 407 | [Trapping Rain Water II](https://leetcode-cn.com/problems/trapping-rain-water-ii/) | | | [Java解答](code_java/src/solution/TrappingRainWaterII.java) | | | | |
-| 408 | [Valid Word Abbreviation](https://leetcode-cn.com/problems/valid-word-abbreviation/) | | | [Java解答](code_java/src/solution/src/validWordAbbreviation.java) | | | | 多做两遍 |
-| 409 | [Longest Palindrome](https://leetcode-cn.com/problems/longest-palindrome/) | | | [Java解答](code_java/src/solution/LongestPalindrome.java) | | | | |
-| 410 | [Split Array Largest Sum](https://leetcode-cn.com/problems/split-array-largest-sum) | | | [Java解答](code_java/src/solution/SplitArrayLargestSum.java) | | | | |
-| 412 | [Fizz Buzz](https://leetcode-cn.com/problems/fizz-buzz/) | | | [Java解答](code_java/src/solution/FizzBuzz.java) | | | | |
-| 413 | [Third Maximum Number](https://leetcode-cn.com/problems/third-maximum-number/) | | | [Java解答](code_java/src/solution/ThirdMaximumNumber.java) | | | | |
-| 418 | [Sentence Screen Fitting](https://leetcode-cn.com/problems/sentence-screen-fitting/) | | | [Java解答](code_java/src/solution/SentenceScreenFitting.java) | | | | 这题思路巧妙,多做几遍,常规思路超时 |
-| 422 | [Valid Word Square](https://leetcode-cn.com/problems/valid-word-square/) | | | [Java解答](code_java/src/solution/ValidWordSquare.java) | | | | |
-| 425 | [Word Squares](https://leetcode-cn.com/problems/word-squares/) | | | [Java解答](code_java/src/solution/src/WordSquare.java) | | | | 这题很典型,多做几遍 |
-| 436 | [Find Right Interval](https://leetcode-cn.com/problems/find-right-interval/) | | | [Java解答](code_java/src/solution/FindRightInterval.java) | | | | |
-| 437 | [Path Sum III](https://leetcode-cn.com/problems/path-sum-iii/) | | | [Java解答](code_java/src/solution/PathSumIII.java) | | | | 这道题错了很多遍,要重点关注 |
-| 438 | [Find All Anagrams in a String](https://leetcode-cn.com/problems/find-all-anagrams-in-a-string/) | | | [Java解答](code_java/src/solution/FindAllAnagramsInString.java) | | | | 这道题非常经典,最优解法需要多做几遍,保证once bug free |
-| 442 | [Find All Duplicates in an Array](https://leetcode-cn.com/problems/find-all-duplicates-in-an-array/) | | | [Java解答](code_java/src/solution/FindAllDuplicatesInAnArray.java) | | | | |
-| 445 | [Add Two Numbers II](https://leetcode-cn.com/problems/add-two-numbers-ii/discuss/) | | | [Java解答](code_java/src/solution/AddTwoNumbersII.java) | | | | |
-| 448 | [Find All Numbers Disappeared in an Array](https://leetcode-cn.com/problems/find-all-numbers-disappeared-in-an-array) | | | [Java解答](code_java/src/solution/FindAllNumbersDisappearedInAnArray.java) | | | | |
-| 449 | [Serialize and Deserialize BST](https://leetcode-cn.com/problems/serialize-and-deserialize-bst) | | | [Java解答](code_java/src/solution/SerializeAndDeserializeBST.java) | | | | 和#297一样 |
-| 450 | [Delete Node in a BST](https://leetcode-cn.com/problems/delete-node-in-a-bst/) | 删除二叉搜索树中的节点 | | [Java解答](code_java/src/solution/DeleteNodeInBST.java) | | | | 这题非常经典,值得多做十遍 |
-| 451 | [Sort Characters By Frequency](https://leetcode-cn.com/problems/sort-characters-by-frequency/) | | | [Java解答](code_java/src/solution/SortCharactersByFrequency.java) | | | | |
-| 455 | [Assign Cookies](https://leetcode-cn.com/problems/assign-cookies/) | 分发饼干 | esay | [贪心算法](code_java/src/solution/AssignCookies.java) | | | | | |
-| 459 | [Repeated Substring Pattern](https://leetcode-cn.com/problems/repeated-substring-pattern/) | | | [Java解答](code_java/src/solution/RepeatedSubstringPattern.java) | | | | |
-| 477 | [Total Hamming Distance](https://leetcode-cn.com/problems/total-hamming-distance/) | | | [Java解答](code_java/src/solution/TotalHammingDistance.java) | | | | |
-| 480 | [Sliding Window Median](https://leetcode-cn.com/problems/sliding-window-median/) | | | [Java解答](code_java/src/solution/SlidingWindowMedian.java) | | | | |
-| 482 | [License Key Formatting](https://leetcode-cn.com/problems/license-key-formatting/) | | | [Java解答](code_java/src/solution/LicenseKeyFormatting.java) | | | | |
-| 483 | [Smallest Good Base](https://leetcode-cn.com/problems/smallest-good-base/) | | | [Java解答](code_java/src/solution/SmallestGoodBase.java) | | | | |
-| 485 | [Max Consecutive Ones](https://leetcode-cn.com/problems/max-consecutive-ones/) | | | [Java解答](code_java/src/solution/MaxConsecutiveOnes.java) | | | | |
-| 487 | [Max Consecutive Ones II](https://leetcode-cn.com/problems/max-consecutive-ones-ii/) | | | [Java解答](code_java/src/solution/MaxConsecutiveOnesII.java) | | | | |
-| 501 | [Find Mode in Binary Search Tree](https://leetcode-cn.com/problems/find-mode-in-binary-search-tree/) | | | [Java解答](code_java/src/solution/FindModeInBinarySearchTree.java) | | | | 不难,容易错,多做两次 |
-| 508 | [Most Frequent Subtree Sum](https://leetcode-cn.com/problems/most-frequent-subtree-sum/submissions/) | | | [Java解答](code_java/src/solution/MostFrequentSubtreeSum.java) | | | | |
-| 513 | [Find Bottom Left Tree Value](https://leetcode-cn.com/problems/find-bottom-left-tree-value/) | | | [Java解答](code_java/src/solution/FindBottomLeftTreeValue.java) | | | | |
-| 515 | [Find Largest Value in Each Tree Row](https://leetcode-cn.com/problems/find-largest-value-in-each-tree-row/) | | | [Java解答](code_java/src/solution/FindLargestValueInEachTreeRow.java) | | | | |
-| 524 | [Longest Word in Dictionary through Deleting](https://leetcode-cn.com/problems/longest-word-in-dictionary-through-deleting/) | | | [Java解答](code_java/src/solution/LongestWordInDictionaryThroughDeleting.java) | | | | |
-| 526 | [Beautiful Arrangement](https://leetcode-cn.com/problems/beautiful-arrangement/) | | | [Java解答](code_java/src/solution/BeautifulArrangement.java) | | | | |
-| 535 | [Encode and Decode TinyURL](https://leetcode-cn.com/problems/encode-and-decode-tinyurl/) | | | [Java解答](code_java/src/solution/EncodeAndDecodeTinyURL.java) | | | | |
-| 538 | [Convert BST to Greater Tree](https://leetcode-cn.com/problems/convert-bst-to-greater-tree/) | | | [Java解答](code_java/src/solution/ConvertBSTToGreaterTree.java) | | | | |
-| 541 | [Reverse String II](https://leetcode-cn.com/problems/reverse-string-ii/) | | | [Java解答](code_java/src/solution/ReverseStringII.java) | | | | |
-| 543 | [Diameter of Binary Tree](https://leetcode-cn.com/problems/diameter-of-binary-tree/) | | | [Java解答](code_java/src/solution/DiameterOfBinaryTree.java) | | | | 这题易错 |
-| 547 | [Friend Circles](https://leetcode-cn.com/problems/friend-circles/) | | | [Java解答](code_java/src/solution/FriendCircles.java) | | | | |
-| 557 | [Reverse Words in a String III](https://leetcode-cn.com/problems/reverse-words-in-a-string-iii/) | | | [Java解答](code_java/src/solution/ReverseWordsInAStringIII.java) | | | | |
-| 560 | [Subarray Sum Equals K](https://leetcode-cn.com/problems/subarray-sum-equals-k/) | | | [Java解答](code_java/src/solution/SubarraySumEqualsK.java) | | | | |
-| 563 | [Binary Tree Tilt](https://leetcode-cn.com/problems/binary-tree-tilt/) | | | [Java解答](code_java/src/solution/BinaryTreeTilt.java) | | | | |
-| 564 | [Find the Closest Palindrome](https://leetcode-cn.com/problems/find-the-closest-palindrome/) | | | [Java解答](code_java/src/solution/FindTheClosestPalindrome.java) | | | | 此题暴力法即可 |
-| 572 | [Subtree of Another Tree](https://leetcode-cn.com/problems/subtree-of-another-tree/) | | | [Java解答](code_java/src/solution/SubtreeOfAnotherTree.java) | | | | |
-| 606 | [Construct String from Binary Tree](https://leetcode-cn.com/problems/construct-string-from-binary-tree/) | | | [Java解答](code_java/src/solution/ConstructStringFromBinaryTree.java) | | | | |
-| 617 | [Merge Two Binary Trees](https://leetcode-cn.com/problems/merge-two-binary-trees/) | | | [Java解答](code_java/src/solution/MergeTwoBinaryTrees.java) | | | | 很简单 |
-| 621 | [Task Scheduler](https://leetcode-cn.com/problems/task-scheduler/) | | | [Java解答](code_java/src/solution/TaskScheduler.java) | | | | |
-| 637 | [Average of Levels in Binary Tree](https://leetcode-cn.com/problems/average-of-levels-in-binary-tree/#/description) | | | [Java解答](code_java/src/solution/AverageOfLevelsInBinaryTree.java) | | | | |
-| 652 | [Find Duplicate Subtrees](https://leetcode-cn.com/problems/find-duplicate-subtrees/) | | | [Java解答](code_java/src/solution/FindDuplicateSubtrees.java) | | | | 开始还没思路 |
-| 653 | [Two Sum IV - Input is a BST](https://leetcode-cn.com/problems/two-sum-iv-input-is-a-bst/) | | | [Java解答](code_java/src/solution/TwoSumIV.java) | | | | |
-| 654 | [Maximum Binary Tree](https://leetcode-cn.com/problems/maximum-binary-tree/description/) | | | [Java解答](code_java/src/solution/MaximumBinaryTree.java) | | | | |
-| 669 | [Trim a Binary Search Tree](https://leetcode-cn.com/problems/trim-a-binary-search-tree/) | | | [Java解答](code_java/src/solution/TrimABinarySearchTree.java) | | | | |
-| 681 | [Next Closest Time](https://leetcode-cn.com/problems/next-closest-time/) | | | [Java解答](code_java/src/solution/NextClosestTime.java) | | | | 这题多做几遍 |
-| 683 | [K Empty Slots](https://leetcode-cn.com/problems/k-empty-slots/) | | | [Java解答](code_java/src/solution/KEmptySlots.java) | | | | |
-| 684 | [Redundant Connection](https://leetcode-cn.com/problems/redundant-connection/) | | | [Java解答](code_java/src/solution/RedundantConnection.java) | | | | |
-| 687 | [Longest Univalue Path](https://leetcode-cn.com/problems/longest-univalue-path/) | | | [Java解答](code_java/src/solution/LongestUnivaluePath.java) | | | | |
-| 695 | [Max Area of Island](https://leetcode-cn.com/problems/max-area-of-island/) | | | [Java解答](code_java/src/solution/MaxAreaOfIsland.java) | | | | |
-| 703 | [Kth Largest Element in a Stream](https://leetcode-cn.com/problems/kth-largest-element-in-a-stream/) | 数据流中第K大元素 | medium | [优先级队列解法](code_java/src/solution/KthLargestElementInAStream.java) / [小根堆解法](](code_java/src/solution/KthLargestElementInAStream2.java)) | | | | 优先级队列解法/小根堆解法 |
-| 771 | [Jewels and Stones](https://leetcode-cn.com/problems/jewels-and-stones/) | | | [Java解答](code_java/src/solution/JewelsAndStones.java) | | | | |
-| 814 | [Binary Tree Pruning](https://leetcode-cn.com/problems/binary-tree-pruning/) | | | [Java解答](code_java/src/solution/JewelsAndStones.java) | | | | |
-| 819 | [Most Common Word](https://leetcode-cn.com/problems/most-common-word/) | | | [Java解答](code_java/src/solution/MostCommonWord.java) | | | | |
-| 843 | [Guess the Word](https://leetcode-cn.com/problems/guess-the-word/) | | | [Java解答](code_java/src/solution/GuessTheWord.java) | | | | |
-| 844 | [Backspace String Compare](https://leetcode-cn.com/problems/backspace-string-compare/) | | | [Java解答](code_java/src/solution/BackspaceStringCompare.java) | | | | |
-| 849 | [Maximize Distance to Closest Person](https://leetcode-cn.com/problems/maximize-distance-to-closest-person/) | | | [Java解答](code_java/src/solution/MaximizeDistanceToClosestPerson.java) | | | | |
-| 857 | [Minimum Cost to Hire K Workers](https://leetcode-cn.com/problems/minimum-cost-to-hire-k-workers/) | | | [Java解答](code_java/src/solution/MinimumCostToHireKWorkers.java) | | | | |
-| 872 | [Leaf-Similar Trees](https://leetcode-cn.com/problems/leaf-similar-trees/) | | | [Java解答](code_java/src/solution/LeafSimilarTrees.java) | | | | |
-| 889 | [Construct Binary Tree from Preorder and Postorder Traversal](https://leetcode-cn.com/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | | | [Java解答](code_java/src/solution/ConstructBinaryTreeFromPreorderAndPostorderTraversal.java) | | | | |
-| 904 | [Fruit Into Baskets](https://leetcode-cn.com/problems/fruit-into-baskets/) | | | [Java解答](code_java/src/solution/FruitIntoBaskets.java) | | | | |
-| 929 | [Unique Email Addresses](https://leetcode-cn.com/problems/unique-email-addresses/) | | | [Java解答](code_java/src/solution/UniqueEmailAddresses.java) | | | | |
+Latex排版整理的电子书
+- [Backtracking](./ebook/backtracking/leetcode-backtracking.pdf)
+- [Graph](./ebook/graph/leetcode-graph.pdf)
+- [Tree](./ebook/tree/leetcode-tree.pdf)
+- [DP](./ebook/dp/leetcode-dp.pdf)
+- [Array](./ebook/array/leetcode-array.pdf)
+- [List](./ebook/list/leetcode-list.pdf)
-## 二、电子书(pdf)
- Latex排版整理的电子书
- - [Backtracking](./ebook/backtracking/leetcode-backtracking.pdf)
- - [Graph](./ebook/graph/leetcode-graph.pdf)
- - [Tree](./ebook/tree/leetcode-tree.pdf)
- - [DP](./ebook/dp/leetcode-dp.pdf)
- - [Array](./ebook/array/leetcode-array.pdf)
- - [List](./ebook/list/leetcode-list.pdf)
+## 总结
-
+- [刷题要点总结](./doc/Attention.md)
+- [Facebook面试总结](./doc/Facebook.md)
+- [Bitset技巧](./doc/BitSet.md)
+- [Map新接口](./doc/Map.md)
+- [其它题目](extras.md)
-## 三、文档列表
- - [刷题要点总结](./doc/Attention.md)
- - [Facebook面试总结](./doc/Facebook.md)
- - [Bitset技巧](./doc/BitSet.md)
- - [Map新接口](./doc/Map.md)
- - [其它题目](extras.md)
+# 数据结构与算法
-
+* [五大常用算法](algorithms/五大常用算法.md)
+* [OJ练习](algorithms/oj.md)
+* [常见笔试题](algorithms/常见笔试题.md)
----------------------------------------
-**项目规范**
+**项目规范**: 本文使用 [`Markdown`](https://www.markdownguide.org/basic-syntax) 编写, 排版符合[`中文技术文档写作规范`](https://github.com/hbulpf/document-style-guide)。Find Me On [**Github**](https://github.com/hbulpf/LeetcodeEveryday) , [**Gitee**](https://gitee.com/sifangcloud/LeetcodeEveryday)
-本文使用 [`Markdown`](https://www.markdownguide.org/basic-syntax) 编写, 排版符合[`中文技术文档写作规范`](https://github.com/hbulpf/document-style-guide)。Find Me On [**Github**](https://github.com/hbulpf/LeetcodeEveryday) , [**Gitee**](https://gitee.com/sifangcloud/LeetcodeEveryday)
+**友情贡献**: @[**RunAtWorld**](http://www.github.com/RunAtWorld)
-**友情贡献**
-
-@[**RunAtWorld**](http://www.github.com/RunAtWorld)
-
-
-#### 关注公众号 『四方云和』 获取更多优质文章 ~
+**关注公众号 『四方云和』 获取更多优质文章 ~**

diff --git a/_coverpage.md b/_coverpage.md
new file mode 100644
index 0000000000000000000000000000000000000000..12b5a6099b32580592a6bd95900f2dc2b9f5443b
--- /dev/null
+++ b/_coverpage.md
@@ -0,0 +1,14 @@
+
+
+# 力扣每日一题 1.0
+
+[仓库](https://gitee.com/sifangcloud/LeetcodeEveryday)
+[开始](#每日力扣)
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/_media/favicon.ico b/_media/favicon.ico
new file mode 100644
index 0000000000000000000000000000000000000000..d47eb743623a560ac63eaa7554a6ce72869edf1c
Binary files /dev/null and b/_media/favicon.ico differ
diff --git a/_media/leetcode-s.png b/_media/leetcode-s.png
new file mode 100644
index 0000000000000000000000000000000000000000..81f185fc9b7de869686416d9759759c5c34e2a36
Binary files /dev/null and b/_media/leetcode-s.png differ
diff --git a/_media/leetcode.png b/_media/leetcode.png
new file mode 100644
index 0000000000000000000000000000000000000000..37019ac3b5ebba8c5f21b761c3db66bf6f89463e
Binary files /dev/null and b/_media/leetcode.png differ
diff --git a/_media/leetcode.svg b/_media/leetcode.svg
new file mode 100644
index 0000000000000000000000000000000000000000..609d6cc617a8ba950f99ad6918ef2dc34a21fa99
--- /dev/null
+++ b/_media/leetcode.svg
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/_media/leetcodeEveryday.jpg b/_media/leetcodeEveryday.jpg
new file mode 100644
index 0000000000000000000000000000000000000000..0b7c0dc19b032d4b95d76a2c757d8cffc41ed30e
Binary files /dev/null and b/_media/leetcodeEveryday.jpg differ
diff --git a/_navbar.md b/_navbar.md
new file mode 100644
index 0000000000000000000000000000000000000000..caff76e43dc52a21766295d83a3913372a6de300
--- /dev/null
+++ b/_navbar.md
@@ -0,0 +1,8 @@
+
+
+* 算法
+
+* LeetCode
+ * [LeetCode全部题目](LeetCode全部题目.md)
+ * [LeetCode题目分类](LeetCode题目分类.md)
+ * [其它题目](extras.md)
\ No newline at end of file
diff --git a/_sidebar.md b/_sidebar.md
new file mode 100644
index 0000000000000000000000000000000000000000..8e0807b0f1f0c00f855d0e991c99d10f2c048f1b
--- /dev/null
+++ b/_sidebar.md
@@ -0,0 +1,11 @@
+* 算法
+ * [五大常用算法](algorithms/五大常用算法.md)
+ * [OJ练习](algorithms/oj.md)
+ * [常见笔试题](algorithms/常见笔试题.md)
+
+
+* LeetCode
+ * [每日打卡](每日打卡.md)
+ * [LeetCode全部题目](LeetCode全部题目.md)
+ * [LeetCode题目分类](LeetCode题目分类.md)
+ * [其它题目](extras.md)
\ No newline at end of file
diff --git a/algorithms/README.md b/algorithms/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..38b3661be191299613d95efe8fa36ec864529283
--- /dev/null
+++ b/algorithms/README.md
@@ -0,0 +1,146 @@
+# 数据结构与算法
+## 基本数据结构与算法
+
+1. 线性表
+ 1. 顺序存储
+ 1. 顺序表
+ 2. 链式存储
+ 1. 指针实现
+ 1. 单链表
+ 2. 双链表
+ 3. 循环链表
+ 2. 数组实现
+ 1. 静态链表
+2. 树
+ 1. 二叉树
+ 1. 线索二叉树
+ 2. 排序二叉树
+ 1. 二叉排序树
+ 2. [平衡二叉树](tree/bitree/link/balanced/BalancedTree.java): 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。
+ 3. BTree
+ 1. 基本BTree
+ 2. B+Tree
+ 4. 哈夫曼树
+ 5. 红黑树
+ 2. 多叉树
+3. 图
+ 1. 图的存储
+ 1. 邻接矩阵,邻接表
+ 2. 邻接多重表,狮子链表
+ 2. 图的遍历
+ 1. BFS
+ 2. DFS
+ 3. 应用
+ 1. 最小生成树
+ 1. Prim算法
+ 2. Kruskal算法
+ 2. 最短路径
+ 1. Dijkstra算法
+ 2. Floy算法
+ 3. 拓扑排序 AOV网
+ 4. 关键路径 AOE网
+4. 排序
+ 1. comparison sort
+ 1. 插入排序 insertion
+ 1. 插入排序 insertion sort
+ 2. 希尔排序 shell sort
+ 2. 交换排序 swap
+ 1. 冒泡排序 bubble sort
+ 2. 快速排序 quick sort
+ 3. 选择排序
+ 1. 选择排序 selection sort
+ 2. 堆排序 heap sort
+ 4. 归并排序 merge sort
+ 2. integer sort
+ 1. 计数排序 counting sort
+ 2. 桶排序 bucket sort
+ 3. 基数排序 radix sort
+5. 堆/栈/队列
+ 1. [栈](../../src/main/dev/algorithm/stack)
+ 1. 顺序栈
+ 2. 链栈
+ 3. 共享栈
+ 2. [队列](queue)
+ 1. 链式队列
+ 2. 循环队列
+ 3. 双端队列
+ 3. [堆](../../src/main/dev/algorithm/heap)
+ 1. 大根堆
+ 2. 小根堆
+6. 查找
+ 1. 顺序查找
+ 2. 折半查找
+ 3. 分块查找
+ 4. Hash查找
+
+### 线性表
+
+#### 顺序表
+
+1. 使用连续存储的单元
+2. 线性表数组大小和空间在动态分配下可以调整,但也是申请一块更大的空间替换原始空间
+3. 随机访问:查找某个下标的元素, 复杂度为O(1);按元素值查找某个元素,复杂度为O(N) ; 插入和增加需要大量元素,复杂度为O(N)
+
+#### [链表](../../src/main/dev/algorithm/linkedlist)
+
+
+### [树](../../src/main/dev/algorithm/tree)
+
+1. 二叉树
+ * [平衡二叉树](tree/bitree/link/balanced/BalancedTree.java): 一个二叉树每个节点的左右两个子树的高度差的绝对值不超过1。
+2. BTree
+ * 基本BTree
+ * B+Tree
+3. 多叉树
+4. 红黑树
+
+### [图](../../src/main/dev/algorithm/graph)
+
+
+### [排序算法](../../src/main/dev/algorithm/sort)
+
+
+### 复杂度概览
+
+最基础的是选择和插入,基于选择和插入分别改进出了冒泡和希尔。基于二分思想又提出了归并、快排和堆排序。最后基于数据的分布特征,提出了基数排序。这些排序算法的主要指标总结如下。
+
+| 算法 | 最好时间 | 最坏时间 | 平均时间 | 额外空间 | 稳定性 |
+| :--: | :------: | :------: | :-----------: | :------: | :----: |
+| 选择 | N^2 | N^2 | N^2 | 1 | 不稳定 |
+| 冒泡 | N | N^2 | N^2 | 1 | 稳定 |
+| 插入 | N | N^2 | N^2 | 1 | 稳定 |
+| 希尔 | N | N^2 | N^1.3(不确定) | 1 | 不稳定 |
+| 归并 | N*logN | N*logN | N*logN | N | 稳定 |
+| 快排 | N*logN | N^2 | N*logN | logN至N | 不稳定 |
+| 堆 | N*logN | N*logN | N*logN | 1 | 不稳定 |
+| 基数 | N*k | N*k | N*k | N+k | 稳定 |
+
+
+### 堆/栈/队列
+
+1. [栈](../../src/main/dev/algorithm/stack)
+1. [队列](queue)
+1. [堆](../../src/main/dev/algorithm/heap)
+ 1. 大根堆
+ 2. 小根堆
+
+
+## [五大常用算法](五大常用算法.md)
+
+1. [动态规划](../../src/main/dev/algorithm/dp)
+1. [贪心](../../src/main/dev/algorithm/greedy)
+1. [分治]()
+1. [回溯]()
+1. [分支界定]()
+
+# 练习总结
+
+1. [笔试练习题](exams.md)
+2. [OJ 练习](oj.md)
+3. [google code jam](https://codingcompetitions.withgoogle.com/codejam)
+
+
+## 参考
+
+1. [常见十大(内部)排序算法](https://blog.csdn.net/real_lisa/article/details/82685407)
+1. [常见排序算法的总结 - 复杂度、实现和稳定性](https://www.jianshu.com/p/916b15eae350)
\ No newline at end of file
diff --git a/algorithms/oj.md b/algorithms/oj.md
new file mode 100644
index 0000000000000000000000000000000000000000..73451b10c2993c563f455f0a3617424590202218
--- /dev/null
+++ b/algorithms/oj.md
@@ -0,0 +1,3 @@
+# OJ练习
+
+1. 孪生素数问题
\ No newline at end of file
diff --git "a/algorithms/\344\272\224\345\244\247\345\270\270\347\224\250\347\256\227\346\263\225.md" "b/algorithms/\344\272\224\345\244\247\345\270\270\347\224\250\347\256\227\346\263\225.md"
new file mode 100644
index 0000000000000000000000000000000000000000..ec167e87b25e75a06941e9771d9338f47c63af61
--- /dev/null
+++ "b/algorithms/\344\272\224\345\244\247\345\270\270\347\224\250\347\256\227\346\263\225.md"
@@ -0,0 +1,409 @@
+# 五大常用算法
+
+> 分治、动态规划、贪心、回溯和分支界定
+
+## 算法一:分治算法
+
+### 一、基本概念
+
+在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是 把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并 。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)……
+
+任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时,不需任何计算。n=2时,只要作一次比较即可排好序。n=3时只要作3次比较即可,…。而当n较大时,问题就不那么容易处理了。要想直接解决一个规模较大的问题,有时是相当困难的。
+
+### 二、基本思想及策略
+
+分治法的设计思想是: 将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之 。
+
+分治策略是: 对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解 。这种算法设计策略叫做分治法。
+
+如果原问题可分割成k个子问题,1 < k ≤ n, 且这些子问题都可解并可利用这些子问题的解求出原问题的解,那么这种分治法就是可行的。由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解。 这自然导致递归过程的产生。分治与递归像一对孪生兄弟,经常同时应用在算法设计之 中,并由此产生许多高效算法。
+
+### 三、分治法适用情况
+
+分治法所能解决的问题一般具有以下几个特征:
+1. 该问题的规模 缩小 到一定的程度 就可以容易地解决
+2. 该问题可以分解为若干个规模较小的相同问题,即该问题 具有最优子结构性质 。
+3. 利用该问题分解出的子问题的解 可以合并 为该问题的解;
+4. 该问题所分解出的各个子问题是相互独立的,即 子问题之间不包含公共的子子问题 。
+
+第一条特征是绝大多数问题都可以满足的,因为问题的计算复杂性一般是随着问题规模的增加而增加;
+第二条特征是应用分治法的前提 它也是大多数问题可以满足的,此特征反映了递归思想的应用;
+第三条特征是关键,能否利用分治法完全取决于问题是否具有第三条特征 ,如果 具备了第一条和第二条特征,而不具备第三条特征,则可以考虑用贪心法或动态规划法 。
+第四条特征涉及到分治法的效率 ,如果各子问题是不独立的则分治法要做许多不必要的工作,重复地解公共的子问题,此时虽然可用分治法,但 一般用动态规划法较好 。
+
+### 四、分治法的基本步骤
+
+分治法在每一层递归上都有三个步骤:
+
+```
+step1 分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题;
+
+step2 解决:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题
+
+step3 合并:将各个子问题的解合并为原问题的解。
+```
+
+它的一般的算法设计模式如下:
+
+```
+Divide-and-Conquer(P)
+
+1. if |P|≤n0
+
+2. then return(ADHOC(P))
+
+3. 将P分解为较小的子问题 P1 ,P2 ,...,Pk
+
+4. for i←1 to k
+
+5. do yi ← Divide-and-Conquer(Pi) △ 递归解决Pi
+
+6. T ← MERGE(y1,y2,...,yk) △ 合并子问题
+
+7. return(T)
+```
+
+其中|P|表示问题P的规模;n0为一阈值,表示当问题P的规模不超过n0时,问题已容易直接解出,不必再继续分解。ADHOC(P)是该分治法中的基本子算法,用于直接解小规模的问题P。因此,当P的规模不超过n0时直接用算法ADHOC(P)求解。算法MERGE(y1,y2,…,yk)是该分治法中的合并子算法,用于将P的子问题P1 ,P2 ,…,Pk的相应的解y1,y2,…,yk合并为P的解。
+
+### 五、分治法的复杂性分析
+
+一个分治法将规模为n的问题分成k个规模为n/m的子问题去解。设分解阀值n0=1,且adhoc解规模为1的问题耗费1个单位时间。再设将原问题分解为k个子问题以及用merge将k个子问题的解合并为原问题的解需用f(n)个单位时间。用T(n)表示该分治法解规模为|P|=n的问题所需的计算时间,则有:
+
+```
+T(n)= k T(n/m)+f(n)1
+```
+
+通过迭代法求得方程的解:
+递归方程及其解只给出n等于m的方幂时T(n)的值,但是如果认为T(n)足够平滑,那么由n等于m的方幂时T(n)的值可以估计T(n)的增长速度。通常假定T(n)是单调上升的,从而当
+`mi≤n`
+
+### 六、可使用分治法求解的一些经典问题
+
+```
+(1)二分搜索
+(2)大整数乘法
+(3)Strassen矩阵乘法
+(4)棋盘覆盖
+(5)合并排序
+(6)快速排序
+(7)线性时间选择
+(8)最接近点对问题
+(9)循环赛日程表
+(10)汉诺塔
+```
+
+### 七、依据分治法设计程序时的思维过程
+
+实际上就是类似于数学归纳法,找到解决本问题的求解方程公式,然后根据方程公式设计递归程序。
+1、一定是先找到最小问题规模时的求解方法
+2、然后考虑随着问题规模增大时的求解方法
+3、找到求解的递归函数式后(各种规模或因子),设计递归程序即可。
+
+------
+
+## 算法二:动态规划算法
+
+### 一、基本概念
+
+动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。
+
+### 二、基本思想与策略
+
+基本思想与分治法类似,也是将待求解的问题分解为若干个子问题(阶段),按顺序求解子阶段,前一子问题的解,为后一子问题的求解提供了有用的信息。在求解任一子问题时,列出各种可能的局部解,通过决策保留那些有可能达到最优的局部解,丢弃其他局部解。依次解决各子问题,最后一个子问题就是初始问题的解。
+
+由于动态规划解决的问题多数有重叠子问题这个特点,为减少重复计算,对每一个子问题只解一次,将其不同阶段的不同状态保存在一个二维数组中。
+
+与分治法最大的差别是:适合于用动态规划法求解的问题,经分解后得到的子问题往往不是互相独立的(即下一个子阶段的求解是建立在上一个子阶段的解的基础上,进行进一步的求解)。
+
+### 三、适用的情况
+
+能采用动态规划求解的问题的一般要具有3个性质:
+
+(1) 最优化原理:如果问题的最优解所包含的子问题的解也是最优的,就称该问题具有最优子结构,即满足最优化原理。
+(2) 无后效性:即某阶段状态一旦确定,就不受这个状态以后决策的影响。也就是说,某状态以后的过程不会影响以前的状态,只与当前状态有关。
+(3) 有重叠子问题:即子问题之间是不独立的,一个子问题在下一阶段决策中可能被多次使用到。(该性质并不是动态规划适用的必要条件,但是如果没有这条性质,动态规划算法同其他算法相比就不具备优势)。
+
+### 四、求解的基本步骤
+
+动态规划所处理的问题是一个多阶段决策问题,一般由初始状态开始,通过对中间阶段决策的选择,达到结束状态。这些决策形成了一个决策序列,同时确定了完成整个过程的一条活动路线(通常是求最优的活动路线)。如图所示。动态规划的设计都有着一定的模式,一般要经历以下几个步骤。
+
+```
+ 初始状态→│决策1│→│决策2│→…→│决策n│→结束状态
+ 图1 动态规划决策过程示意图
+12
+```
+
+(1)划分阶段:按照问题的时间或空间特征,把问题分为若干个阶段。在划分阶段时,注意划分后的阶段一定要是有序的或者是可排序的,否则问题就无法求解。
+(2)确定状态和状态变量:将问题发展到各个阶段时所处于的各种客观情况用不同的状态表示出来。当然,状态的选择要满足无后效性。
+(3)确定决策并写出状态转移方程:因为决策和状态转移有着天然的联系,状态转移就是根据上一阶段的状态和决策来导出本阶段的状态。所以如果确定了决策,状态转移方程也就可写出。但事实上常常是反过来做,根据相邻两个阶段的状态之间的关系来确定决策方法和状态转移方程。
+(4)寻找边界条件:给出的状态转移方程是一个递推式,需要一个递推的终止条件或边界条件。
+
+一般,只要解决问题的阶段、状态和状态转移决策确定了,就可以写出状态转移方程(包括边界条件)。
+实际应用中可以按以下几个简化的步骤进行设计:
+(1)分析最优解的性质,并刻画其结构特征。
+(2)递归的定义最优解。
+(3)以自底向上或自顶向下的记忆化方式(备忘录法)计算出最优值
+(4)根据计算最优值时得到的信息,构造问题的最优解
+
+### 五、算法实现的说明
+
+动态规划的主要难点在于理论上的设计,也就是上面4个步骤的确定,一旦设计完成,实现部分就会非常简单。
+使用动态规划求解问题,最重要的就是确定动态规划三要素:
+
+```
+ (1)问题的阶段
+ (2)每个阶段的状态
+ (3)从前一个阶段转化到后一个阶段之间的递推关系。
+123
+```
+
+递推关系必须是从次小的问题开始到较大的问题之间的转化,从这个角度来说,动态规划往往可以用递归程序来实现,不过因为递推可以充分利用前面保存的子问题的解来减少重复计算,所以对于大规模问题来说,有递归不可比拟的优势,这也是动态规划算法的核心之处。
+
+确定了动态规划的这三要素,整个求解过程就可以用一个最优决策表来描述,最优决策表是一个二维表,其中行表示决策的阶段,列表示问题状态,表格需要填写的数据一般对应此问题的在某个阶段某个状态下的最优值(如最短路径,最长公共子序列,最大价值等),填表的过程就是根据递推关系,从1行1列开始,以行或者列优先的顺序,依次填写表格,最后根据整个表格的数据通过简单的取舍或者运算求得问题的最优解。
+
+```
+ f(n,m)=max{f(n-1,m), f(n-1,m-w[n])+P(n,m)}
+1
+```
+
+### 六、动态规划算法基本框架
+
+```C++
+for(j=1; j<=m; j=j+1) // 第一个阶段
+ xn[j] = 初始值;
+
+ for(i=n-1; i>=1; i=i-1)// 其他n-1个阶段
+ for(j=1; j>=f(i); j=j+1)//f(i)与i有关的表达式
+ xi[j]=j=max(或min){g(xi-1[j1:j2]), ......, g(xi-1[jk:jk+1])};
+
+t = g(x1[j1:j2]); // 由子问题的最优解求解整个问题的最优解的方案
+
+print(x1[j1]);
+
+for(i=2; i<=n-1; i=i+1)
+{
+ t = t-xi-1[ji];
+
+ for(j=1; j>=f(i); j=j+1)
+ if(t=xi[ji])
+ break;
+}
+```
+
+------
+
+## 算法三:贪心算法
+
+### 一、基本概念
+
+所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。
+
+贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。
+所以对所采用的贪心策略一定要仔细分析其是否满足无后效性。
+
+### 二、贪心算法的基本思路
+
+```
+1.建立数学模型来描述问题。
+2.把求解的问题分成若干个子问题。
+3.对每一子问题求解,得到子问题的局部最优解。
+4.把子问题的解局部最优解合成原来解问题的一个解。
+```
+
+### 三、贪心算法适用的问题
+
+贪心策略适用的前提是:局部最优策略能导致产生全局最优解。
+实际上,贪心算法适用的情况很少。一般,对一个问题分析是否适用于贪心算法,可以先选择该问题下的几个实际数据进行分析,就可做出判断。
+
+### 四、贪心算法的实现框架
+
+```
+从问题的某一初始解出发;
+while (能朝给定总目标前进一步)
+{
+ 利用可行的决策,求出可行解的一个解元素;
+}
+由所有解元素组合成问题的一个可行解;
+```
+
+### 五、贪心策略的选择
+
+因为用贪心算法只能通过解局部最优解的策略来达到全局最优解,因此,一定要注意判断问题是否适合采用贪心算法策略,找到的解是否一定是问题的最优解。
+
+### 六、例题分析
+
+下面是一个可以试用贪心算法解的题目,贪心解的确不错,可惜不是最优解。
+
+```
+[背包问题]有一个背包,背包容量是M=150。有7个物品,物品可以分割成任意大小。
+要求尽可能让装入背包中的物品总价值最大,但不能超过总容量。
+物品 A B C D E F G
+重量 35 30 60 50 40 10 25
+价值 10 40 30 50 35 40 30
+分析:
+目标函数: ∑pi最大
+约束条件是装入的物品总重量不超过背包容量:∑wi<=M( M=150)
+(1)根据贪心的策略,每次挑选价值最大的物品装入背包,得到的结果是否最优?
+(2)每次挑选所占重量最小的物品装入是否能得到最优解?
+(3)每次选取单位重量价值最大的物品,成为解本题的策略。
+值得注意的是,贪心算法并不是完全不可以使用,贪心策略一旦经过证明成立后,它就是一种高效的算法。
+贪心算法还是很常见的算法之一,这是由于它简单易行,构造贪心策略不是很困难。
+可惜的是,它需要证明后才能真正运用到题目的算法中。
+一般来说,贪心算法的证明围绕着:整个问题的最优解一定由在贪心策略中存在的子问题的最优解得来的。
+对于例题中的3种贪心策略,都是无法成立(无法被证明)的,解释如下:
+(1)贪心策略:选取价值最大者。反例:
+W=30
+物品:A B C
+重量:28 12 12
+价值:30 20 20
+根据策略,首先选取物品A,接下来就无法再选取了,可是,选取B、C则更好。
+(2)贪心策略:选取重量最小。它的反例与第一种策略的反例差不多。
+(3)贪心策略:选取单位重量价值最大的物品。反例:
+W=30
+物品:A B C
+重量:28 20 10
+价值:28 20 10
+根据策略,三种物品单位重量价值一样,程序无法依据现有策略作出判断,如果选择A,则答案错误。
+```
+
+------
+
+## 算法四:回溯法
+
+### 一、概念
+
+回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就“回溯”返回,尝试别的路径。
+
+回溯法是一种选优搜索法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。
+
+许多复杂的,规模较大的问题都可以使用回溯法,有“通用解题方法”的美称。
+
+### 二、基本思想
+
+在包含问题的所有解的解空间树中,按照深度优先搜索的策略,从根结点出发深度探索解空间树。当探索到某一结点时,要先判断该结点是否包含问题的解,如果包含,就从该结点出发继续探索下去,如果该结点不包含问题的解,则逐层向其祖先结点回溯。(其实回溯法就是对隐式图的深度优先搜索算法)。
+
+若用回溯法求问题的所有解时,要回溯到根,且根结点的所有可行的子树都要已被搜索遍才结束。
+
+而若使用回溯法求任一个解时,只要搜索到问题的一个解就可以结束。
+
+### 三、用回溯法解题的一般步骤
+
+```
+(1)针对所给问题,确定问题的解空间:
+ 首先应明确定义问题的解空间,问题的解空间应至少包含问题的一个(最优)解。
+(2)确定结点的扩展搜索规则
+(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
+```
+
+### 四、算法框架
+
+(1)问题框架
+
+```
+设问题的解是一个n维向量(a1,a2,………,an),约束条件是ai(i=1,2,3,…..,n)之间满足某种条件,记为f(ai)。
+1
+```
+
+(2)非递归回溯框架
+
+```C++
+int a[n],i;
+初始化数组a[];
+i = 1;
+while (i>0(有路可走) and (未达到目标)) // 还未回溯到头
+{
+ if(i > n) // 搜索到叶结点
+ {
+ 搜索到一个解,输出;
+ }
+ else // 处理第i个元素
+ {
+ a[i]第一个可能的值;
+ while(a[i]在不满足约束条件且在搜索空间内)
+ {
+ a[i]下一个可能的值;
+ }
+ if(a[i]在搜索空间内)
+ {
+ 标识占用的资源;
+ i = i+1; // 扩展下一个结点
+ }
+ else
+ {
+ 清理所占的状态空间; // 回溯
+ i = i –1;
+ }
+}
+```
+
+(3)递归的算法框架
+
+回溯法是对解空间的深度优先搜索,在一般情况下使用递归函数来实现回溯法比较简单,其中i为搜索的深度,框架如下:
+
+```
+int a[n];
+try(int i)
+{
+ if(i>n)
+ 输出结果;
+ else
+ {
+ for(j = 下界; j <= 上界; j=j+1) // 枚举i所有可能的路径
+ {
+ if(fun(j)) // 满足限界函数和约束条件
+ {
+ a[i] = j;
+ ... // 其他操作
+ try(i+1);
+ 回溯前的清理工作(如a[i]置空值等);
+ }
+ }
+ }
+}
+```
+
+------
+
+## 算法五:分支限界法
+
+### 一、基本描述
+
+类似于回溯法,也是一种在问题的解空间树T上搜索问题解的算法。但在一般情况下,分支限界法与回溯法的求解目标不同。回溯法的求解目标是找出T中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出使某一目标函数值达到极大或极小的解,即在某种意义下的最优解。
+
+(1)分支搜索算法
+所谓“分支”就是采用广度优先的策略,依次搜索E-结点的所有分支,也就是所有相邻结点,抛弃不满足约束条件的结点,其余结点加入活结点表。然后从表中选择一个结点作为下一个E-结点,继续搜索。
+
+选择下一个E-结点的方式不同,则会有几种不同的分支搜索方式。
+
+```
+1)FIFO搜索
+2)LIFO搜索
+3)优先队列式搜索
+```
+
+(2)分支限界搜索算法
+
+### 二、分支限界法的一般过程
+
+由于求解目标不同,导致分支限界法与回溯法在解空间树T上的搜索方式也不相同。回溯法以深度优先的方式搜索解空间树T,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树T。
+
+分支限界法的搜索策略是:在扩展结点处,先生成其所有的儿子结点(分支),然后再从当前的活结点表中选择下一个扩展对点。为了有效地选择下一扩展结点,以加速搜索的进程,在每一活结点处,计算一个函数值(限界),并根据这些已计算出的函数值,从当前活结点表中选择一个最有利的结点作为扩展结点,使搜索朝着解空间树上有最优解的分支推进,以便尽快地找出一个最优解。
+
+分支限界法常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。问题的解空间树是表示问题解空间的一棵有序树,常见的有子集树和排列树。在搜索问题的解空间树时,分支限界法与回溯法对当前扩展结点所使用的扩展方式不同。在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,那些导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被子加入活结点表中。此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所求的解或活结点表为空时为止。
+
+### 三、回溯法和分支限界法的一些区别
+
+有一些问题其实无论用回溯法还是分支限界法都可以得到很好的解决,但是另外一些则不然。也许我们需要具体一些的分析——到底何时使用分支限界而何时使用回溯呢?
+
+回溯法和分支限界法的一些区别:
+
+方法对解空间树的搜索方式 存储结点的常用数据结构 结点存储特性常用应用
+
+回溯法深度优先搜索堆栈活结点的所有可行子结点被遍历后才被从栈中弹出找出满足约束条件的所有解
+
+分支限界法广度优先或最小消耗优先搜索队列、优先队列每个结点只有一次成为活结点的机会找出满足约束条件的一个解或特定意义下的最优解
+
+
+## 参考
+
+1. https://blog.csdn.net/yapian8/article/details/28240973?utm_source=tuicool&utm_medium=referral
\ No newline at end of file
diff --git "a/algorithms/\345\270\270\350\247\201\347\254\224\350\257\225\351\242\230.md" "b/algorithms/\345\270\270\350\247\201\347\254\224\350\257\225\351\242\230.md"
new file mode 100644
index 0000000000000000000000000000000000000000..6eb178ceebc029a43e7f25b7d17ec3de3f82bdc3
--- /dev/null
+++ "b/algorithms/\345\270\270\350\247\201\347\254\224\350\257\225\351\242\230.md"
@@ -0,0 +1,23 @@
+# 常见笔试题
+
+1. 打印素数
+2. 给定入栈顺序,给出一组出栈顺序,判断是否满足条件。如入栈 :12345 出栈:21453]
+1. 寻找和为定值的任意多个数
+ ```
+ 问题描述:
+ 给定n个不同的正整数,整数k(k < = n)以及一个目标数字。在这n个数里面找出K个数,
+ 使得这K个数的和等于目标数字,求问有多少种方案?
+ 给出[1,2,3,4],k=2, target=5,[1,4] and [2,3]是2个符合要求的方案
+ ```
+4. 给定一个二维数组,求其中连续子数组和的最大值。
+ ```
+ 问题描述:给定一个二维数组,求其中连续子数组和的最大值。
+ 样例输入:
+ 1 5 -3 6 -7
+ 3 5 -9 -4 6
+ -8 4 0 12 -3
+ 3 -1 5 -5 8
+ 样例输出:20
+ 4 0 12 -3
+ -1 5 -5 8
+ ```
\ No newline at end of file
diff --git a/code_java/src/others/chrysanthemum/Main1.java b/code_java/src/others/chrysanthemum/Main1.java
index 8041f24f322b76f6389a583c141ccd529b218d10..0ff2d00b14b7dbc0747b303eef67c2b617005cc8 100644
--- a/code_java/src/others/chrysanthemum/Main1.java
+++ b/code_java/src/others/chrysanthemum/Main1.java
@@ -1,9 +1,11 @@
+package others.chrysanthemum;
+
import java.util.Arrays;
/**
* N株植物,补充1升水
- * 一个数组,N个数字表示int[] {3, 1, 9, 10} ,表示N株的水瓶,选择其中cnt个瓶子,使这些瓶子的水一样多,
- * 两个瓶子水可能一样多,选取的cnt可以不连续,
+ * 一个数组,N个数字表示int[] {3, 1, 9, 10} ,表示N株的水瓶,选择其中cnt个瓶子,每次只能补充1升水,使这些瓶子的水一样多,
+ * 其中两个瓶子水可能一样多,选取的cnt可以不连续,
* 最少需要多少次?
* cnt<=N<=10^6
* 结果对 10^9+7 取模表示结果
diff --git a/code_java/src/others/chrysanthemum/Main2.java b/code_java/src/others/chrysanthemum/Main2.java
index 7b3419bc8c6c7ae303ee469b8da98fdfd8f28222..1095f371cb5c0661969d677a1745c43790b0b46a 100644
--- a/code_java/src/others/chrysanthemum/Main2.java
+++ b/code_java/src/others/chrysanthemum/Main2.java
@@ -1,3 +1,5 @@
+package others.chrysanthemum;
+
/**
* 十进制整数数组,按位与操作
* 给定一个数组 int[] {23, 12, 10, 8, 7, 45, 16} , 求位运算最大的两个数字,返回位置。
diff --git a/code_java/src/others/chrysanthemum/Main3.java b/code_java/src/others/chrysanthemum/Main3.java
index 7850a5eda940b61b5f23fe271a1bb8a3c90cdd86..c1e8acf02ccdaed24535afa4a65d278690631d1c 100644
--- a/code_java/src/others/chrysanthemum/Main3.java
+++ b/code_java/src/others/chrysanthemum/Main3.java
@@ -1,3 +1,7 @@
+package others.chrysanthemum;
+
+import java.util.HashSet;
+
/**
* 运动会,任意3排,抽方阵
* 学校开运动会,队伍是 N*3 的 矩阵, 从其中选出 3 排,组成一个方阵,使得 3*3 的方阵是对称的。
@@ -8,6 +12,7 @@ public class Main3 {
public int numWay(String[] grid) {
int len = grid.length;
String[] matrix;
+ HashSet set = new HashSet();
int res = 0;
for (int i = 0; i < len - 2; i++) {
for (int j = i + 1; j < len - 1; j++) {
diff --git a/code_java/src/others/test/Main1Test.java b/code_java/src/others/test/Main1Test.java
index 1f023f02946fc7094e856a58beac34b91bd2c434..5cde14cd50962e435cdc6e65666168648c9b3764 100644
--- a/code_java/src/others/test/Main1Test.java
+++ b/code_java/src/others/test/Main1Test.java
@@ -1,3 +1,8 @@
+package others.test;
+
+import org.junit.Test;
+import others.chrysanthemum.Main1;
+
/**
* N株植物,补充1升水
*
@@ -23,6 +28,6 @@ public class Main1Test {
res = main1.minOperations(t, 2);
System.out.println(res);
- System.out.println("max:" + Math.pow(2,32));
+ // System.out.println("max:" + Math.pow(2,32));
}
}
diff --git a/code_java/src/others/test/Main2Test.java b/code_java/src/others/test/Main2Test.java
index 24cb85ad0830d0684d16b96a472dce918d3dc7c8..bd2dd7c8c9b229bc62955b80db40136cba7e905a 100644
--- a/code_java/src/others/test/Main2Test.java
+++ b/code_java/src/others/test/Main2Test.java
@@ -1,3 +1,13 @@
+package others.test;
+
+import org.junit.Assert;
+import org.junit.Test;
+import others.chrysanthemum.Main2;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
/**
*
* 十进制整数数组,按位与操作
diff --git a/code_java/src/others/test/Main3Test.java b/code_java/src/others/test/Main3Test.java
index eb7acac8dfac80e6ecf7f69f84c00f9cdd32f23b..9f9093ff77dec61ee0a844b0fc27465ab8480ed7 100644
--- a/code_java/src/others/test/Main3Test.java
+++ b/code_java/src/others/test/Main3Test.java
@@ -1,3 +1,8 @@
+package others.test;
+
+import org.junit.Test;
+import others.chrysanthemum.Main3;
+
/**
* 运动会,任意3排,抽方阵
*
@@ -15,6 +20,11 @@ public class Main3Test {
res = main3.numWay(grid);
System.out.println(res);
grid = new String[] {"aab","aaa","baa"};
+ // grid = new String[] {"baa","aaa","aab"};
+ res = main3.numWay(grid);
+ System.out.println(res);
+
+ grid = new String[] {"aaa","aaa","aaa","aaa"};
res = main3.numWay(grid);
System.out.println(res);
}
diff --git a/code_java/src/solution/BSTIterator.java b/code_java/src/solution/BSTIterator.java
index 595d51debb22834f5897d5d663bdc3ea2de1983b..9c437550b25bfff17800625da74fbd4a727c257e 100644
--- a/code_java/src/solution/BSTIterator.java
+++ b/code_java/src/solution/BSTIterator.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.Stack;
public class BSTIterator {
diff --git a/code_java/src/solution/BinaryTreeRightSideView.java b/code_java/src/solution/BinaryTreeRightSideView.java
index d094b530c123889a0a3fd6b60f90376df56e44e4..2786c0be6fb1d95709361106d6aa88fbc369593d 100644
--- a/code_java/src/solution/BinaryTreeRightSideView.java
+++ b/code_java/src/solution/BinaryTreeRightSideView.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
diff --git a/code_java/src/solution/BinaryTreeTilt.java b/code_java/src/solution/BinaryTreeTilt.java
index 88455c2fc5f03e5c7ba48f78df4d60cfb2ad431b..119c6115f4063ecfc736e049d7b0ba31156bb4a0 100644
--- a/code_java/src/solution/BinaryTreeTilt.java
+++ b/code_java/src/solution/BinaryTreeTilt.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class BinaryTreeTilt {
int tilt = 0;
diff --git a/code_java/src/solution/BinaryTreeVerticalOrderTraversal.java b/code_java/src/solution/BinaryTreeVerticalOrderTraversal.java
index 278a75848637dcc03c40772f9849e7c1aefe9546..3da4d0d5213948285b3cfbb2113899bf5369fa07 100644
--- a/code_java/src/solution/BinaryTreeVerticalOrderTraversal.java
+++ b/code_java/src/solution/BinaryTreeVerticalOrderTraversal.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
diff --git a/code_java/src/solution/BinaryTreeZigzagLevelOrderTraversal.java b/code_java/src/solution/BinaryTreeZigzagLevelOrderTraversal.java
index 73124c5ee7a37b499c77ab352d1f63e18b587838..d7c4d5d8bb1eea7228b1f69aae71d57997273e40 100644
--- a/code_java/src/solution/BinaryTreeZigzagLevelOrderTraversal.java
+++ b/code_java/src/solution/BinaryTreeZigzagLevelOrderTraversal.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.LinkedList;
import java.util.List;
diff --git a/code_java/src/solution/CloneGraph.java b/code_java/src/solution/CloneGraph.java
index 753b88ca5e05109c7866d1cc20fd20e940e92394..b1b074280919af48eb788e736a02d18278094b22 100644
--- a/code_java/src/solution/CloneGraph.java
+++ b/code_java/src/solution/CloneGraph.java
@@ -1,5 +1,7 @@
package solution;
+import common.UndirectedGraphNode;
+
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
diff --git a/code_java/src/solution/ClosestBinarySearchTreeValue.java b/code_java/src/solution/ClosestBinarySearchTreeValue.java
index cf9e3b5e58127b53e7a4bbd0d8eaeb9e74e39e6d..8e0c21821e3e741f5d3f120ab45991c622c660be 100644
--- a/code_java/src/solution/ClosestBinarySearchTreeValue.java
+++ b/code_java/src/solution/ClosestBinarySearchTreeValue.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class ClosestBinarySearchTreeValue {
public int closestValue(TreeNode root, double target) {
diff --git a/code_java/src/solution/Codec.java b/code_java/src/solution/Codec.java
index e2e00c4fce4aee0d7957ab73e96d9db06f0c6cb7..4695aff554f6a08cdd6c5426abd00fecdc4ff3d7 100644
--- a/code_java/src/solution/Codec.java
+++ b/code_java/src/solution/Codec.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.*;
/**
diff --git a/code_java/src/solution/ConstructBinaryTreeFromInorderAndPostorderTraversal.java b/code_java/src/solution/ConstructBinaryTreeFromInorderAndPostorderTraversal.java
index 2678c2429ea29651c90488de2d087e7a0c2a8e84..47ac1650fa0f3b32476e92edf9277e0595b162a7 100644
--- a/code_java/src/solution/ConstructBinaryTreeFromInorderAndPostorderTraversal.java
+++ b/code_java/src/solution/ConstructBinaryTreeFromInorderAndPostorderTraversal.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class ConstructBinaryTreeFromInorderAndPostorderTraversal {
public TreeNode buildTree(int[] inorder, int[] postorder) {
diff --git a/code_java/src/solution/ConstructBinaryTreeFromPreorderAndPostorderTraversal.java b/code_java/src/solution/ConstructBinaryTreeFromPreorderAndPostorderTraversal.java
index 7a0c5b3de88889f4c4d5765f025f326784b85cec..b7c428332ae140e518ded69d265322adeb2ff50e 100644
--- a/code_java/src/solution/ConstructBinaryTreeFromPreorderAndPostorderTraversal.java
+++ b/code_java/src/solution/ConstructBinaryTreeFromPreorderAndPostorderTraversal.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.HashMap;
public class ConstructBinaryTreeFromPreorderAndPostorderTraversal {
diff --git a/code_java/src/solution/ConstructBinaryTreeFromPreorderInorderTraversal.java b/code_java/src/solution/ConstructBinaryTreeFromPreorderInorderTraversal.java
index 5fcce591ffe337af2027580b3d345f9294d8516a..e17136c9d67fc19c52f4590c3c2ec0c33e1e94c3 100644
--- a/code_java/src/solution/ConstructBinaryTreeFromPreorderInorderTraversal.java
+++ b/code_java/src/solution/ConstructBinaryTreeFromPreorderInorderTraversal.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class ConstructBinaryTreeFromPreorderInorderTraversal {
public TreeNode buildTree(int[] preorder, int[] inorder) {
diff --git a/code_java/src/solution/ConstructStringFromBinaryTree.java b/code_java/src/solution/ConstructStringFromBinaryTree.java
index 212ad2394f617bed7d6c06435520969afaf7af84..31c106ea7b60e8e4e61790dc3bbe5f4670af0569 100644
--- a/code_java/src/solution/ConstructStringFromBinaryTree.java
+++ b/code_java/src/solution/ConstructStringFromBinaryTree.java
@@ -2,6 +2,8 @@ package solution; /**
* https://leetcode.com/articles/construct-string-from-binary-tree/
*/
+import common.TreeNode;
+
/**
* 这题不难,主要是搞清楚题目意思
* 即返回root + (左子树) + (右子树)
diff --git a/code_java/src/solution/ConvertSortedArrayToBinarySearchTree.java b/code_java/src/solution/ConvertSortedArrayToBinarySearchTree.java
index 25d3cb1a5e34b41a65e0c60f8053364851cb75b4..a9fd9b6625d75d749f98de59e460321d5243ce1e 100644
--- a/code_java/src/solution/ConvertSortedArrayToBinarySearchTree.java
+++ b/code_java/src/solution/ConvertSortedArrayToBinarySearchTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class ConvertSortedArrayToBinarySearchTree {
public TreeNode sortedArrayToBST(int[] nums) {
diff --git a/code_java/src/solution/ConvertSortedListToBinarySearchTree.java b/code_java/src/solution/ConvertSortedListToBinarySearchTree.java
index c446ea0a8a55a139163c19bb29a9fa37230e44b0..54b7e1bd35a551a07fbc9b9caffad8af65f5fa76 100644
--- a/code_java/src/solution/ConvertSortedListToBinarySearchTree.java
+++ b/code_java/src/solution/ConvertSortedListToBinarySearchTree.java
@@ -1,5 +1,8 @@
package solution;
+import common.ListNode;
+import common.TreeNode;
+
public class ConvertSortedListToBinarySearchTree {
public TreeNode sortedListToBST(ListNode head) {
diff --git a/code_java/src/solution/CopyListWithRandomPointer.java b/code_java/src/solution/CopyListWithRandomPointer.java
index d702d7e9e63f4ba304621bd2f348933cf3943956..bb5fb2a069b5f2d2ff49d2a070537314f7990c8a 100644
--- a/code_java/src/solution/CopyListWithRandomPointer.java
+++ b/code_java/src/solution/CopyListWithRandomPointer.java
@@ -1,5 +1,7 @@
package solution;
+import common.RandomListNode;
+
/**
* 易错的地方在于random要判空
*/
diff --git a/code_java/src/solution/CountUnivalueSubtrees.java b/code_java/src/solution/CountUnivalueSubtrees.java
index b0fe372b471840e7eff05ad8aa26e35e255a586d..537724b99147803f413a53a52dcc9800b7582200 100644
--- a/code_java/src/solution/CountUnivalueSubtrees.java
+++ b/code_java/src/solution/CountUnivalueSubtrees.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class CountUnivalueSubtrees {
/**
diff --git a/code_java/src/solution/DeleteNodeInALinkedList.java b/code_java/src/solution/DeleteNodeInALinkedList.java
index 30f950e75a77e877ef33a25bfd11e54ec1925e8f..2344afcb978dc8d847e798d6657e0f39bc743640 100644
--- a/code_java/src/solution/DeleteNodeInALinkedList.java
+++ b/code_java/src/solution/DeleteNodeInALinkedList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
/**
* https://leetcode.com/articles/delete-node-linked-list/
*/
diff --git a/code_java/src/solution/DiameterOfBinaryTree.java b/code_java/src/solution/DiameterOfBinaryTree.java
index 974fc710c54ab89d59ac28c4106cd1ef66b6e3bd..774e362cc77388e17f0b5cf8d275a40581416609 100644
--- a/code_java/src/solution/DiameterOfBinaryTree.java
+++ b/code_java/src/solution/DiameterOfBinaryTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class DiameterOfBinaryTree {
/**
diff --git a/code_java/src/solution/ExcelSheetColumnNumber.java b/code_java/src/solution/ExcelSheetColumnNumber.java
index 65cdcd35db440fe56c8387ff97ed892fbe7ed54a..548417854ab050a18d25cb447594947d7829d963 100644
--- a/code_java/src/solution/ExcelSheetColumnNumber.java
+++ b/code_java/src/solution/ExcelSheetColumnNumber.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.LinkedList;
import java.util.List;
diff --git a/code_java/src/solution/FindBottomLeftTreeValue.java b/code_java/src/solution/FindBottomLeftTreeValue.java
index d89483f0297b93f033b008b1833df2da58a048b0..0e6cb5e54c8044d1833eb52aa89808e464719331 100644
--- a/code_java/src/solution/FindBottomLeftTreeValue.java
+++ b/code_java/src/solution/FindBottomLeftTreeValue.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.LinkedList;
import java.util.Queue;
diff --git a/code_java/src/solution/FindDuplicateSubtrees.java b/code_java/src/solution/FindDuplicateSubtrees.java
index 12af9ca287320c0dc1bb7a644c0a4c3a2141e107..8eb1ed5c14bf66f4add96a3c86c5995381b1706a 100644
--- a/code_java/src/solution/FindDuplicateSubtrees.java
+++ b/code_java/src/solution/FindDuplicateSubtrees.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
diff --git a/code_java/src/solution/FindLargestValueInEachTreeRow.java b/code_java/src/solution/FindLargestValueInEachTreeRow.java
index 72ef061adcce64fa361cf1db130509a3b6a9473e..5ec8de663c1daf868e7e060d1ed70b5491a6f6ae 100644
--- a/code_java/src/solution/FindLargestValueInEachTreeRow.java
+++ b/code_java/src/solution/FindLargestValueInEachTreeRow.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
diff --git a/code_java/src/solution/FindLeavesOfBinaryTree.java b/code_java/src/solution/FindLeavesOfBinaryTree.java
index 5fdbdb3aabca6dbb4dbdcba38ccb9403be4646bb..47e7208428be4ba5f0cdd9192aa0dcaacc80c8c5 100644
--- a/code_java/src/solution/FindLeavesOfBinaryTree.java
+++ b/code_java/src/solution/FindLeavesOfBinaryTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.LinkedList;
import java.util.List;
diff --git a/code_java/src/solution/FindModeInBinarySearchTree.java b/code_java/src/solution/FindModeInBinarySearchTree.java
index 75d2a74911a5ecb3bc5d05f799488232affad081..ece65d153f586f44025b7b36514c3ea7317f05f4 100644
--- a/code_java/src/solution/FindModeInBinarySearchTree.java
+++ b/code_java/src/solution/FindModeInBinarySearchTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.LinkedList;
import java.util.List;
diff --git a/code_java/src/solution/FindRightInterval.java b/code_java/src/solution/FindRightInterval.java
index 89fb76273f9b432dd874bf89c56469ab051041ad..44b79de174416e9872ded029a881e238deba7efc 100644
--- a/code_java/src/solution/FindRightInterval.java
+++ b/code_java/src/solution/FindRightInterval.java
@@ -1,5 +1,7 @@
package solution;
+import common.Interval;
+
import java.util.Map;
import java.util.TreeMap;
diff --git a/code_java/src/solution/FlattenBinaryTreeToLinkedList.java b/code_java/src/solution/FlattenBinaryTreeToLinkedList.java
index 939f2feb4120cedb2e468370e1adf5c9a57964ca..5872708eb36e774f29a8bae7ed122cc123f90dc3 100644
--- a/code_java/src/solution/FlattenBinaryTreeToLinkedList.java
+++ b/code_java/src/solution/FlattenBinaryTreeToLinkedList.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
diff --git a/code_java/src/solution/FlattenNestedListIterator.java b/code_java/src/solution/FlattenNestedListIterator.java
index 9684f524db4d711b04e2740adea5e5a967b15734..9d552c355563c44351350c1e9385ace538043a03 100644
--- a/code_java/src/solution/FlattenNestedListIterator.java
+++ b/code_java/src/solution/FlattenNestedListIterator.java
@@ -1,5 +1,7 @@
package solution;
+import common.NestedInteger;
+
import java.util.Iterator;
import java.util.List;
import java.util.Stack;
diff --git a/code_java/src/solution/HouseRobberIII.java b/code_java/src/solution/HouseRobberIII.java
index 95f71a79b6190dd0d5a3f984b835c8ab1c7dbf35..686fe50b920395816129956b307991996a0bb6c8 100644
--- a/code_java/src/solution/HouseRobberIII.java
+++ b/code_java/src/solution/HouseRobberIII.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class HouseRobberIII {
/**
diff --git a/code_java/src/solution/InorderSuccessorInBST.java b/code_java/src/solution/InorderSuccessorInBST.java
index ba9d1c8d21eacc5f7bcc84118e81c8b1acde6806..aa527c883350f321f6dc3ac8dd48caf8a11dd488 100644
--- a/code_java/src/solution/InorderSuccessorInBST.java
+++ b/code_java/src/solution/InorderSuccessorInBST.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;
diff --git a/code_java/src/solution/InsertInterval.java b/code_java/src/solution/InsertInterval.java
index ec0ec8da64cf9787592d335cfae58250ba1d9444..624b54af2089e8f139d9c0cc6a84a878a4c4c6da 100644
--- a/code_java/src/solution/InsertInterval.java
+++ b/code_java/src/solution/InsertInterval.java
@@ -1,5 +1,7 @@
package solution;
+import common.Interval;
+
import java.util.LinkedList;
import java.util.List;
diff --git a/code_java/src/solution/InsertionSortList.java b/code_java/src/solution/InsertionSortList.java
index 9adc190211a9faee8d2c0857899f3a1406174469..3af381bb1aeefc78bcffcfde14d8856fe1d06880 100644
--- a/code_java/src/solution/InsertionSortList.java
+++ b/code_java/src/solution/InsertionSortList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class InsertionSortList {
/**
diff --git a/code_java/src/solution/IntersectionOfTwoLinkedLists.java b/code_java/src/solution/IntersectionOfTwoLinkedLists.java
index e92a2446439e03f9f798b1eba31b45b0659c2006..5f9df63ea1add2fda5de6ef2477f066072ff0979 100644
--- a/code_java/src/solution/IntersectionOfTwoLinkedLists.java
+++ b/code_java/src/solution/IntersectionOfTwoLinkedLists.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
/**
* Created by dingjiekrbo on 2016/11/17.
* https://leetcode.com/articles/intersection-two-linked-lists/
diff --git a/code_java/src/solution/InvertBinaryTree.java b/code_java/src/solution/InvertBinaryTree.java
index 454ca88d3fdc1a88fc8d57451d3685abc9e5eb94..ac5833ed791622431ce38b1711cc79112344f8b6 100644
--- a/code_java/src/solution/InvertBinaryTree.java
+++ b/code_java/src/solution/InvertBinaryTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.LinkedList;
import java.util.Queue;
diff --git a/code_java/src/solution/KthSmallestElementInBST.java b/code_java/src/solution/KthSmallestElementInBST.java
index fc6e35a494981bbcacae161805e76ef3e307ee63..7220b2d1010eae89be00a3c46d42d814f2497ac5 100644
--- a/code_java/src/solution/KthSmallestElementInBST.java
+++ b/code_java/src/solution/KthSmallestElementInBST.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.Stack;
/**
diff --git a/code_java/src/solution/LargestBSTSubtree.java b/code_java/src/solution/LargestBSTSubtree.java
index 444b4a1878a51290dd08bd89704fea572cdebded..04706f4f208c938c89607b214905c5af2700df5a 100644
--- a/code_java/src/solution/LargestBSTSubtree.java
+++ b/code_java/src/solution/LargestBSTSubtree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class LargestBSTSubtree {
class Result {
diff --git a/code_java/src/solution/LeafSimilarTrees.java b/code_java/src/solution/LeafSimilarTrees.java
index fe3de04d5ac98c36ec5cfdc29e9288f06c54bb5b..fa91a2eb2d61ccd3a9b679610839c1cf31e651b5 100644
--- a/code_java/src/solution/LeafSimilarTrees.java
+++ b/code_java/src/solution/LeafSimilarTrees.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.Stack;
public class LeafSimilarTrees {
diff --git a/code_java/src/solution/LinkedListCycle.java b/code_java/src/solution/LinkedListCycle.java
index 91c0543b896c71ebf69086ef516bff9509f0c30a..f4d555600ae7e9cfbbfa50902059ca22a5274e52 100644
--- a/code_java/src/solution/LinkedListCycle.java
+++ b/code_java/src/solution/LinkedListCycle.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class LinkedListCycle {
// 注意判空
diff --git a/code_java/src/solution/LinkedListCycleII.java b/code_java/src/solution/LinkedListCycleII.java
index 04af4089e8abede6bc042241cf73890dcb18d660..0823f1c3bc3c44a2fc08c37df44f2d18fd549621 100644
--- a/code_java/src/solution/LinkedListCycleII.java
+++ b/code_java/src/solution/LinkedListCycleII.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class LinkedListCycleII {
/**
* 这里有个问题,如果链表是a,b,然后又回到a
diff --git a/code_java/src/solution/LongestUnivaluePath.java b/code_java/src/solution/LongestUnivaluePath.java
index b59255ec4a58c60afae1977b189ffa78ca72b772..5f6d0443ba022e24f32195e85ab7cd1943b2c0f9 100644
--- a/code_java/src/solution/LongestUnivaluePath.java
+++ b/code_java/src/solution/LongestUnivaluePath.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class LongestUnivaluePath {
public int longestUnivaluePath(TreeNode root) {
diff --git a/code_java/src/solution/LowestCommonAncestorOfBinarySearchTree.java b/code_java/src/solution/LowestCommonAncestorOfBinarySearchTree.java
index 7cb8064501743589b285eb478df770568f6d0b5b..53b9663baf2aa7090fc5c7137a001330eeadf815 100644
--- a/code_java/src/solution/LowestCommonAncestorOfBinarySearchTree.java
+++ b/code_java/src/solution/LowestCommonAncestorOfBinarySearchTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class LowestCommonAncestorOfBinarySearchTree {
/**
diff --git a/code_java/src/solution/LowestCommonAncestorOfBinaryTree.java b/code_java/src/solution/LowestCommonAncestorOfBinaryTree.java
index d7d31fd069960a1de1b38a59f2ff6853f401b145..a924411563a90f68e253176bdf0cd293a81e2fe7 100644
--- a/code_java/src/solution/LowestCommonAncestorOfBinaryTree.java
+++ b/code_java/src/solution/LowestCommonAncestorOfBinaryTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.*;
public class LowestCommonAncestorOfBinaryTree {
diff --git a/code_java/src/solution/MaximumBinaryTree.java b/code_java/src/solution/MaximumBinaryTree.java
index 4198538f367e7cbf600151d3f040d103d10380a6..75ff3ad26bb2ae5ee0639afe760cf9e0e69eddb1 100644
--- a/code_java/src/solution/MaximumBinaryTree.java
+++ b/code_java/src/solution/MaximumBinaryTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class MaximumBinaryTree {
/**
diff --git a/code_java/src/solution/MaximumDepthOfBinaryTree.java b/code_java/src/solution/MaximumDepthOfBinaryTree.java
index 40ab0037da4faabde723ae1ddbb6f25d0b532afc..a2b97d0fcaefc835d8cec8bf08be93f2a3e05c0d 100644
--- a/code_java/src/solution/MaximumDepthOfBinaryTree.java
+++ b/code_java/src/solution/MaximumDepthOfBinaryTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class MaximumDepthOfBinaryTree {
public int maxDepth(TreeNode node) {
diff --git a/code_java/src/solution/MeetingRooms.java b/code_java/src/solution/MeetingRooms.java
index a68961a248a9f0a5c05a022670552976b6aa791b..57e859059b86b2cc4554d3eff9794a82c720ec42 100644
--- a/code_java/src/solution/MeetingRooms.java
+++ b/code_java/src/solution/MeetingRooms.java
@@ -1,5 +1,7 @@
package solution;
+import common.Interval;
+
import java.util.Arrays;
import java.util.Comparator;
diff --git a/code_java/src/solution/MeetingRoomsII.java b/code_java/src/solution/MeetingRoomsII.java
index 40419783b644c560673f3ac541021537be1b37d7..6d7b9a41f04b6711ad7aef65d7dce8e1456aecc8 100644
--- a/code_java/src/solution/MeetingRoomsII.java
+++ b/code_java/src/solution/MeetingRoomsII.java
@@ -1,5 +1,7 @@
package solution;
+import common.Interval;
+
import java.util.Arrays;
import java.util.Comparator;
import java.util.PriorityQueue;
diff --git a/code_java/src/solution/MergeIntervals.java b/code_java/src/solution/MergeIntervals.java
index 60a54cb192da4484ea51ca62d8ff0bca1bcaceba..202a50b96976b09879d5b020a00dd98d0ce4181f 100644
--- a/code_java/src/solution/MergeIntervals.java
+++ b/code_java/src/solution/MergeIntervals.java
@@ -1,5 +1,7 @@
package solution;
+import common.Interval;
+
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
diff --git a/code_java/src/solution/MergeKSortedList.java b/code_java/src/solution/MergeKSortedList.java
index cff7f2fdf99b346b85581ca653e317a67d4afcad..5f9266a5ca2f6c3e3b14ae674841e36e28809c25 100644
--- a/code_java/src/solution/MergeKSortedList.java
+++ b/code_java/src/solution/MergeKSortedList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
import java.util.Comparator;
import java.util.PriorityQueue;
diff --git a/code_java/src/solution/MergeTwoBinaryTrees.java b/code_java/src/solution/MergeTwoBinaryTrees.java
index 99413b2a71647046703a5694740ddb3fda8ed941..60a592af8d076920ef022f044e88c0e023d0768c 100644
--- a/code_java/src/solution/MergeTwoBinaryTrees.java
+++ b/code_java/src/solution/MergeTwoBinaryTrees.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class MergeTwoBinaryTrees {
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
diff --git a/code_java/src/solution/MergeTwoSortedList.java b/code_java/src/solution/MergeTwoSortedList.java
index 6951abffa197d82361d722fd44d39f5314901bc9..7098de10d36989da54b2118a7cc639b4045f9634 100644
--- a/code_java/src/solution/MergeTwoSortedList.java
+++ b/code_java/src/solution/MergeTwoSortedList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class MergeTwoSortedList {
// 耗时15ms
diff --git a/code_java/src/solution/MinimumDepthOfBinaryTree.java b/code_java/src/solution/MinimumDepthOfBinaryTree.java
index 8630669fdc7a15aa5d96378183347cbe031bc01a..e8b1ff11c468e1a5e5e3ffbe86ed0c22f0dfb26e 100644
--- a/code_java/src/solution/MinimumDepthOfBinaryTree.java
+++ b/code_java/src/solution/MinimumDepthOfBinaryTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class MinimumDepthOfBinaryTree {
/**
diff --git a/code_java/src/solution/MostFrequentSubtreeSum.java b/code_java/src/solution/MostFrequentSubtreeSum.java
index 2af629274f2abec18a09074e85baabe05550357a..62ad6e6b9b273e90dad9b8e39e8bbf8b40902946 100644
--- a/code_java/src/solution/MostFrequentSubtreeSum.java
+++ b/code_java/src/solution/MostFrequentSubtreeSum.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
diff --git a/code_java/src/solution/NestedListWeightSum.java b/code_java/src/solution/NestedListWeightSum.java
index 56981f5a9386919253b94fc39510670ec8395680..5855c659ed4e971614c282c4aa78d49b72cf05f6 100644
--- a/code_java/src/solution/NestedListWeightSum.java
+++ b/code_java/src/solution/NestedListWeightSum.java
@@ -1,5 +1,7 @@
package solution;
+import common.NestedInteger;
+
import java.util.List;
/**
diff --git a/code_java/src/solution/NestedListWeightSumII.java b/code_java/src/solution/NestedListWeightSumII.java
index 42ab398a3bc64abf616e2d85bd640127c22272b7..7f477af1c1c5bd0b1f33ffbf95d93780b1cf2da5 100644
--- a/code_java/src/solution/NestedListWeightSumII.java
+++ b/code_java/src/solution/NestedListWeightSumII.java
@@ -1,5 +1,7 @@
package solution;
+import common.NestedInteger;
+
import java.util.List;
/**
diff --git a/code_java/src/solution/OddEvenLinkedList.java b/code_java/src/solution/OddEvenLinkedList.java
index 7b6dded57965c26643c5331a099540edadea6e43..4c35e87fe47fc7f64c7947d9d649c302dfbb88e8 100644
--- a/code_java/src/solution/OddEvenLinkedList.java
+++ b/code_java/src/solution/OddEvenLinkedList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class OddEvenLinkedList {
public ListNode oddEvenList(ListNode head) {
diff --git a/code_java/src/solution/PalindromeLinkedList.java b/code_java/src/solution/PalindromeLinkedList.java
index 989c1f7378331f44df0073ded32b6fc6a6744f97..6271be1028242708688a5a76e28d68a5793eed32 100644
--- a/code_java/src/solution/PalindromeLinkedList.java
+++ b/code_java/src/solution/PalindromeLinkedList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class PalindromeLinkedList {
// 耗时2ms
diff --git a/code_java/src/solution/PartitionList.java b/code_java/src/solution/PartitionList.java
index 959c54aa9721f037247179230ae0bdeab2d244da..608d765999aa554407b1b844e784db665c98abb4 100644
--- a/code_java/src/solution/PartitionList.java
+++ b/code_java/src/solution/PartitionList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class PartitionList {
ListNode partition(ListNode head, int x) {
diff --git a/code_java/src/solution/PathSum.java b/code_java/src/solution/PathSum.java
index 6af4ebc009717fdfc6763433e13c0933c155aa88..c773fe0e149b2c306a20ec0040b3a5276e6e5555 100644
--- a/code_java/src/solution/PathSum.java
+++ b/code_java/src/solution/PathSum.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class PathSum {
public boolean hasPathSum(TreeNode root, int sum) {
diff --git a/code_java/src/solution/PathSumII.java b/code_java/src/solution/PathSumII.java
index 664c86dadba4e7bc4bf2c06942932a294a36d5fb..b1803c5c7664cfef8b34a7b1c7c540e9216804c8 100644
--- a/code_java/src/solution/PathSumII.java
+++ b/code_java/src/solution/PathSumII.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
diff --git a/code_java/src/solution/PathSumIII.java b/code_java/src/solution/PathSumIII.java
index 547fd8a6769590250a1870db262a68d87e545a0b..fbf0968380ee09420ca2b8ace924b43de5686160 100644
--- a/code_java/src/solution/PathSumIII.java
+++ b/code_java/src/solution/PathSumIII.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.HashMap;
public class PathSumIII {
diff --git a/code_java/src/solution/PlusOneLinkedList.java b/code_java/src/solution/PlusOneLinkedList.java
index f7ba64ef3a69632cd04f30e30f02d1265ce8f2fb..79698e943e2955d7d7a5fe86b333154e00beb985 100644
--- a/code_java/src/solution/PlusOneLinkedList.java
+++ b/code_java/src/solution/PlusOneLinkedList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
import java.util.Stack;
public class PlusOneLinkedList {
diff --git a/code_java/src/solution/PopulatingNextRightPointersInEachNode.java b/code_java/src/solution/PopulatingNextRightPointersInEachNode.java
index d3bba0802b6cbc7a390eed11f912f3ea6fa1aa01..241ab50069e3e7551a300577b2b138455c01cb33 100644
--- a/code_java/src/solution/PopulatingNextRightPointersInEachNode.java
+++ b/code_java/src/solution/PopulatingNextRightPointersInEachNode.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeLinkNode;
+
public class PopulatingNextRightPointersInEachNode {
/** 递归法,巧妙地运用dummy使代码很简洁
diff --git a/code_java/src/solution/PopulatingNextRightPointersInEachNodeII.java b/code_java/src/solution/PopulatingNextRightPointersInEachNodeII.java
index cb7a28457dadca2639a557e45931fe3706f93641..c5a279ebf32c281dd5183a99ce7bb74c62b518d6 100644
--- a/code_java/src/solution/PopulatingNextRightPointersInEachNodeII.java
+++ b/code_java/src/solution/PopulatingNextRightPointersInEachNodeII.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeLinkNode;
+
public class PopulatingNextRightPointersInEachNodeII {
/**
diff --git a/code_java/src/solution/RecoverBinarySearchTree.java b/code_java/src/solution/RecoverBinarySearchTree.java
index 981446993064542fde4d73fe3ad19baf39444f53..3f12297a770edaaf482f580af92e55dae39fe2e7 100644
--- a/code_java/src/solution/RecoverBinarySearchTree.java
+++ b/code_java/src/solution/RecoverBinarySearchTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.Stack;
public class RecoverBinarySearchTree {
diff --git a/code_java/src/solution/RemoveDuplicateList.java b/code_java/src/solution/RemoveDuplicateList.java
index a26885b6b50f400356315aa1a4ed836b7e490d6b..543488c401b8a693302e79a2dca9233e12387b78 100644
--- a/code_java/src/solution/RemoveDuplicateList.java
+++ b/code_java/src/solution/RemoveDuplicateList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class RemoveDuplicateList {
/**
diff --git a/code_java/src/solution/RemoveDuplicatesFromSortedList.java b/code_java/src/solution/RemoveDuplicatesFromSortedList.java
index 427ea883a47943e6ffc75ab4532c474a30cc2e0f..cf4b4cfdf8501ed9781c81078159076ceb5c2387 100644
--- a/code_java/src/solution/RemoveDuplicatesFromSortedList.java
+++ b/code_java/src/solution/RemoveDuplicatesFromSortedList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
/**
* https://leetcode.com/articles/remove-duplicates-sorted-list/
*/
diff --git a/code_java/src/solution/RemoveDuplicatesFromSortedListII.java b/code_java/src/solution/RemoveDuplicatesFromSortedListII.java
index 1d8f75aa8cbc42185bc9099b3085555afec13d2e..96ad05cdcccb1463536f8338d99d62c8f7fd6791 100644
--- a/code_java/src/solution/RemoveDuplicatesFromSortedListII.java
+++ b/code_java/src/solution/RemoveDuplicatesFromSortedListII.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class RemoveDuplicatesFromSortedListII {
public ListNode deleteDuplicates(ListNode head) {
diff --git a/code_java/src/solution/RemoveLinkedListElements.java b/code_java/src/solution/RemoveLinkedListElements.java
index b2a96149b6ee9bb008a58c374aaf9d30aabff06c..6f85b86aacf220d05575b5295ada3a8ad8f827c7 100644
--- a/code_java/src/solution/RemoveLinkedListElements.java
+++ b/code_java/src/solution/RemoveLinkedListElements.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class RemoveLinkedListElements {
public ListNode removeElements(ListNode head, int val) {
diff --git a/code_java/src/solution/RemoveNthNodeFromEndOfList.java b/code_java/src/solution/RemoveNthNodeFromEndOfList.java
index a0e89cf862dc8971ba609e37a61c8cce692ea2a4..40060e1b40691a6839e5b8a8baf658ff7368e7d1 100644
--- a/code_java/src/solution/RemoveNthNodeFromEndOfList.java
+++ b/code_java/src/solution/RemoveNthNodeFromEndOfList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
/**
* https://leetcode.com/articles/remove-nth-node-end-list/
*/
diff --git a/code_java/src/solution/ReorderList.java b/code_java/src/solution/ReorderList.java
index fe02d02335be9e812706c0b09cea0abe4e8cda3a..adaa86ab710fc36eace2dbaaf9b10e404ef89084 100644
--- a/code_java/src/solution/ReorderList.java
+++ b/code_java/src/solution/ReorderList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class ReorderList {
public void reorderList(ListNode head) {
diff --git a/code_java/src/solution/ReverseLinkedList.java b/code_java/src/solution/ReverseLinkedList.java
index 626ce7469040619953317cc5ad226ae7466c5ccf..572159d656efff93cd72e8cf8443714ff21979dc 100644
--- a/code_java/src/solution/ReverseLinkedList.java
+++ b/code_java/src/solution/ReverseLinkedList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
/**
* https://leetcode.com/articles/reverse-linked-list/
*/
diff --git a/code_java/src/solution/ReverseLinkedListII.java b/code_java/src/solution/ReverseLinkedListII.java
index aa30bb33bf3da588900d733400758c28f9e87121..e71742b662d908c563cae3a10196cd145e412702 100644
--- a/code_java/src/solution/ReverseLinkedListII.java
+++ b/code_java/src/solution/ReverseLinkedListII.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class ReverseLinkedListII {
public ListNode reverseBetween(ListNode head, int m, int n) {
diff --git a/code_java/src/solution/ReverseNodesInKGroup.java b/code_java/src/solution/ReverseNodesInKGroup.java
index df5d104179cb72088fd820ab7a44814b9b96d87d..013127475f650b9ecee528474bb61c9b26d4e0e4 100644
--- a/code_java/src/solution/ReverseNodesInKGroup.java
+++ b/code_java/src/solution/ReverseNodesInKGroup.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class ReverseNodesInKGroup {
public ListNode reverseKGroup(ListNode head, int k) {
diff --git a/code_java/src/solution/RotateList.java b/code_java/src/solution/RotateList.java
index 6a4232a21755af9528481232e29575723c2705cb..d140f31bcadab9942b06a9830a3ac466629e91dc 100644
--- a/code_java/src/solution/RotateList.java
+++ b/code_java/src/solution/RotateList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class RotateList {
public ListNode rotateRight(ListNode head, int n) {
diff --git a/code_java/src/solution/SameTree.java b/code_java/src/solution/SameTree.java
index b29864d35d209f3b13507ddeedd4c66c1a06e5c5..8dd67fd2f3fb139b09877a0e03bd2e0ccd0f1339 100644
--- a/code_java/src/solution/SameTree.java
+++ b/code_java/src/solution/SameTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class SameTree {
public boolean isSameTree(TreeNode p, TreeNode q) {
diff --git a/code_java/src/solution/SortList.java b/code_java/src/solution/SortList.java
index e2263be09cecb4d5e4e15f3917b70443f87505ec..80512b7445479aea377d7abe92c068193f44f324 100644
--- a/code_java/src/solution/SortList.java
+++ b/code_java/src/solution/SortList.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
/**
* 这题采用merge sort,可自顶向下或自底向上
* 区别是自顶向下是递归的,需要额外的空间
diff --git a/code_java/src/solution/SubtreeOfAnotherTree.java b/code_java/src/solution/SubtreeOfAnotherTree.java
index 8c9bf430b2041ff9c34cf753f9a71208a943c962..7378e72c44b2956de68f17401af957db4cf7a568 100644
--- a/code_java/src/solution/SubtreeOfAnotherTree.java
+++ b/code_java/src/solution/SubtreeOfAnotherTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class SubtreeOfAnotherTree {
/**
diff --git a/code_java/src/solution/SumOfLeftLeaves.java b/code_java/src/solution/SumOfLeftLeaves.java
index 15cc3ffe418be9087192131c39c5b5a69e276b9e..d27c47b8a4cf959d2aabe75b77c9bbb1c9a80fc4 100644
--- a/code_java/src/solution/SumOfLeftLeaves.java
+++ b/code_java/src/solution/SumOfLeftLeaves.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.Stack;
public class SumOfLeftLeaves {
diff --git a/code_java/src/solution/SumRootToLeafNumbers.java b/code_java/src/solution/SumRootToLeafNumbers.java
index 287444e80a7d8d36b94e9f4af592ab4f5a0aca56..f1b48ef1f3ab8dcdf09b9efcc7f49d80d733dafa 100644
--- a/code_java/src/solution/SumRootToLeafNumbers.java
+++ b/code_java/src/solution/SumRootToLeafNumbers.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class SumRootToLeafNumbers {
public int sumNumbers(TreeNode root) {
diff --git a/code_java/src/solution/SwapNodesInPairs.java b/code_java/src/solution/SwapNodesInPairs.java
index 2d0d1c567622c0715e872f13ff97b587d11401ca..053c7f9b0736b65380f7a1cb57fcbce2f423521b 100644
--- a/code_java/src/solution/SwapNodesInPairs.java
+++ b/code_java/src/solution/SwapNodesInPairs.java
@@ -1,5 +1,7 @@
package solution;
+import common.ListNode;
+
public class SwapNodesInPairs {
public ListNode swapPairs(ListNode head) {
diff --git a/code_java/src/solution/SymmetricTree.java b/code_java/src/solution/SymmetricTree.java
index 149a88198a32865d57b921fe6c1f6c1ec471f713..35a335df172629069a0b4b4bd62268dc439fb319 100644
--- a/code_java/src/solution/SymmetricTree.java
+++ b/code_java/src/solution/SymmetricTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;
diff --git a/code_java/src/solution/TrimABinarySearchTree.java b/code_java/src/solution/TrimABinarySearchTree.java
index b92ccc22c6713d7a55a1db1d549ec6f37f7fde8e..1823c6fff4a8c54cbb292946fc963237763d4489 100644
--- a/code_java/src/solution/TrimABinarySearchTree.java
+++ b/code_java/src/solution/TrimABinarySearchTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class TrimABinarySearchTree {
public TreeNode trimBST(TreeNode root, int L, int R) {
diff --git a/code_java/src/solution/TwoSumIV.java b/code_java/src/solution/TwoSumIV.java
index 627ddb95a0359e0c383704fb443f4c9f39f0c812..be934d4e37eca8009048e8b563918fb467529d7b 100644
--- a/code_java/src/solution/TwoSumIV.java
+++ b/code_java/src/solution/TwoSumIV.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
diff --git a/code_java/src/solution/UniqueBinarySearchTreesII.java b/code_java/src/solution/UniqueBinarySearchTreesII.java
index f8300356b67b48fe31cc8baba38e92f608a54187..5bc3b6981a376dda9c5c1499d441e08df3e164b1 100644
--- a/code_java/src/solution/UniqueBinarySearchTreesII.java
+++ b/code_java/src/solution/UniqueBinarySearchTreesII.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
diff --git a/code_java/src/solution/ValidateBinarySearchTree.java b/code_java/src/solution/ValidateBinarySearchTree.java
index 99fac81a1d4a9ff1e0189f9d40d7f2df55fb3383..caf28e82a932991509dd3c2ba5b3a231b0cf49a7 100644
--- a/code_java/src/solution/ValidateBinarySearchTree.java
+++ b/code_java/src/solution/ValidateBinarySearchTree.java
@@ -1,5 +1,7 @@
package solution;
+import common.TreeNode;
+
public class ValidateBinarySearchTree {
// 耗时1ms
diff --git a/index.html b/index.html
new file mode 100644
index 0000000000000000000000000000000000000000..2fed3d5a39ee8e1b6659f8fc6a9670e3845bacd3
--- /dev/null
+++ b/index.html
@@ -0,0 +1,83 @@
+
+
+