提交 6724c95b 编写于 作者: L liu13

20190122

上级 4a78cbc6
<img src="img/readme.png"></a>
The user's favorite 100 problems are very classic. If you are a newbie, this is the best way to get started with leetcode.
---
用户最喜欢的100道题都是很经典的问题,是新手入门 leetcode 的最好方式。
### Top 100 Liked Questions
| \# | Problems | Difficulty | Solution |
|----|----------|-----------|------|
| 001 | [Two_Sum](https://leetcode.com/problems/two-sum/) | Easy | [Java](./code/lc1.java)
| 002 | [Add Two Numbers](https://leetcode.com/problems/add-two-numbers/) |Medium| [Java](./code/lc2.java)
| 003 | [Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest-substring-without-repeating-characters/) | Medium | [Java](./code/lc3.java)
| 004 | [Median of Two Sorted Arrays](https://leetcode.com/problems/median-of-two-sorted-arrays) | Hard | [Java](./code/lc4.java)
| 005 | [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/) |Medium|[Java](./code/lc5.java)
| 010 | [Regular Expression Matching](https://leetcode.com/problems/regular-expression-matching/) | Hard | [Java](./code/lc10.java)
| 011 | [Container With Most Water](https://leetcode.com/problems/container-with-most-water/) |Medium| [Java](./code/lc11.java)
| 015 | [3Sum](https://leetcode.com/problems/3sum/) |Medium| [Java](./code/lc15.java)
| 017 | [Letter Combinations of a Phone Number](https://leetcode.com/problems/letter-combinations-of-a-phone-number/) |Medium| [Java](./code/lc17.java)
| 019 | [Remove Nth Node From End of List](https://leetcode.com/problems/remove-nth-node-from-end-of-list/) | Easy | [Java](./code/lc19.java)
| 020 | [Valid Parentheses](https://leetcode.com/problems/valid-parentheses/) | Easy | [Java](./code/lc20.java)
| 021 | [Merge Two Sorted Lists](https://leetcode.com/problems/merge-two-sorted-lists/) | Easy | [Java](./code/lc21.java)
| 022 | [Generate Parentheses](https://leetcode.com/problems/generate-parentheses/) |Medium| [Java](./code/lc22.java)
| 023 | [Merge k Sorted Lists](https://leetcode.com/problems/merge-k-sorted-lists/) | Hard | [Java](./code/lc23.java)
| 032 | [Longest Valid Parentheses](https://leetcode.com/problems/longest-valid-parentheses/) | Hard | [Java](./code/lc32.java)
| 033 | [Search in Rotated Sorted Array](https://leetcode.com/problems/search-in-rotated-sorted-array/) |Medium| [Java](./code/lc33.java)
| 034 | [Search for a Range](https://leetcode.com/problems/search-for-a-range/) |Medium| [Java](./code/lc34.java)
| 035 | [Search Insert Position](https://leetcode.com/problems/search-insert-position/) |Medium| [Java](./code/lc35.java)
| 039 | [Combination Sum](https://leetcode.com/problems/combination-sum/) |Medium| [Java](./code/lc39.java)
| 042 | [Trapping Rain Water](https://leetcode.com/problems/trapping-rain-water/) | Hard | [Java](./code/lc42.java)
| 046 | [Permutations](https://leetcode.com/problems/permutations/) |Medium| [Java](./code/lc46.java)
| 048 | [Rotate Image](https://leetcode.com/problems/rotate-image/) |Medium| [Java](./code/lc48.java)
| 049 | [Group Anagrams](https://leetcode.com/problems/anagrams/)|Medium| [Java](./code/lc49.java)
| 053 | [Maximum Subarray](https://leetcode.com/problems/maximum-subarray/) |Medium| [Java](./code/lc53.java)
| 055 | [Jump Game](https://leetcode.com/problems/jump-game/) |Medium| [Java](./code/lc55.java)
| 056 | [Merge Intervals](https://leetcode.com/problems/merge-intervals/) |Medium| [Java](./code/lc56.java)
| 062 | [Unique Paths](https://leetcode.com/problems/unique-paths/) |Medium| [Java](./code/lc62.java)
| 064 | [Minimum Path Sum](https://leetcode.com/problems/minimum-path-sum/) |Medium| [Java](./code/lc64.java)
| 070 | [Climbing Stairs](https://leetcode.com/problems/climbing-stairs/) | Easy | [Java](./code/lc70.java)
| 072 | [Edit Distance](https://leetcode.com/problems/edit-distance/) | Hard | [Java](./code/lc72.java)
| 075 | [Sort Colors](https://leetcode.com/problems/sort-colors/)|Medium| [Java](./code/lc75.java)
| 076 | [Minimum Window Substring](https://leetcode.com/problems/minimum-window-substring) | Hard| [Java](./code/lc76.java)
| 078 | [Subsets](https://leetcode.com/problems/subsets/) |Medium| [Java](./code/lc78.java)
| 079 | [Word Search](https://leetcode.com/problems/word-search/)|Medium| [Java](./code/lc79.java)
| 084 | [Largest Rectangle in Histogram](https://leetcode.com/problems/largest-rectangle-in-histogram) | Hard | [Java](./code/lc84.java)
| 085 | [Maximal Rectangle](https://leetcode.com/problems/maximal-rectangle) | Hard |[Java](./code/lc85.java)
| 094 | [Binary Tree Inorder Traversal](https://leetcode.com/problems/binary-tree-inorder-traversal/) |Medium| [Java](./code/lc94.java)
| 096 | [Unique Binary Search Trees](https://leetcode.com/problems/unique-binary-search-trees/) |Medium| [Java](./code/lc96.java)
| 098 | [Validate Binary Search Tree](https://leetcode.com/problems/validate-binary-search-tree/) |Medium| [Java](./code/lc98.java)
| 101 | [Symmetric Tree](https://leetcode.com/problems/symmetric-tree/) | Easy | [Java](./code/lc101.java)
| 102 | [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal/) | Easy | [Java](./code/lc102.java)
| 104 | [Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree/) | Easy | [Java](./code/lc104.java)
| 105 | [Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) |Medium| [Java](./code/lc105.java)
| 114 | [Flatten Binary Tree to Linked List](https://leetcode.com/problems/flatten-binary-tree-to-linked-list/) |Medium| [Java](./code/lc114.java)
| 121 | [Best Time to Buy and Sell Stock](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/) | Easy | [Java](./code/lc121.java)
| 124 | [Binary Tree Maximum Path Sum](https://leetcode.com/problems/binary-tree-maximum-path-sum/) | Hard | [Java](./code/lc124.java)
| 128 | [Longest Consecutive Sequence](https://leetcode.com/problems/longest-consecutive-sequence/) | Hard | [Java](./code/lc128.java)
| 136 | [Single Number](https://leetcode.com/problems/single-number) | Easy | [Java](./code/lc136.java)
| 139 | [Word Break](https://leetcode.com/problems/word-break/) |Medium| [Java](./code/lc139.java)
| 141 | [Linked List Cycle](https://leetcode.com/problems/linked-list-cycle/) | Easy | [Java](./code/lc141.java)
| 142 | [Linked List Cycle II](https://leetcode.com/problems/linked-list-cycle-ii/) |Medium| [Java](./code/lc142.java)
| 146 | [LRU Cache](https://leetcode.com/problems/lru-cache/) | Hard | [Java](./code/lc146.java)
| 148 | [Sort List](https://leetcode.com/problems/sort-list/) |Medium| [Java](./code/lc148.java)
| 152 | [Maximum Product Subarray](https://leetcode.com/problems/maximum-product-subarray/) |Medium| [Java](./code/lc152.java)
| 155 | [Min Stack](https://leetcode.com/problems/min-stack/) | Easy | [Java](./code/lc155.java)
| 160 | [Intersection of Two Linked Lists](https://leetcode.com/problems/intersection-of-two-linked-lists/) | Easy | [Java](./code/lc160.java)
| 169 | [Majority Element](https://leetcode.com/problems/majority-element/) | Easy | [Java](./code/lc169.java)
| 198 | [House Robber](https://leetcode.com/problems/house-robber/) | Easy | [Java](./code/lc198.java)
| 200 | [Number of Islands](https://leetcode.com/problems/number-of-islands/) |Medium| [Java](./code/lc200.java)
| 206 | [Reverse Linked List](https://leetcode.com/problems/reverse-linked-list/) | Easy |[Java](./code/lc206.java)
| 207 | [Course Schedule](https://leetcode.com/problems/course-schedule/) |Medium|[Java](./code/lc207.java)
| 208 | [Implement Trie (Prefix Tree)](https://leetcode.com/problems/implement-trie-prefix-tree/) |Medium| [Java](./code/lc208.java)
| 215 | [Kth Largest Element in an Array](https://leetcode.com/problems/kth-largest-element-in-an-array/) |Medium| [Java](./code/lc215.java)
| 221 | [Maximal Square](https://leetcode.com/problems/maximal-square/) |Medium| [Java](./code/lc221.java)
| 226 | [Invert Binary Tree](https://leetcode.com/problems/invert-binary-tree/) | Easy | [Java](./code/lc226.java)
| 234 | [Palindrome Linked List](https://leetcode.com/problems/palindrome-linked-list/) | Easy | [Java](./code/lc234.java)
| 236 | [Lowest Common Ancestor of a Binary Tree](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/) |Medium| [Java](./code/lc236.java)
| 238 | [Product of Array Except Self](https://leetcode.com/problems/product-of-array-except-self/) |Medium| [Java](./code/lc238.java)
| 239 | [Sliding Window Maximum](https://leetcode.com/problems/sliding-window-maximum/) | Hard | [Java](./code/lc239.java)
| 240 | [Search a 2D Matrix II](https://leetcode.com/problems/search-a-2d-matrix-ii/) |Medium| [Java](./code/lc240.java)
| 253 | [Meeting Rooms II](https://leetcode.com/problems/meeting-rooms-ii) |Medium| 没权限
| 279 | [Perfect Squares](https://leetcode.com/problems/perfect-squares/) |Medium| [Java](./code/lc279.java)
| 283 | [Move Zeroes](https://leetcode.com/problems/move-zeroes/)| Easy | [Java](./code/lc283.java)
| 287 | [Find the Duplicate Number](https://leetcode.com/problems/find-the-duplicate-number/) | Hard | [Java](./code/lc287.java)
| 297 | [Serialize and Deserialize Binary Tree](https://leetcode.com/problems/serialize-and-deserialize-binary-tree/) | Hard | [Java](./code/lc297.java)
| 300 | [Longest Increasing Subsequence](https://leetcode.com/problems/longest-increasing-subsequence/) |Medium| [Java](./code/lc300.java)
| 301 | [Remove Invalid Parentheses](https://leetcode.com/problems/remove-invalid-parentheses/) |Hard| [Java](./code/lc301.java)
| 309 | [Best Time to Buy and Sell Stock with Cooldown](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/) |Medium| [Java](./code/lc309.java)
| 312 | [Burst Balloons](https://leetcode.com/problems/burst-balloons/) | Hard | [Java](./code/lc312.java)
| 322 | [Coin Change](https://leetcode.com/problems/coin-change/)|Medium| [Java](./code/lc322.java)
| 337 | [House Robber III](https://leetcode.com/problems/house-robber-iii/) |Medium| [Java](./code/lc337.java)
| 338 | [Counting Bits](https://leetcode.com/problems/counting-bits/) |Medium| [Java](./code/lc338.java)
| 347 | [Top K Frequent Elements](https://leetcode.com/problems/top-k-frequent-elements/) |Medium| [Java](./code/lc347.java)
| 394 | [Decode String](https://leetcode.com/problems/decode-string/) |Medium| [Java](./code/lc394.java)
| 406 | [Queue Reconstruction by Height](https://leetcode.com/problems/queue-reconstruction-by-height/) |Medium| [Java](./code/lc406.java)
| 416 | [Partition Equal Subset Sum](https://leetcode.com/problems/partition-equal-subset-sum/) |Medium| [Java](./code/lc416.java)
| 437 | [Path Sum III](https://leetcode.com/problems/path-sum-iii/) | Easy |[Java](./code/lc437.java)
| 438 | [Find All Anagrams in a String](https://leetcode.com/problems/find-all-anagrams-in-a-string/) | Easy |[Java](./code/lc438.java)
| 448 | [Find All Numbers Disappeared in an Array](https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/) | Easy | [Java](./code/lc448.java)
| 461 | [Hamming Distance](https://leetcode.com/problems/hamming-distance/) | Easy |[Java](./code/lc461.java)
| 494 | [Target Sum](https://leetcode.com/problems/target-sum/) |Medium|[Java](./code/lc494.java)
| 538 | [Convert BST to Greater Tree](https://leetcode.com/problems/convert-bst-to-greater-tree/description/) | Easy |[Java](./code/lc538.java)
| 543 | [Diameter of Binary Tree](https://leetcode.com/problems/diameter-of-binary-tree/description/) | Easy | [Java](./code/lc543.java)
| 560 | [Subarray Sum Equals K](https://leetcode.com/problems/subarray-sum-equals-k) |Medium| [Java](./code/lc560.java)
| 572 | [Subtree of Another Tree](https://leetcode.com/problems/subtree-of-another-tree/description/) | Easy | [Java](./code/lc572.java)
| 581 | [Shortest Unsorted Continuous Subarray](https://leetcode.com/problems/shortest-unsorted-continuous-subarray/description/) | Easy | [Java](./code/lc581.java)
| 617 | [Merge Two Binary Trees](https://leetcode.com/problems/merge-two-binary-trees/description/) | Easy | [Java](./code/lc617.java)
| 621 | [Task Scheduler](https://leetcode.com/problems/task-scheduler) |Medium| [Java](./code/lc621.java)
| 647 | [Palindromic Substrings](https://leetcode.com/problems/palindromic-substrings) |Medium|[Java](./code/lc647.java)
| 771 | [Jewels and Stones](https://leetcode.com/problems/jewels-and-stones/) |Easy|[Java](./code/lc771.java)
### Top Interview Questions
| \# | Problems | Difficulty | Solution |
|----|----------|-----------|------|
| 001 | [Two_Sum](https://leetcode.com/problems/two-sum/) | Easy | [Java](./code/lc1.java)
| 002 | [Add Two Numbers](https://leetcode.com/problems/add-two-numbers/) |Medium| [Java](./code/lc2.java)
| 003 | [Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest-substring-without-repeating-characters/) | Medium | [Java](./code/lc3.java)
| 004 | [Median of Two Sorted Arrays](https://leetcode.com/problems/median-of-two-sorted-arrays) | Hard | [Java](./code/lc4.java)
| 005 | [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/) |Medium|[Java](./code/lc5.java)
| 010 | [Regular Expression Matching](https://leetcode.com/problems/regular-expression-matching/) | Hard | [Java](./code/lc10.java)
| 011 | [Container With Most Water](https://leetcode.com/problems/container-with-most-water/) |Medium| [Java](./code/lc11.java)
| 015 | [3Sum](https://leetcode.com/problems/3sum/) |Medium| [Java](./code/lc15.java)
| 017 | [Letter Combinations of a Phone Number](https://leetcode.com/problems/letter-combinations-of-a-phone-number/) |Medium| [Java](./code/lc17.java)
| 019 | [Remove Nth Node From End of List](https://leetcode.com/problems/remove-nth-node-from-end-of-list/) | Easy | [Java](./code/lc19.java)
| 020 | [Valid Parentheses](https://leetcode.com/problems/valid-parentheses/) | Easy | [Java](./code/lc20.java)
| 021 | [Merge Two Sorted Lists](https://leetcode.com/problems/merge-two-sorted-lists/) | Easy | [Java](./code/lc21.java)
| 022 | [Generate Parentheses](https://leetcode.com/problems/generate-parentheses/) |Medium| [Java](./code/lc22.java)
| 023 | [Merge k Sorted Lists](https://leetcode.com/problems/merge-k-sorted-lists/) | Hard | [Java](./code/lc23.java)
| 033 | [Search in Rotated Sorted Array](https://leetcode.com/problems/search-in-rotated-sorted-array/) |Medium| [Java](./code/lc33.java)
| 034 | [Search for a Range](https://leetcode.com/problems/search-for-a-range/) |Medium| [Java](./code/lc34.java)
| 035 | [Search Insert Position](https://leetcode.com/problems/search-insert-position/) |Medium| [Java](./code/lc35.java)
| 042 | [Trapping Rain Water](https://leetcode.com/problems/trapping-rain-water/) | Hard | [Java](./code/lc42.java)
| 046 | [Permutations](https://leetcode.com/problems/permutations/) |Medium| [Java](./code/lc46.java)
| 048 | [Rotate Image](https://leetcode.com/problems/rotate-image/) |Medium| [Java](./code/lc48.java)
| 049 | [Group Anagrams](https://leetcode.com/problems/anagrams/)|Medium| [Java](./code/lc49.java)
| 053 | [Maximum Subarray](https://leetcode.com/problems/maximum-subarray/) |Medium| [Java](./code/lc53.java)
| 055 | [Jump Game](https://leetcode.com/problems/jump-game/) |Medium| [Java](./code/lc55.java)
| 056 | [Merge Intervals](https://leetcode.com/problems/merge-intervals/) |Medium| [Java](./code/lc56.java)
| 062 | [Unique Paths](https://leetcode.com/problems/unique-paths/) |Medium| [Java](./code/lc62.java)
| 070 | [Climbing Stairs](https://leetcode.com/problems/climbing-stairs/) | Easy | [Java](./code/lc70.java)
| 075 | [Sort Colors](https://leetcode.com/problems/sort-colors/)|Medium| [Java](./code/lc75.java)
| 076 | [Minimum Window Substring](https://leetcode.com/problems/minimum-window-substring) | Hard| [Java](./code/lc76.java)
| 078 | [Subsets](https://leetcode.com/problems/subsets/) |Medium| [Java](./code/lc78.java)
| 079 | [Word Search](https://leetcode.com/problems/word-search/)|Medium| [Java](./code/lc79.java)
| 084 | [Largest Rectangle in Histogram](https://leetcode.com/problems/largest-rectangle-in-histogram) | Hard | [Java](./code/lc84.java)
| 094 | [Binary Tree Inorder Traversal](https://leetcode.com/problems/binary-tree-inorder-traversal/) |Medium| [Java](./code/lc94.java)
| 098 | [Validate Binary Search Tree](https://leetcode.com/problems/validate-binary-search-tree/) |Medium| [Java](./code/lc98.java)
| 101 | [Symmetric Tree](https://leetcode.com/problems/symmetric-tree/) | Easy | [Java](./code/lc101.java)
| 102 | [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal/) | Easy | [Java](./code/lc102.java)
| 104 | [Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree/) | Easy | [Java](./code/lc104.java)
| 105 | [Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) |Medium| [Java](./code/lc105.java)
| 121 | [Best Time to Buy and Sell Stock](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/) | Easy | [Java](./code/lc121.java)
| 124 | [Binary Tree Maximum Path Sum](https://leetcode.com/problems/binary-tree-maximum-path-sum/) | Hard | [Java](./code/lc124.java)
| 128 | [Longest Consecutive Sequence](https://leetcode.com/problems/longest-consecutive-sequence/) | Hard | [Java](./code/lc128.java)
| 136 | [Single Number](https://leetcode.com/problems/single-number) | Easy | [Java](./code/lc136.java)
| 139 | [Word Break](https://leetcode.com/problems/word-break/) |Medium| [Java](./code/lc139.java)
| 141 | [Linked List Cycle](https://leetcode.com/problems/linked-list-cycle/) | Easy | [Java](./code/lc141.java)
| 146 | [LRU Cache](https://leetcode.com/problems/lru-cache/) | Hard | [Java](./code/lc146.java)
| 148 | [Sort List](https://leetcode.com/problems/sort-list/) |Medium| [Java](./code/lc148.java)
| 152 | [Maximum Product Subarray](https://leetcode.com/problems/maximum-product-subarray/) |Medium| [Java](./code/lc152.java)
| 155 | [Min Stack](https://leetcode.com/problems/min-stack/) | Easy | [Java](./code/lc155.java)
| 160 | [Intersection of Two Linked Lists](https://leetcode.com/problems/intersection-of-two-linked-lists/) | Easy | [Java](./code/lc160.java)
| 169 | [Majority Element](https://leetcode.com/problems/majority-element/) | Easy | [Java](./code/lc169.java)
| 198 | [House Robber](https://leetcode.com/problems/house-robber/) | Easy | [Java](./code/lc198.java)
| 200 | [Number of Islands](https://leetcode.com/problems/number-of-islands/) |Medium| [Java](./code/lc200.java)
| 206 | [Reverse Linked List](https://leetcode.com/problems/reverse-linked-list/) | Easy |[Java](./code/lc206.java)
| 207 | [Course Schedule](https://leetcode.com/problems/course-schedule/) |Medium|[Java](./code/lc207.java)
| 208 | [Implement Trie (Prefix Tree)](https://leetcode.com/problems/implement-trie-prefix-tree/) |Medium| [Java](./code/lc208.java)
| 215 | [Kth Largest Element in an Array](https://leetcode.com/problems/kth-largest-element-in-an-array/) |Medium| [Java](./code/lc215.java)
| 234 | [Palindrome Linked List](https://leetcode.com/problems/palindrome-linked-list/) | Easy | [Java](./code/lc234.java)
| 236 | [Lowest Common Ancestor of a Binary Tree](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/) |Medium| [Java](./code/lc236.java)
| 238 | [Product of Array Except Self](https://leetcode.com/problems/product-of-array-except-self/) |Medium| [Java](./code/lc238.java)
| 239 | [Sliding Window Maximum](https://leetcode.com/problems/sliding-window-maximum/) | Hard | [Java](./code/lc239.java)
| 240 | [Search a 2D Matrix II](https://leetcode.com/problems/search-a-2d-matrix-ii/) |Medium| [Java](./code/lc240.java)
| 279 | [Perfect Squares](https://leetcode.com/problems/perfect-squares/) |Medium| [Java](./code/lc279.java)
| 283 | [Move Zeroes](https://leetcode.com/problems/move-zeroes/)| Easy | [Java](./code/lc283.java)
| 287 | [Find the Duplicate Number](https://leetcode.com/problems/find-the-duplicate-number/) | Hard | [Java](./code/lc287.java)
| 297 | [Serialize and Deserialize Binary Tree](https://leetcode.com/problems/serialize-and-deserialize-binary-tree/) | Hard | [Java](./code/lc297.java)
| 300 | [Longest Increasing Subsequence](https://leetcode.com/problems/longest-increasing-subsequence/) |Medium| [Java](./code/lc300.java)
| 322 | [Coin Change](https://leetcode.com/problems/coin-change/)|Medium| [Java](./code/lc322.java)
| 337 | [House Robber III](https://leetcode.com/problems/house-robber-iii/) |Medium| [Java](./code/lc337.java)
| 347 | [Top K Frequent Elements](https://leetcode.com/problems/top-k-frequent-elements/) |Medium| [Java](./code/lc347.java)
package code;
/*
* 543. Diameter of Binary Tree
* 题意:树种的最长路径
* 难度:Easy
* 分类:Tree
* 思路:和lc124思路一样,但lc124是Hard,这道竟然是Easy,哈哈哈
* Tips:
*/
public class lc543 {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
int max = 0;
public int diameterOfBinaryTree(TreeNode root) {
helper(root);
return max;
}
public int helper(TreeNode root){
if(root==null)
return 0;
int left = helper(root.left);
int right = helper(root.right);
max = Math.max(left+right, max);
return Math.max(left, right)+1;
}
}
package code;
/*
* 572. Subtree of Another Tree
* 题意:判断一棵树是否为另外一棵树的子树
* 难度:Easy
* 分类:Tree
* 思路:两种方法,一种是先序遍历,然后比较字符串即可,注意每个节点开始前加个字符,null也要加进去。
* 另一种递归的方法。
* Tips:
*/
public class lc572 {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public boolean isSubtree(TreeNode s, TreeNode t) {
if (s == null) return false;
return helper(s,t) || isSubtree(s.left,t) ||isSubtree(s.right,t); // 注意递归方法的不同,是调用哪个函数
}
public boolean helper(TreeNode s, TreeNode t){
if( s==null && t==null ) return true;
if( s==null || t==null || s.val!=t.val ) return false;
return helper(s.left, t.left) && helper(s.right, t.right);
}
public boolean isSubtree2(TreeNode s, TreeNode t) {
StringBuilder tree1 = new StringBuilder();
StringBuilder tree2 = new StringBuilder();
helper2(s, tree1);
helper2(s, tree2);
return tree1.toString().contains(tree2.toString());
}
public void helper2(TreeNode node, StringBuilder res){
if(node==null)
res.append(",#"); //先放','表示一个新节点的开始,#代表null
else {
res.append( ","+node.val );
helper2(node.left, res);
helper2(node.right, res);
}
}
}
package code;
/*
* 581. Shortest Unsorted Continuous Subarray
* 题意:找出数组中需要排序的长度
* 难度:Easy
* 分类:Array
* 思路:
* Tips:直接写出来的
*/
public class lc581 {
public int findUnsortedSubarray(int[] nums) {
if(nums.length<2)
return 0;
int left =0, right = 0;
int temp = nums[nums.length-1];
for (int i = nums.length-2; i >=0 ; i--) {
if(nums[i]>temp) left = i; //小于最小值就不用排序了,大于的话记录一下
if(nums[i]<temp) temp = nums[i]; //记录最小值
}
temp = nums[0];
for (int i = 1; i < nums.length ; i++) {
if(nums[i]<temp) right = i; //找right
if(nums[i]>temp) temp = nums[i];
}
return left==right? 0 : right-left+1;
}
}
package code;
/*
* 617. Merge Two Binary Trees
* 题意:合并两个二叉树
* 难度:Easy
* 分类:Tree
* 思路:递归的方法
* Tips:对比下自己的代码和别人的代码,为什么别人的更简洁。自己的思路还是有些乱,应该先想清楚递归的子问题,再开始写。
* 想明白了再写,不要修修补补的。
*/
public class lc617 {
public class TreeNode {
int val;
TreeNode left;
TreeNode right;
TreeNode(int x) { val = x; }
}
public TreeNode mergeTrees(TreeNode t1, TreeNode t2) {
if(t1==null) return t2;
if(t2==null) return t1;
if(t1!=null && t2!=null) t1.val = t1.val + t2.val;
helper(t1, t2);
return t1;
}
public void helper(TreeNode t1, TreeNode t2){
if(t1.left==null) {
t1.left = t2.left;
return;
}
if(t1.right==null) {
t1.right = t2.right;
return;
}
if( t1.left!=null && t2.left!=null ) {
t1.left.val = t1.left.val + t2.left.val;
helper(t1.left, t2.left);
}
if( t1.right!=null && t2.right!=null ) {
t1.right.val = t1.right.val + t2.right.val;
helper(t1.right, t2.right);
}
}
public TreeNode mergeTrees2(TreeNode t1, TreeNode t2) {
if (t1 == null)
return t2;
if (t2 == null)
return t1;
t1.val += t2.val;
t1.left = mergeTrees(t1.left, t2.left);
t1.right = mergeTrees(t1.right, t2.right);
return t1;
}
}
package code;
/*
* 771. Jewels and Stones
* 题意:S中出现的字符,在J中也出现的个数
* 难度:Easy
* 分类:Hash Table
* 思路:
* Tips:
*/
public class lc771 {
public int numJewelsInStones(String J, String S) {
int res=0;
for(char c : S.toCharArray()){
if(J.indexOf(c) != -1){
res++;
}
}
return res;
}
}
LeetCode Top 100 Liked Questions
LeetCode Problems I have Soved
===
<img src="img/readme.png"></a>
The user's favorite 100 problems are very classic. If you are a newbie, this is the best way to get started with leetcode.
Language: Java
......@@ -11,7 +8,7 @@ Welcome to improve this project with me.*
---
用户最喜欢的100道题都是很经典的问题,是新手入门 leetcode 的最好方式。**每道题在代码头部都添加了我的解题思路和想法,希望对你有用**
**每道题在代码头部都添加了我的解题思路和想法,希望对你有用**
语言: Java
......@@ -19,107 +16,126 @@ Welcome to improve this project with me.*
---
### Top 100 Liked Questions
用户最喜欢的100道题
[Top 100 Liked Questions](./Top100.md)
面试最容易被问到的题(更新中...)
[Top Interview Questions](./TopInterview.md)
| \# | Problems | Difficulty | Solution |
|----|----------|-----------|------|
| 001 | [Two_Sum](https://leetcode.com/problems/two-sum/) | Easy | [Java](./code/lc1.java)
| 002 | [Add Two Numbers](https://leetcode.com/problems/add-two-numbers/) |Medium| [Java](./code/lc2.java)
| 003 | [Longest Substring Without Repeating Characters](https://leetcode.com/problems/longest-substring-without-repeating-characters/) | Medium | [Java](./code/lc3.java)
| 004 | [Median of Two Sorted Arrays](https://leetcode.com/problems/median-of-two-sorted-arrays) | Hard | [Java](./code/lc4.java)
| 005 | [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/) |Medium|[Java](./code/lc5.java)
| 010 | [Regular Expression Matching](https://leetcode.com/problems/regular-expression-matching/) | Hard | [Java](./code/lc10.java)
| 011 | [Container With Most Water](https://leetcode.com/problems/container-with-most-water/) |Medium| [Java](./code/lc11.java)
| 015 | [3Sum](https://leetcode.com/problems/3sum/) |Medium| [Java](./code/lc15.java)
| 017 | [Letter Combinations of a Phone Number](https://leetcode.com/problems/letter-combinations-of-a-phone-number/) |Medium| [Java](./code/lc17.java)
| 019 | [Remove Nth Node From End of List](https://leetcode.com/problems/remove-nth-node-from-end-of-list/) | Easy | [Java](./code/lc19.java)
| 020 | [Valid Parentheses](https://leetcode.com/problems/valid-parentheses/) | Easy | [Java](./code/lc20.java)
| 021 | [Merge Two Sorted Lists](https://leetcode.com/problems/merge-two-sorted-lists/) | Easy | [Java](./code/lc21.java)
| 022 | [Generate Parentheses](https://leetcode.com/problems/generate-parentheses/) |Medium| [Java](./code/lc22.java)
| 023 | [Merge k Sorted Lists](https://leetcode.com/problems/merge-k-sorted-lists/) | Hard | [Java](./code/lc23.java)
| 032 | [Longest Valid Parentheses](https://leetcode.com/problems/longest-valid-parentheses/) | Hard | [Java](./code/lc32.java)
| 033 | [Search in Rotated Sorted Array](https://leetcode.com/problems/search-in-rotated-sorted-array/) |Medium| [Java](./code/lc33.java)
| 034 | [Search for a Range](https://leetcode.com/problems/search-for-a-range/) |Medium| [Java](./code/lc34.java)
| 035 | [Search Insert Position](https://leetcode.com/problems/search-insert-position/) |Medium| [Java](./code/lc35.java)
| 039 | [Combination Sum](https://leetcode.com/problems/combination-sum/) |Medium| [Java](./code/lc39.java)
| 042 | [Trapping Rain Water](https://leetcode.com/problems/trapping-rain-water/) | Hard | [Java](./code/lc42.java)
| 046 | [Permutations](https://leetcode.com/problems/permutations/) |Medium| [Java](./code/lc46.java)
| 048 | [Rotate Image](https://leetcode.com/problems/rotate-image/) |Medium| [Java](./code/lc48.java)
| 049 | [Group Anagrams](https://leetcode.com/problems/anagrams/)|Medium| [Java](./code/lc49.java)
| 053 | [Maximum Subarray](https://leetcode.com/problems/maximum-subarray/) |Medium| [Java](./code/lc53.java)
| 055 | [Jump Game](https://leetcode.com/problems/jump-game/) |Medium| [Java](./code/lc55.java)
| 056 | [Merge Intervals](https://leetcode.com/problems/merge-intervals/) |Medium| [Java](./code/lc56.java)
| 062 | [Unique Paths](https://leetcode.com/problems/unique-paths/) |Medium| [Java](./code/lc62.java)
| 064 | [Minimum Path Sum](https://leetcode.com/problems/minimum-path-sum/) |Medium| [Java](./code/lc64.java)
| 070 | [Climbing Stairs](https://leetcode.com/problems/climbing-stairs/) | Easy | [Java](./code/lc70.java)
| 072 | [Edit Distance](https://leetcode.com/problems/edit-distance/) | Hard | [Java](./code/lc72.java)
| 075 | [Sort Colors](https://leetcode.com/problems/sort-colors/)|Medium| [Java](./code/lc75.java)
| 076 | [Minimum Window Substring](https://leetcode.com/problems/minimum-window-substring) | Hard| [Java](./code/lc76.java)
| 078 | [Subsets](https://leetcode.com/problems/subsets/) |Medium| [Java](./code/lc78.java)
| 079 | [Word Search](https://leetcode.com/problems/word-search/)|Medium| [Java](./code/lc79.java)
| 084 | [Largest Rectangle in Histogram](https://leetcode.com/problems/largest-rectangle-in-histogram) | Hard | [Java](./code/lc84.java)
| 085 | [Maximal Rectangle](https://leetcode.com/problems/maximal-rectangle) | Hard |[Java](./code/lc85.java)
| 094 | [Binary Tree Inorder Traversal](https://leetcode.com/problems/binary-tree-inorder-traversal/) |Medium| [Java](./code/lc94.java)
| 096 | [Unique Binary Search Trees](https://leetcode.com/problems/unique-binary-search-trees/) |Medium| [Java](./code/lc96.java)
| 098 | [Validate Binary Search Tree](https://leetcode.com/problems/validate-binary-search-tree/) |Medium| [Java](./code/lc98.java)
| 100 | [Same Tree](https://leetcode.com/problems/same-tree/) | Easy | [Java](./code/lc100.java)
| 101 | [Symmetric Tree](https://leetcode.com/problems/symmetric-tree/) | Easy | [Java](./code/lc101.java)
| 102 | [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal/) | Easy | [Java](./code/lc102.java)
| 104 | [Maximum Depth of Binary Tree](https://leetcode.com/problems/maximum-depth-of-binary-tree/) | Easy | [Java](./code/lc104.java)
| 105 | [Construct Binary Tree from Preorder and Inorder Traversal](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) |Medium| [Java](./code/lc105.java)
| 114 | [Flatten Binary Tree to Linked List](https://leetcode.com/problems/flatten-binary-tree-to-linked-list/) |Medium| [Java](./code/lc114.java)
| 121 | [Best Time to Buy and Sell Stock](https://leetcode.com/problems/best-time-to-buy-and-sell-stock/) | Easy | [Java](./code/lc121.java)
| 124 | [Binary Tree Maximum Path Sum](https://leetcode.com/problems/binary-tree-maximum-path-sum/) | Hard | [Java](./code/lc124.java)
| 128 | [Longest Consecutive Sequence](https://leetcode.com/problems/longest-consecutive-sequence/) | Hard | [Java](./code/lc128.java)
| 136 | [Single Number](https://leetcode.com/problems/single-number) | Easy | [Java](./code/lc136.java)
| 139 | [Word Break](https://leetcode.com/problems/word-break/) |Medium| [Java](./code/lc139.java)
| 141 | [Linked List Cycle](https://leetcode.com/problems/linked-list-cycle/) | Easy | [Java](./code/lc141.java)
| 142 | [Linked List Cycle II](https://leetcode.com/problems/linked-list-cycle-ii/) |Medium| [Java](./code/lc142.java)
| 146 | [LRU Cache](https://leetcode.com/problems/lru-cache/) | Hard | [Java](./code/lc146.java)
| 148 | [Sort List](https://leetcode.com/problems/sort-list/) |Medium| [Java](./code/lc148.java)
| 152 | [Maximum Product Subarray](https://leetcode.com/problems/maximum-product-subarray/) |Medium| [Java](./code/lc152.java)
| 155 | [Min Stack](https://leetcode.com/problems/min-stack/) | Easy | [Java](./code/lc155.java)
| 160 | [Intersection of Two Linked Lists](https://leetcode.com/problems/intersection-of-two-linked-lists/) | Easy | [Java](./code/lc160.java)
| 169 | [Majority Element](https://leetcode.com/problems/majority-element/) | Easy | [Java](./code/lc169.java)
| 198 | [House Robber](https://leetcode.com/problems/house-robber/) | Easy | [Java](./code/lc198.java)
| 200 | [Number of Islands](https://leetcode.com/problems/number-of-islands/) |Medium| [Java](./code/lc200.java)
| 206 | [Reverse Linked List](https://leetcode.com/problems/reverse-linked-list/) | Easy |[Java](./code/lc206.java)
| 207 | [Course Schedule](https://leetcode.com/problems/course-schedule/) |Medium|[Java](./code/lc207.java)
| 208 | [Implement Trie (Prefix Tree)](https://leetcode.com/problems/implement-trie-prefix-tree/) |Medium| [Java](./code/lc208.java)
| 215 | [Kth Largest Element in an Array](https://leetcode.com/problems/kth-largest-element-in-an-array/) |Medium| [Java](./code/lc215.java)
| 221 | [Maximal Square](https://leetcode.com/problems/maximal-square/) |Medium| [Java](./code/lc221.java)
| 226 | [Invert Binary Tree](https://leetcode.com/problems/invert-binary-tree/) | Easy | [Java](./code/lc226.java)
| 234 | [Palindrome Linked List](https://leetcode.com/problems/palindrome-linked-list/) | Easy | [Java](./code/lc234.java)
| 236 | [Lowest Common Ancestor of a Binary Tree](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/) |Medium| [Java](./code/lc236.java)
| 238 | [Product of Array Except Self](https://leetcode.com/problems/product-of-array-except-self/) |Medium| [Java](./code/lc238.java)
| 239 | [Sliding Window Maximum](https://leetcode.com/problems/sliding-window-maximum/) | Hard | [Java](./code/lc239.java)
| 240 | [Search a 2D Matrix II](https://leetcode.com/problems/search-a-2d-matrix-ii/) |Medium| [Java](./code/lc240.java)
| 279 | [Perfect Squares](https://leetcode.com/problems/perfect-squares/) |Medium| [Java](./code/lc279.java)
| 283 | [Move Zeroes](https://leetcode.com/problems/move-zeroes/)| Easy | [Java](./code/lc283.java)
| 287 | [Find the Duplicate Number](https://leetcode.com/problems/find-the-duplicate-number/) | Hard | [Java](./code/lc287.java)
| 297 | [Serialize and Deserialize Binary Tree](https://leetcode.com/problems/serialize-and-deserialize-binary-tree/) | Hard | [Java](./code/lc297.java)
| 300 | [Longest Increasing Subsequence](https://leetcode.com/problems/longest-increasing-subsequence/) |Medium| [Java](./code/lc300.java)
| 301 | [Remove Invalid Parentheses](https://leetcode.com/problems/remove-invalid-parentheses/) |Hard| [Java](./code/lc301.java)
| 309 | [Best Time to Buy and Sell Stock with Cooldown](https://leetcode.com/problems/best-time-to-buy-and-sell-stock-with-cooldown/) |Medium| [Java](./code/lc309.java)
| 312 | [Burst Balloons](https://leetcode.com/problems/burst-balloons/) | Hard | [Java](./code/lc312.java)
| 322 | [Coin Change](https://leetcode.com/problems/coin-change/)|Medium| [Java](./code/lc322.java)
| 337 | [House Robber III](https://leetcode.com/problems/house-robber-iii/) |Medium| [Java](./code/lc337.java)
| 338 | [Counting Bits](https://leetcode.com/problems/counting-bits/) |Medium| [Java](./code/lc338.java)
| 347 | [Top K Frequent Elements](https://leetcode.com/problems/top-k-frequent-elements/) |Medium| [Java](./code/lc347.java)
| 394 | [Decode String](https://leetcode.com/problems/decode-string/) |Medium| [Java](./code/lc394.java)
| 406 | [Queue Reconstruction by Height](https://leetcode.com/problems/queue-reconstruction-by-height/) |Medium| [Java](./code/lc406.java)
| 416 | [Partition Equal Subset Sum](https://leetcode.com/problems/partition-equal-subset-sum/) |Medium| [Java](./code/lc416.java)
| 437 | [Path Sum III](https://leetcode.com/problems/path-sum-iii/) | Easy |[Java](./code/lc437.java)
| 438 | [Find All Anagrams in a String](https://leetcode.com/problems/find-all-anagrams-in-a-string/) | Easy |[Java](./code/lc438.java)
| 448 | [Find All Numbers Disappeared in an Array](https://leetcode.com/problems/find-all-numbers-disappeared-in-an-array/) | Easy | [Java]
| 461 | [Hamming Distance](https://leetcode.com/problems/hamming-distance/) | Easy |[Java](./code/lc494.java)
| 494 | [Target Sum](https://leetcode.com/problems/target-sum/) |Medium|[Java]
| 538 | [Convert BST to Greater Tree](https://leetcode.com/problems/convert-bst-to-greater-tree/description/) | Easy |[Java]
| 543 | [Diameter of Binary Tree](https://leetcode.com/problems/diameter-of-binary-tree/description/) | Easy | [Java]
| 560 | [Subarray Sum Equals K](https://leetcode.com/problems/subarray-sum-equals-k) |Medium| [Java](./code/lc560.java)
| 572 | [Subtree of Another Tree](https://leetcode.com/problems/subtree-of-another-tree/description/) | Easy | [Java]
| 581 | [Shortest Unsorted Continuous Subarray](https://leetcode.com/problems/shortest-unsorted-continuous-subarray/description/) | Easy | [Java]
| 617 | [Merge Two Binary Trees](https://leetcode.com/problems/merge-two-binary-trees/description/) | Easy | [Java]
| 621 | [Task Scheduler](https://leetcode.com/problems/task-scheduler) |Medium| [Java](./code/lc621.java)
| 647 | [Palindromic Substrings](https://leetcode.com/problems/palindromic-substrings) |Medium|[Java](./code/lc647.java)
### LeetCode Problems I have Soved
| \# | Solution |
|----|------|
| 001 | [Java](./code/lc1.java)
| 002 | [Java](./code/lc2.java)
| 003 | [Java](./code/lc3.java)
| 004 | [Java](./code/lc4.java)
| 005 | [Java](./code/lc5.java)
| 007 | [Java](./code/lc7.java)
| 008 | [Java](./code/lc8.java)
| 010 | [Java](./code/lc10.java)
| 011 | [Java](./code/lc11.java)
| 013 | [Java](./code/lc13java)
| 014 | [Java](./code/lc14java)
| 015 | [Java](./code/lc15java)
| 017 | [Java](./code/lc17.java)
| 019 | [Java](./code/lc19.java)
| 020 | [Java](./code/lc20.java)
| 021 | [Java](./code/lc21.java)
| 022 | [Java](./code/lc22.java)
| 023 | [Java](./code/lc23.java)
| 026 | [Java](./code/lc26.java)
| 028 | [Java](./code/lc28.java)
| 031 | [Java](./code/lc31.java)
| 032 | [Java](./code/lc32.java)
| 033 | [Java](./code/lc33.java)
| 034 | [Java](./code/lc34.java)
| 038 | [Java](./code/lc38.java)
| 039 | [Java](./code/lc39.java)
| 042 | [Java](./code/lc42.java)
| 046 | [Java](./code/lc46.java)
| 048 | [Java](./code/lc48.java)
| 049 | [Java](./code/lc49.java)
| 053 | [Java](./code/lc53.java)
| 055 | [Java](./code/lc55.java)
| 056 | [Java](./code/lc56.java)
| 058 | [Java](./code/lc58.java)
| 062 | [Java](./code/lc62.java)
| 063 | [Java](./code/lc63.java)
| 064 | [Java](./code/lc64.java)
| 066 | [Java](./code/lc66.java)
| 069 | [Java](./code/lc69.java)
| 070 | [Java](./code/lc70.java)
| 072 | [Java](./code/lc72.java)
| 075 | [Java](./code/lc75.java)
| 076 | [Java](./code/lc76.java)
| 078 | [Java](./code/lc78.java)
| 079 | [Java](./code/lc79.java)
| 084 | [Java](./code/lc84.java)
| 085 | [Java](./code/lc85.java)
| 088 | [Java](./code/lc88.java)
| 094 | [Java](./code/lc94.java)
| 096 | [Java](./code/lc96.java)
| 098 | [Java](./code/lc98.java)
| 101 | [Java](./code/lc101.java)
| 102 | [Java](./code/lc102.java)
| 104 | [Java](./code/lc104.java)
| 105 | [Java](./code/lc105.java)
| 114 | [Java](./code/lc114.java)
| 121 | [Java](./code/lc121.java)
| 122 | [Java](./code/lc122.java)
| 124 | [Java](./code/lc124.java)
| 128 | [Java](./code/lc128.java)
| 136 | [Java](./code/lc136.java)
| 139 | [Java](./code/lc139.java)
| 141 | [Java](./code/lc141.java)
| 142 | [Java](./code/lc142.java)
| 144 | [Java](./code/lc144.java)
| 145 | [Java](./code/lc145.java)
| 146 | [Java](./code/lc146.java)
| 148 | [Java](./code/lc148.java)
| 152 | [Java](./code/lc152.java)
| 155 | [Java](./code/lc155.java)
| 160 | [Java](./code/lc160.java)
| 169 | [Java](./code/lc169.java)
| 198 | [Java](./code/lc198.java)
| 200 | [Java](./code/lc200.java)
| 206 | [Java](./code/lc206.java)
| 207 | [Java](./code/lc207.java)
| 208 | [Java](./code/lc208.java)
| 215 | [Java](./code/lc215.java)
| 221 | [Java](./code/lc221.java)
| 226 | [Java](./code/lc226.java)
| 234 | [Java](./code/lc234.java)
| 238 | [Java](./code/lc238.java)
| 239 | [Java](./code/lc239.java)
| 240 | [Java](./code/lc240.java)
| 279 | [Java](./code/lc279.java)
| 283 | [Java](./code/lc283.java)
| 287 | [Java](./code/lc287.java)
| 297 | [Java](./code/lc297.java)
| 300 | [Java](./code/lc300.java)
| 301 | [Java](./code/lc301.java)
| 309 | [Java](./code/lc309.java)
| 312 | [Java](./code/lc312.java)
| 322 | [Java](./code/lc322.java)
| 337 | [Java](./code/lc337.java)
| 338 | [Java](./code/lc338.java)
| 347 | [Java](./code/lc347.java)
| 394 | [Java](./code/lc394.java)
| 406 | [Java](./code/lc406.java)
| 416 | [Java](./code/lc416.java)
| 437 | [Java](./code/lc437.java)
| 438 | [Java](./code/lc438.java)
| 448 | [Java](./code/lc448.java)
| 461 | [Java](./code/lc461.java)
| 494 | [Java](./code/lc494.java)
| 538 | [Java](./code/lc538.java)
| 543 | [Java](./code/lc543.java)
| 572 | [Java](./code/lc572.java)
| 581 | [Java](./code/lc581.java)
| 617 | [Java](./code/lc617.java)
| 621 | [Java](./code/lc621.java)
| 647 | [Java](./code/lc647.java)
| 771 | [Java](./code/lc771.java)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册