From ea68d4f9bea0987ab941317d254d2ee9addf38d2 Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 8 Apr 2015 13:29:32 +0800 Subject: [PATCH 01/79] add number of islands --- number-of-islands/README.md | 0 number-of-islands/Solution.java | 53 +++++++++++++++++++++++++++++++++ number-of-islands/index.md | 9 ++++++ 3 files changed, 62 insertions(+) create mode 100644 number-of-islands/README.md create mode 100644 number-of-islands/Solution.java create mode 100644 number-of-islands/index.md diff --git a/number-of-islands/README.md b/number-of-islands/README.md new file mode 100644 index 0000000..e69de29 diff --git a/number-of-islands/Solution.java b/number-of-islands/Solution.java new file mode 100644 index 0000000..a772d48 --- /dev/null +++ b/number-of-islands/Solution.java @@ -0,0 +1,53 @@ +public class Solution { + + boolean allowed(int x, int y, final int mx, final int my, char[][] grid, boolean[][] visited){ + return (x < mx) && (x >= 0) + && (y < my) && (y >= 0) + && (grid[x][y] == '1') + && (!visited[x][y]); + } + + void travel(int x, int y, final int mx, final int my, char[][] grid, boolean[][] visited){ + + // x - 1, y + // x + 1, y + // x, y - 1 + // x, y + 1 + + visited[x][y] = true; + + for(int[] xy: new int[][]{{x - 1, y}, {x + 1, y}, {x, y - 1}, {x, y + 1}}){ + + int _x = xy[0]; + int _y = xy[1]; + + if(allowed(_x, _y, mx, my, grid, visited)){ + travel(_x, _y, mx, my, grid, visited); + } + } + + } + + public int numIslands(char[][] grid) { + + final int mx = grid.length; + if(mx == 0) return 0; + final int my = grid[0].length; + + int count = 0; + boolean[][] visited = new boolean[mx][my]; + + for(int x = 0; x < mx; x++){ + for(int y = 0; y < my; y++){ + if(allowed(x, y, mx, my, grid, visited)){ + + travel(x, y, mx, my, grid, visited); + + count++; + } + } + } + + return count; + } +} diff --git a/number-of-islands/index.md b/number-of-islands/index.md new file mode 100644 index 0000000..75835c5 --- /dev/null +++ b/number-of-islands/index.md @@ -0,0 +1,9 @@ +--- +layout: solution +title: Number of Islands +date: 2015-04-08 13:28:15+08:00 +leetcode_id: 200 +--- +{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} +{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} +{% include {{leetcode_readme}} %} From 398daafe38ce1b6835ac1cdecf3bc35cf27b3889 Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 8 Apr 2015 13:30:02 +0800 Subject: [PATCH 02/79] update gh-pages --- _includes/_root | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/_root b/_includes/_root index 5288343..ea68d4f 160000 --- a/_includes/_root +++ b/_includes/_root @@ -1 +1 @@ -Subproject commit 5288343aefc316b99043a4e93107b53960c3fb2c +Subproject commit ea68d4f9bea0987ab941317d254d2ee9addf38d2 From 2013b6fa5e628a95cbbb02a7328a42fd50195cb0 Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 8 Apr 2015 15:07:14 +0800 Subject: [PATCH 03/79] move to include_relative --- .gitmodules | 4 ---- 3sum-closest/index.md | 4 +--- 3sum/index.md | 4 +--- 4sum/index.md | 4 +--- _includes/_root | 1 - _layouts/solution.html | 3 +-- add-binary/index.md | 4 +--- add-two-numbers/index.md | 4 +--- anagrams/index.md | 4 +--- balanced-binary-tree/index.md | 4 +--- best-time-to-buy-and-sell-stock-ii/index.md | 4 +--- best-time-to-buy-and-sell-stock-iii/index.md | 4 +--- best-time-to-buy-and-sell-stock-iv/index.md | 4 +--- best-time-to-buy-and-sell-stock/index.md | 4 +--- binary-search-tree-iterator/index.md | 4 +--- binary-tree-inorder-traversal/index.md | 4 +--- binary-tree-level-order-traversal-ii/index.md | 4 +--- binary-tree-level-order-traversal/index.md | 4 +--- binary-tree-maximum-path-sum/index.md | 4 +--- binary-tree-postorder-traversal/index.md | 4 +--- binary-tree-preorder-traversal/index.md | 4 +--- binary-tree-right-side-view/index.md | 4 +--- binary-tree-upside-down/index.md | 4 +--- binary-tree-zigzag-level-order-traversal/index.md | 4 +--- candy/index.md | 4 +--- climbing-stairs/index.md | 4 +--- clone-graph/index.md | 4 +--- combination-sum-ii/index.md | 4 +--- combination-sum/index.md | 4 +--- combinations/index.md | 4 +--- compare-version-numbers/index.md | 4 +--- .../index.md | 4 +--- .../index.md | 4 +--- container-with-most-water/index.md | 4 +--- convert-sorted-array-to-binary-search-tree/index.md | 4 +--- convert-sorted-list-to-binary-search-tree/index.md | 4 +--- copy-list-with-random-pointer/index.md | 4 +--- count-and-say/index.md | 4 +--- decode-ways/index.md | 4 +--- distinct-subsequences/index.md | 4 +--- divide-two-integers/index.md | 4 +--- dungeon-game/index.md | 4 +--- edit-distance/index.md | 4 +--- evaluate-reverse-polish-notation/index.md | 4 +--- excel-sheet-column-number/index.md | 4 +--- excel-sheet-column-title/index.md | 4 +--- factorial-trailing-zeroes/index.md | 4 +--- find-minimum-in-rotated-sorted-array-ii/index.md | 4 +--- find-minimum-in-rotated-sorted-array/index.md | 4 +--- find-peak-element/index.md | 4 +--- first-missing-positive/index.md | 4 +--- flatten-binary-tree-to-linked-list/index.md | 4 +--- fraction-to-recurring-decimal/index.md | 4 +--- gas-station/index.md | 4 +--- generate-parentheses/index.md | 4 +--- gray-code/index.md | 4 +--- house-robber/index.md | 4 +--- implement-strstr/index.md | 4 +--- insert-interval/index.md | 4 +--- insertion-sort-list/index.md | 4 +--- integer-to-roman/index.md | 4 +--- interleaving-string/index.md | 4 +--- intersection-of-two-linked-lists/index.md | 4 +--- jump-game-ii/index.md | 4 +--- jump-game/index.md | 4 +--- largest-number/index.md | 4 +--- largest-rectangle-in-histogram/index.md | 4 +--- length-of-last-word/index.md | 4 +--- letter-combinations-of-a-phone-number/index.md | 4 +--- linked-list-cycle-ii/index.md | 4 +--- linked-list-cycle/index.md | 4 +--- longest-common-prefix/index.md | 4 +--- longest-consecutive-sequence/index.md | 4 +--- longest-palindromic-substring/index.md | 4 +--- .../index.md | 4 +--- longest-substring-without-repeating-characters/index.md | 4 +--- longest-valid-parentheses/index.md | 4 +--- lru-cache/index.md | 4 +--- majority-element/index.md | 4 +--- max-points-on-a-line/index.md | 4 +--- maximal-rectangle/index.md | 4 +--- maximum-depth-of-binary-tree/index.md | 4 +--- maximum-gap/index.md | 4 +--- maximum-product-subarray/index.md | 4 +--- maximum-subarray/index.md | 4 +--- median-of-two-sorted-arrays/index.md | 4 +--- merge-intervals/index.md | 4 +--- merge-k-sorted-lists/index.md | 4 +--- merge-sorted-array/index.md | 4 +--- merge-two-sorted-lists/index.md | 4 +--- min-stack/index.md | 4 +--- minimum-depth-of-binary-tree/index.md | 4 +--- minimum-path-sum/index.md | 4 +--- minimum-window-substring/index.md | 4 +--- missing-ranges/index.md | 4 +--- multiply-strings/index.md | 4 +--- n-queens-ii/index.md | 4 +--- n-queens/index.md | 4 +--- next-permutation/index.md | 4 +--- number-of-1-bits/index.md | 4 +--- number-of-islands/index.md | 4 +--- one-edit-distance/index.md | 4 +--- palindrome-number/index.md | 4 +--- palindrome-partitioning-ii/index.md | 4 +--- palindrome-partitioning/index.md | 4 +--- partition-list/index.md | 4 +--- pascals-triangle-ii/index.md | 4 +--- pascals-triangle/index.md | 4 +--- path-sum-ii/index.md | 4 +--- path-sum/index.md | 4 +--- permutation-sequence/index.md | 4 +--- permutations-ii/index.md | 4 +--- permutations/index.md | 4 +--- plus-one/index.md | 4 +--- populating-next-right-pointers-in-each-node-ii/index.md | 4 +--- populating-next-right-pointers-in-each-node/index.md | 4 +--- powx-n/index.md | 4 +--- .../index.md | 4 +--- read-n-characters-given-read4/index.md | 4 +--- recover-binary-search-tree/index.md | 4 +--- regular-expression-matching/index.md | 4 +--- remove-duplicates-from-sorted-array-ii/index.md | 4 +--- remove-duplicates-from-sorted-array/index.md | 4 +--- remove-duplicates-from-sorted-list-ii/index.md | 4 +--- remove-duplicates-from-sorted-list/index.md | 4 +--- remove-element/index.md | 4 +--- remove-nth-node-from-end-of-list/index.md | 4 +--- reorder-list/index.md | 4 +--- repeated-dna-sequences/index.md | 4 +--- restore-ip-addresses/index.md | 4 +--- reverse-bits/index.md | 4 +--- reverse-integer/index.md | 4 +--- reverse-linked-list-ii/index.md | 4 +--- reverse-nodes-in-k-group/index.md | 4 +--- reverse-words-in-a-string-ii/index.md | 4 +--- reverse-words-in-a-string/index.md | 4 +--- roman-to-integer/index.md | 4 +--- rotate-array/index.md | 4 +--- rotate-image/index.md | 4 +--- rotate-list/index.md | 4 +--- same-tree/index.md | 4 +--- scramble-string/index.md | 4 +--- search-a-2d-matrix/index.md | 4 +--- search-for-a-range/index.md | 4 +--- search-in-rotated-sorted-array-ii/index.md | 4 +--- search-in-rotated-sorted-array/index.md | 4 +--- search-insert-position/index.md | 4 +--- set-matrix-zeroes/index.md | 4 +--- simplify-path/index.md | 4 +--- single-number-ii/index.md | 4 +--- single-number/index.md | 4 +--- skeleton.sh | 4 +--- sort-colors/index.md | 4 +--- sort-list/index.md | 4 +--- spiral-matrix-ii/index.md | 4 +--- spiral-matrix/index.md | 4 +--- sqrtx/index.md | 4 +--- string-to-integer-atoi/index.md | 4 +--- subsets-ii/index.md | 4 +--- subsets/index.md | 4 +--- substring-with-concatenation-of-all-words/index.md | 4 +--- sudoku-solver/index.md | 4 +--- sum-root-to-leaf-numbers/index.md | 4 +--- surrounded-regions/index.md | 4 +--- swap-nodes-in-pairs/index.md | 4 +--- symmetric-tree/index.md | 4 +--- text-justification/index.md | 4 +--- trapping-rain-water/index.md | 4 +--- triangle/index.md | 4 +--- two-sum-ii-input-array-is-sorted/index.md | 4 +--- two-sum-iii-data-structure-design/index.md | 4 +--- two-sum/index.md | 5 +---- unique-binary-search-trees-ii/index.md | 4 +--- unique-binary-search-trees/index.md | 4 +--- unique-paths-ii/index.md | 4 +--- unique-paths/index.md | 4 +--- valid-number/index.md | 4 +--- valid-palindrome/index.md | 4 +--- valid-parentheses/index.md | 4 +--- valid-sudoku/index.md | 4 +--- validate-binary-search-tree/index.md | 4 +--- wildcard-matching/index.md | 4 +--- word-break-ii/index.md | 4 +--- word-break/index.md | 4 +--- word-ladder-ii/index.md | 4 +--- word-ladder/index.md | 4 +--- word-search/index.md | 4 +--- zigzag-conversion/index.md | 4 +--- 188 files changed, 186 insertions(+), 563 deletions(-) delete mode 100644 .gitmodules delete mode 160000 _includes/_root diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 3fdb97a..0000000 --- a/.gitmodules +++ /dev/null @@ -1,4 +0,0 @@ -[submodule "_includes/_root"] - path = _includes/_root - url = https://github.com/tg123/leetcode.git - branch = gh-pages diff --git a/3sum-closest/index.md b/3sum-closest/index.md index b002b14..a61508f 100644 --- a/3sum-closest/index.md +++ b/3sum-closest/index.md @@ -4,6 +4,4 @@ title: 3Sum Closest date: 2014-12-29 00:26:24 +0800 leetcode_id: 16 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/3sum/index.md b/3sum/index.md index 672d40d..9dd6a94 100644 --- a/3sum/index.md +++ b/3sum/index.md @@ -4,6 +4,4 @@ title: 3Sum date: 2015-02-16 11:19:43 +0800 leetcode_id: 15 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/4sum/index.md b/4sum/index.md index 525eb28..eee2d52 100644 --- a/4sum/index.md +++ b/4sum/index.md @@ -4,6 +4,4 @@ title: 4Sum date: 2014-12-29 00:26:24 +0800 leetcode_id: 18 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/_includes/_root b/_includes/_root deleted file mode 160000 index ea68d4f..0000000 --- a/_includes/_root +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ea68d4f9bea0987ab941317d254d2ee9addf38d2 diff --git a/_layouts/solution.html b/_layouts/solution.html index 40448c2..dc81d53 100644 --- a/_layouts/solution.html +++ b/_layouts/solution.html @@ -2,7 +2,6 @@ layout: default --- {% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_source = {{leetcode_name | append: '/Solution.java' | prepend: '_root/'}} %} {% assign leetcode_url = {{leetcode_name | prepend: 'https://oj.leetcode.com/problems/'}} %} {% assign github_url = {{leetcode_name | prepend: 'https://github.com/tg123/leetcode/blob/gh-pages/' }} %} {% assign github_source_url = {{leetcode_name | prepend: 'https://github.com/tg123/leetcode/blob/gh-pages/' | append: '/Solution.java' }} %} @@ -22,7 +21,7 @@

{{ page.title }}

Source code Read on Github

{% highlight java linenos %} -{% include {{leetcode_source}} %} +{% include_relative Solution.java %} {% endhighlight %}
diff --git a/add-binary/index.md b/add-binary/index.md index 1739a6a..c55f9da 100644 --- a/add-binary/index.md +++ b/add-binary/index.md @@ -4,6 +4,4 @@ title: Add Binary date: 2014-12-29 00:26:24 +0800 leetcode_id: 67 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/add-two-numbers/index.md b/add-two-numbers/index.md index 1c974fd..e1cd9d7 100644 --- a/add-two-numbers/index.md +++ b/add-two-numbers/index.md @@ -4,6 +4,4 @@ title: Add Two Numbers date: 2014-12-29 00:26:24 +0800 leetcode_id: 2 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/anagrams/index.md b/anagrams/index.md index bd03345..2dea82f 100644 --- a/anagrams/index.md +++ b/anagrams/index.md @@ -4,6 +4,4 @@ title: Anagrams date: 2015-01-18 23:39:27 +0800 leetcode_id: 49 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/balanced-binary-tree/index.md b/balanced-binary-tree/index.md index 3ad8f6a..6661ffd 100644 --- a/balanced-binary-tree/index.md +++ b/balanced-binary-tree/index.md @@ -4,6 +4,4 @@ title: Balanced Binary Tree date: 2014-12-29 00:26:24 +0800 leetcode_id: 110 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/best-time-to-buy-and-sell-stock-ii/index.md b/best-time-to-buy-and-sell-stock-ii/index.md index f784aca..0b00142 100644 --- a/best-time-to-buy-and-sell-stock-ii/index.md +++ b/best-time-to-buy-and-sell-stock-ii/index.md @@ -4,6 +4,4 @@ title: Best Time to Buy and Sell Stock II date: 2014-12-29 00:26:24 +0800 leetcode_id: 122 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/best-time-to-buy-and-sell-stock-iii/index.md b/best-time-to-buy-and-sell-stock-iii/index.md index 20c985e..e2e62d9 100644 --- a/best-time-to-buy-and-sell-stock-iii/index.md +++ b/best-time-to-buy-and-sell-stock-iii/index.md @@ -4,6 +4,4 @@ title: Best Time to Buy and Sell Stock III date: 2014-12-29 00:26:24 +0800 leetcode_id: 123 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/best-time-to-buy-and-sell-stock-iv/index.md b/best-time-to-buy-and-sell-stock-iv/index.md index 4e1ba22..697d7b5 100644 --- a/best-time-to-buy-and-sell-stock-iv/index.md +++ b/best-time-to-buy-and-sell-stock-iv/index.md @@ -4,6 +4,4 @@ title: Best Time to Buy and Sell Stock IV date: 2015-03-08 01:04:43 +0800 leetcode_id: 188 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/best-time-to-buy-and-sell-stock/index.md b/best-time-to-buy-and-sell-stock/index.md index 1489be2..9e56f38 100644 --- a/best-time-to-buy-and-sell-stock/index.md +++ b/best-time-to-buy-and-sell-stock/index.md @@ -4,6 +4,4 @@ title: Best Time to Buy and Sell Stock date: 2014-12-29 00:26:24 +0800 leetcode_id: 121 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/binary-search-tree-iterator/index.md b/binary-search-tree-iterator/index.md index 228521d..23988ba 100644 --- a/binary-search-tree-iterator/index.md +++ b/binary-search-tree-iterator/index.md @@ -4,6 +4,4 @@ title: Binary Search Tree Iterator date: 2015-01-03 03:26:48 +0800 leetcode_id: 173 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/binary-tree-inorder-traversal/index.md b/binary-tree-inorder-traversal/index.md index db33f61..35dfbb1 100644 --- a/binary-tree-inorder-traversal/index.md +++ b/binary-tree-inorder-traversal/index.md @@ -4,6 +4,4 @@ title: Binary Tree Inorder Traversal date: 2014-12-29 00:26:24 +0800 leetcode_id: 94 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/binary-tree-level-order-traversal-ii/index.md b/binary-tree-level-order-traversal-ii/index.md index fe6ac33..8621a95 100644 --- a/binary-tree-level-order-traversal-ii/index.md +++ b/binary-tree-level-order-traversal-ii/index.md @@ -4,6 +4,4 @@ title: Binary Tree Level Order Traversal II date: 2014-12-29 00:26:24 +0800 leetcode_id: 107 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/binary-tree-level-order-traversal/index.md b/binary-tree-level-order-traversal/index.md index ad1f022..32e1904 100644 --- a/binary-tree-level-order-traversal/index.md +++ b/binary-tree-level-order-traversal/index.md @@ -4,6 +4,4 @@ title: Binary Tree Level Order Traversal date: 2014-12-29 00:26:24 +0800 leetcode_id: 102 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/binary-tree-maximum-path-sum/index.md b/binary-tree-maximum-path-sum/index.md index bc62599..128f0d3 100644 --- a/binary-tree-maximum-path-sum/index.md +++ b/binary-tree-maximum-path-sum/index.md @@ -4,6 +4,4 @@ title: Binary Tree Maximum Path Sum date: 2014-12-29 00:26:24 +0800 leetcode_id: 124 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/binary-tree-postorder-traversal/index.md b/binary-tree-postorder-traversal/index.md index fb76b55..3492494 100644 --- a/binary-tree-postorder-traversal/index.md +++ b/binary-tree-postorder-traversal/index.md @@ -4,6 +4,4 @@ title: Binary Tree Postorder Traversal date: 2014-12-29 00:26:24 +0800 leetcode_id: 145 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/binary-tree-preorder-traversal/index.md b/binary-tree-preorder-traversal/index.md index e7e8dc4..c423e45 100644 --- a/binary-tree-preorder-traversal/index.md +++ b/binary-tree-preorder-traversal/index.md @@ -4,6 +4,4 @@ title: Binary Tree Preorder Traversal date: 2014-12-29 00:26:24 +0800 leetcode_id: 144 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/binary-tree-right-side-view/index.md b/binary-tree-right-side-view/index.md index 3d08d66..e558487 100644 --- a/binary-tree-right-side-view/index.md +++ b/binary-tree-right-side-view/index.md @@ -4,6 +4,4 @@ title: Binary Tree Right Side View date: 2015-04-03 21:32:41 +0800 leetcode_id: 199 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/binary-tree-upside-down/index.md b/binary-tree-upside-down/index.md index 0e28334..1cea6ff 100644 --- a/binary-tree-upside-down/index.md +++ b/binary-tree-upside-down/index.md @@ -4,6 +4,4 @@ title: Binary Tree Upside Down date: 2014-11-18 01:45:13 +0800 leetcode_id: 156 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/binary-tree-zigzag-level-order-traversal/index.md b/binary-tree-zigzag-level-order-traversal/index.md index 5fc8762..b310481 100644 --- a/binary-tree-zigzag-level-order-traversal/index.md +++ b/binary-tree-zigzag-level-order-traversal/index.md @@ -4,6 +4,4 @@ title: Binary Tree Zigzag Level Order Traversal date: 2014-12-29 00:26:24 +0800 leetcode_id: 103 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/candy/index.md b/candy/index.md index b78c5d6..997e539 100644 --- a/candy/index.md +++ b/candy/index.md @@ -4,6 +4,4 @@ title: Candy date: 2014-12-29 00:26:24 +0800 leetcode_id: 135 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/climbing-stairs/index.md b/climbing-stairs/index.md index d6a084e..30af6b4 100644 --- a/climbing-stairs/index.md +++ b/climbing-stairs/index.md @@ -4,6 +4,4 @@ title: Climbing Stairs date: 2014-12-29 00:26:24 +0800 leetcode_id: 70 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/clone-graph/index.md b/clone-graph/index.md index f98f6fe..07acdaf 100644 --- a/clone-graph/index.md +++ b/clone-graph/index.md @@ -4,6 +4,4 @@ title: Clone Graph date: 2014-12-29 00:26:24 +0800 leetcode_id: 133 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/combination-sum-ii/index.md b/combination-sum-ii/index.md index 5e1d25e..7f71dce 100644 --- a/combination-sum-ii/index.md +++ b/combination-sum-ii/index.md @@ -4,6 +4,4 @@ title: Combination Sum II date: 2014-12-29 00:26:24 +0800 leetcode_id: 40 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/combination-sum/index.md b/combination-sum/index.md index 7f3a9ae..53421c6 100644 --- a/combination-sum/index.md +++ b/combination-sum/index.md @@ -4,6 +4,4 @@ title: Combination Sum date: 2014-12-29 00:26:24 +0800 leetcode_id: 39 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/combinations/index.md b/combinations/index.md index 175a482..d46668c 100644 --- a/combinations/index.md +++ b/combinations/index.md @@ -4,6 +4,4 @@ title: Combinations date: 2014-12-29 00:26:24 +0800 leetcode_id: 77 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/compare-version-numbers/index.md b/compare-version-numbers/index.md index 0273b92..7151bae 100644 --- a/compare-version-numbers/index.md +++ b/compare-version-numbers/index.md @@ -4,6 +4,4 @@ title: Compare Version Numbers date: 2015-01-21 17:26:33 +0800 leetcode_id: 165 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/construct-binary-tree-from-inorder-and-postorder-traversal/index.md b/construct-binary-tree-from-inorder-and-postorder-traversal/index.md index 7247604..6497884 100644 --- a/construct-binary-tree-from-inorder-and-postorder-traversal/index.md +++ b/construct-binary-tree-from-inorder-and-postorder-traversal/index.md @@ -4,6 +4,4 @@ title: Construct Binary Tree from Inorder and Postorder Traversal date: 2014-12-29 00:26:24 +0800 leetcode_id: 106 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/construct-binary-tree-from-preorder-and-inorder-traversal/index.md b/construct-binary-tree-from-preorder-and-inorder-traversal/index.md index d7037b3..b2274d2 100644 --- a/construct-binary-tree-from-preorder-and-inorder-traversal/index.md +++ b/construct-binary-tree-from-preorder-and-inorder-traversal/index.md @@ -4,6 +4,4 @@ title: Construct Binary Tree from Preorder and Inorder Traversal date: 2014-12-29 00:26:24 +0800 leetcode_id: 105 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/container-with-most-water/index.md b/container-with-most-water/index.md index 06de669..b1e611a 100644 --- a/container-with-most-water/index.md +++ b/container-with-most-water/index.md @@ -4,6 +4,4 @@ title: Container With Most Water date: 2014-12-29 00:26:24 +0800 leetcode_id: 11 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/convert-sorted-array-to-binary-search-tree/index.md b/convert-sorted-array-to-binary-search-tree/index.md index e6dee32..c904583 100644 --- a/convert-sorted-array-to-binary-search-tree/index.md +++ b/convert-sorted-array-to-binary-search-tree/index.md @@ -4,6 +4,4 @@ title: Convert Sorted Array to Binary Search Tree date: 2014-12-29 00:26:24 +0800 leetcode_id: 108 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/convert-sorted-list-to-binary-search-tree/index.md b/convert-sorted-list-to-binary-search-tree/index.md index dd62fa9..cd4386e 100644 --- a/convert-sorted-list-to-binary-search-tree/index.md +++ b/convert-sorted-list-to-binary-search-tree/index.md @@ -4,6 +4,4 @@ title: Convert Sorted List to Binary Search Tree date: 2014-12-29 00:26:24 +0800 leetcode_id: 109 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/copy-list-with-random-pointer/index.md b/copy-list-with-random-pointer/index.md index 78f85e1..f88396b 100644 --- a/copy-list-with-random-pointer/index.md +++ b/copy-list-with-random-pointer/index.md @@ -4,6 +4,4 @@ title: Copy List with Random Pointer date: 2014-12-29 00:26:24 +0800 leetcode_id: 138 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/count-and-say/index.md b/count-and-say/index.md index 555c64e..79806a3 100644 --- a/count-and-say/index.md +++ b/count-and-say/index.md @@ -4,6 +4,4 @@ title: Count and Say date: 2014-12-29 00:26:24 +0800 leetcode_id: 38 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/decode-ways/index.md b/decode-ways/index.md index 6461d68..7530ef7 100644 --- a/decode-ways/index.md +++ b/decode-ways/index.md @@ -4,6 +4,4 @@ title: Decode Ways date: 2014-12-29 00:26:24 +0800 leetcode_id: 91 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/distinct-subsequences/index.md b/distinct-subsequences/index.md index b1da625..d59963f 100644 --- a/distinct-subsequences/index.md +++ b/distinct-subsequences/index.md @@ -4,6 +4,4 @@ title: Distinct Subsequences date: 2014-12-29 00:26:24 +0800 leetcode_id: 115 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/divide-two-integers/index.md b/divide-two-integers/index.md index c4b00cf..b68a336 100644 --- a/divide-two-integers/index.md +++ b/divide-two-integers/index.md @@ -4,6 +4,4 @@ title: Divide Two Integers date: 2014-12-29 00:26:24 +0800 leetcode_id: 29 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/dungeon-game/index.md b/dungeon-game/index.md index a4fc3bc..07c9818 100644 --- a/dungeon-game/index.md +++ b/dungeon-game/index.md @@ -4,6 +4,4 @@ title: Dungeon Game date: 2015-01-21 18:54:25 +0800 leetcode_id: 174 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/edit-distance/index.md b/edit-distance/index.md index 07ac2b6..d28c003 100644 --- a/edit-distance/index.md +++ b/edit-distance/index.md @@ -4,6 +4,4 @@ title: Edit Distance date: 2014-12-29 00:26:24 +0800 leetcode_id: 72 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/evaluate-reverse-polish-notation/index.md b/evaluate-reverse-polish-notation/index.md index 664becc..c773d91 100644 --- a/evaluate-reverse-polish-notation/index.md +++ b/evaluate-reverse-polish-notation/index.md @@ -4,6 +4,4 @@ title: Evaluate Reverse Polish Notation date: 2014-12-29 00:26:24 +0800 leetcode_id: 150 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/excel-sheet-column-number/index.md b/excel-sheet-column-number/index.md index 9f7aaed..b325899 100644 --- a/excel-sheet-column-number/index.md +++ b/excel-sheet-column-number/index.md @@ -4,6 +4,4 @@ title: Excel Sheet Column Number date: 2015-01-21 17:54:45 +0800 leetcode_id: 171 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/excel-sheet-column-title/index.md b/excel-sheet-column-title/index.md index 4806a7f..2923fb9 100644 --- a/excel-sheet-column-title/index.md +++ b/excel-sheet-column-title/index.md @@ -4,6 +4,4 @@ title: Excel Sheet Column Title date: 2015-01-21 17:53:50 +0800 leetcode_id: 168 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/factorial-trailing-zeroes/index.md b/factorial-trailing-zeroes/index.md index ea0c193..733104d 100644 --- a/factorial-trailing-zeroes/index.md +++ b/factorial-trailing-zeroes/index.md @@ -4,6 +4,4 @@ title: Factorial Trailing Zeroes date: 2015-01-03 03:36:44 +0800 leetcode_id: 172 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/find-minimum-in-rotated-sorted-array-ii/index.md b/find-minimum-in-rotated-sorted-array-ii/index.md index ac995a8..def2bf9 100644 --- a/find-minimum-in-rotated-sorted-array-ii/index.md +++ b/find-minimum-in-rotated-sorted-array-ii/index.md @@ -4,6 +4,4 @@ title: Find Minimum in Rotated Sorted Array II date: 2014-12-29 00:26:24 +0800 leetcode_id: 154 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/find-minimum-in-rotated-sorted-array/index.md b/find-minimum-in-rotated-sorted-array/index.md index 466d818..255c2f1 100644 --- a/find-minimum-in-rotated-sorted-array/index.md +++ b/find-minimum-in-rotated-sorted-array/index.md @@ -4,6 +4,4 @@ title: Find Minimum in Rotated Sorted Array date: 2014-12-29 00:26:24 +0800 leetcode_id: 153 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/find-peak-element/index.md b/find-peak-element/index.md index a88f70d..693fe39 100644 --- a/find-peak-element/index.md +++ b/find-peak-element/index.md @@ -4,6 +4,4 @@ title: Find Peak Element date: 2014-12-29 00:26:24 +0800 leetcode_id: 162 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/first-missing-positive/index.md b/first-missing-positive/index.md index 60d7cd5..9ee8208 100644 --- a/first-missing-positive/index.md +++ b/first-missing-positive/index.md @@ -4,6 +4,4 @@ title: First Missing Positive date: 2014-12-29 00:26:24 +0800 leetcode_id: 41 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/flatten-binary-tree-to-linked-list/index.md b/flatten-binary-tree-to-linked-list/index.md index 03c81ec..e9beaf3 100644 --- a/flatten-binary-tree-to-linked-list/index.md +++ b/flatten-binary-tree-to-linked-list/index.md @@ -4,6 +4,4 @@ title: Flatten Binary Tree to Linked List date: 2014-12-29 00:26:24 +0800 leetcode_id: 114 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/fraction-to-recurring-decimal/index.md b/fraction-to-recurring-decimal/index.md index 813fdef..5295755 100644 --- a/fraction-to-recurring-decimal/index.md +++ b/fraction-to-recurring-decimal/index.md @@ -4,6 +4,4 @@ title: Fraction to Recurring Decimal date: 2015-01-21 17:46:10 +0800 leetcode_id: 166 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/gas-station/index.md b/gas-station/index.md index 0f36f94..b053213 100644 --- a/gas-station/index.md +++ b/gas-station/index.md @@ -4,6 +4,4 @@ title: Gas Station date: 2014-12-29 00:26:24 +0800 leetcode_id: 134 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/generate-parentheses/index.md b/generate-parentheses/index.md index 0e86418..6773a80 100644 --- a/generate-parentheses/index.md +++ b/generate-parentheses/index.md @@ -4,6 +4,4 @@ title: Generate Parentheses date: 2014-12-29 00:26:24 +0800 leetcode_id: 22 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/gray-code/index.md b/gray-code/index.md index 25c0864..319da9d 100644 --- a/gray-code/index.md +++ b/gray-code/index.md @@ -4,6 +4,4 @@ title: Gray Code date: 2015-02-13 00:44:38 +0800 leetcode_id: 89 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/house-robber/index.md b/house-robber/index.md index 80859c3..cae3cf8 100644 --- a/house-robber/index.md +++ b/house-robber/index.md @@ -4,6 +4,4 @@ title: House Robber date: 2015-03-31 20:10:39 +0800 leetcode_id: 198 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/implement-strstr/index.md b/implement-strstr/index.md index 193d19d..22fb12e 100644 --- a/implement-strstr/index.md +++ b/implement-strstr/index.md @@ -4,6 +4,4 @@ title: Implement strStr() date: 2014-12-29 00:26:24 +0800 leetcode_id: 28 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/insert-interval/index.md b/insert-interval/index.md index 373a916..5f9b647 100644 --- a/insert-interval/index.md +++ b/insert-interval/index.md @@ -4,6 +4,4 @@ title: Insert Interval date: 2014-12-29 00:26:24 +0800 leetcode_id: 57 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/insertion-sort-list/index.md b/insertion-sort-list/index.md index dd80efc..94888a1 100644 --- a/insertion-sort-list/index.md +++ b/insertion-sort-list/index.md @@ -4,6 +4,4 @@ title: Insertion Sort List date: 2014-12-29 00:26:24 +0800 leetcode_id: 147 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/integer-to-roman/index.md b/integer-to-roman/index.md index 8247fb7..dac44a6 100644 --- a/integer-to-roman/index.md +++ b/integer-to-roman/index.md @@ -4,6 +4,4 @@ title: Integer to Roman date: 2014-12-29 00:26:24 +0800 leetcode_id: 12 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/interleaving-string/index.md b/interleaving-string/index.md index b02643e..cdc5248 100644 --- a/interleaving-string/index.md +++ b/interleaving-string/index.md @@ -4,6 +4,4 @@ title: Interleaving String date: 2014-12-29 00:26:24 +0800 leetcode_id: 97 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/intersection-of-two-linked-lists/index.md b/intersection-of-two-linked-lists/index.md index 8b96b46..54e299d 100644 --- a/intersection-of-two-linked-lists/index.md +++ b/intersection-of-two-linked-lists/index.md @@ -4,6 +4,4 @@ title: Intersection of Two Linked Lists date: 2014-12-29 00:26:24 +0800 leetcode_id: 160 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/jump-game-ii/index.md b/jump-game-ii/index.md index 0dcabcf..89100fd 100644 --- a/jump-game-ii/index.md +++ b/jump-game-ii/index.md @@ -4,6 +4,4 @@ title: Jump Game II date: 2014-12-29 00:26:24 +0800 leetcode_id: 45 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/jump-game/index.md b/jump-game/index.md index a85e7aa..b11ba12 100644 --- a/jump-game/index.md +++ b/jump-game/index.md @@ -4,6 +4,4 @@ title: Jump Game date: 2014-12-29 00:26:24 +0800 leetcode_id: 55 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/largest-number/index.md b/largest-number/index.md index 82c2ac1..d9076ab 100644 --- a/largest-number/index.md +++ b/largest-number/index.md @@ -4,6 +4,4 @@ title: Largest Number date: 2015-01-21 17:33:39 +0800 leetcode_id: 179 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/largest-rectangle-in-histogram/index.md b/largest-rectangle-in-histogram/index.md index 0fe1e19..944918e 100644 --- a/largest-rectangle-in-histogram/index.md +++ b/largest-rectangle-in-histogram/index.md @@ -4,6 +4,4 @@ title: Largest Rectangle in Histogram date: 2014-12-29 00:26:24 +0800 leetcode_id: 84 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/length-of-last-word/index.md b/length-of-last-word/index.md index b7075e0..7e402d7 100644 --- a/length-of-last-word/index.md +++ b/length-of-last-word/index.md @@ -4,6 +4,4 @@ title: Length of Last Word date: 2014-12-29 00:26:24 +0800 leetcode_id: 58 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/letter-combinations-of-a-phone-number/index.md b/letter-combinations-of-a-phone-number/index.md index 8c9632e..3a8fd7b 100644 --- a/letter-combinations-of-a-phone-number/index.md +++ b/letter-combinations-of-a-phone-number/index.md @@ -4,6 +4,4 @@ title: Letter Combinations of a Phone Number date: 2015-01-18 03:28:07 +0800 leetcode_id: 17 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/linked-list-cycle-ii/index.md b/linked-list-cycle-ii/index.md index e872762..fc84214 100644 --- a/linked-list-cycle-ii/index.md +++ b/linked-list-cycle-ii/index.md @@ -4,6 +4,4 @@ title: Linked List Cycle II date: 2014-12-29 00:26:24 +0800 leetcode_id: 142 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/linked-list-cycle/index.md b/linked-list-cycle/index.md index 7829596..9d057f3 100644 --- a/linked-list-cycle/index.md +++ b/linked-list-cycle/index.md @@ -4,6 +4,4 @@ title: Linked List Cycle date: 2014-12-29 00:26:24 +0800 leetcode_id: 141 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/longest-common-prefix/index.md b/longest-common-prefix/index.md index 78fc4f3..28d695c 100644 --- a/longest-common-prefix/index.md +++ b/longest-common-prefix/index.md @@ -4,6 +4,4 @@ title: Longest Common Prefix date: 2014-12-29 00:26:24 +0800 leetcode_id: 14 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/longest-consecutive-sequence/index.md b/longest-consecutive-sequence/index.md index 5553e49..cbfb422 100644 --- a/longest-consecutive-sequence/index.md +++ b/longest-consecutive-sequence/index.md @@ -4,6 +4,4 @@ title: Longest Consecutive Sequence date: 2014-12-29 00:26:24 +0800 leetcode_id: 128 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/longest-palindromic-substring/index.md b/longest-palindromic-substring/index.md index 2f5b645..a5b9457 100644 --- a/longest-palindromic-substring/index.md +++ b/longest-palindromic-substring/index.md @@ -4,6 +4,4 @@ title: Longest Palindromic Substring date: 2014-12-29 00:26:24 +0800 leetcode_id: 5 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/longest-substring-with-at-most-two-distinct-characters/index.md b/longest-substring-with-at-most-two-distinct-characters/index.md index c1b808a..598f768 100644 --- a/longest-substring-with-at-most-two-distinct-characters/index.md +++ b/longest-substring-with-at-most-two-distinct-characters/index.md @@ -4,6 +4,4 @@ title: Longest Substring with At Most Two Distinct Characters date: 2014-12-29 00:26:24 +0800 leetcode_id: 159 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/longest-substring-without-repeating-characters/index.md b/longest-substring-without-repeating-characters/index.md index 868db91..8ca0b66 100644 --- a/longest-substring-without-repeating-characters/index.md +++ b/longest-substring-without-repeating-characters/index.md @@ -4,6 +4,4 @@ title: Longest Substring Without Repeating Characters date: 2014-12-29 00:26:24 +0800 leetcode_id: 3 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/longest-valid-parentheses/index.md b/longest-valid-parentheses/index.md index b010d76..a52481a 100644 --- a/longest-valid-parentheses/index.md +++ b/longest-valid-parentheses/index.md @@ -4,6 +4,4 @@ title: Longest Valid Parentheses date: 2014-12-29 00:26:24 +0800 leetcode_id: 32 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/lru-cache/index.md b/lru-cache/index.md index 3197346..1cc0bc0 100644 --- a/lru-cache/index.md +++ b/lru-cache/index.md @@ -4,6 +4,4 @@ title: LRU Cache date: 2014-12-29 00:26:24 +0800 leetcode_id: 146 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/majority-element/index.md b/majority-element/index.md index eafead8..e64ca8a 100644 --- a/majority-element/index.md +++ b/majority-element/index.md @@ -4,6 +4,4 @@ title: Majority Element date: 2015-01-03 03:53:03 +0800 leetcode_id: 169 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/max-points-on-a-line/index.md b/max-points-on-a-line/index.md index b237c67..559fd3e 100644 --- a/max-points-on-a-line/index.md +++ b/max-points-on-a-line/index.md @@ -4,6 +4,4 @@ title: Max Points on a Line date: 2014-12-29 00:26:24 +0800 leetcode_id: 149 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/maximal-rectangle/index.md b/maximal-rectangle/index.md index c04459b..72eee5b 100644 --- a/maximal-rectangle/index.md +++ b/maximal-rectangle/index.md @@ -4,6 +4,4 @@ title: Maximal Rectangle date: 2014-12-29 00:26:24 +0800 leetcode_id: 85 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/maximum-depth-of-binary-tree/index.md b/maximum-depth-of-binary-tree/index.md index 6b3b4c2..ab5b064 100644 --- a/maximum-depth-of-binary-tree/index.md +++ b/maximum-depth-of-binary-tree/index.md @@ -4,6 +4,4 @@ title: Maximum Depth of Binary Tree date: 2014-12-29 00:26:24 +0800 leetcode_id: 104 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/maximum-gap/index.md b/maximum-gap/index.md index b87796f..698f2c3 100644 --- a/maximum-gap/index.md +++ b/maximum-gap/index.md @@ -4,6 +4,4 @@ title: Maximum Gap date: 2014-12-29 00:26:24 +0800 leetcode_id: 164 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/maximum-product-subarray/index.md b/maximum-product-subarray/index.md index b62014f..c5ac74a 100644 --- a/maximum-product-subarray/index.md +++ b/maximum-product-subarray/index.md @@ -4,6 +4,4 @@ title: Maximum Product Subarray date: 2014-09-24 23:57:39 +0800 leetcode_id: 152 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/maximum-subarray/index.md b/maximum-subarray/index.md index e91f5a3..a500d33 100644 --- a/maximum-subarray/index.md +++ b/maximum-subarray/index.md @@ -4,6 +4,4 @@ title: Maximum Subarray date: 2014-12-29 00:26:24 +0800 leetcode_id: 53 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/median-of-two-sorted-arrays/index.md b/median-of-two-sorted-arrays/index.md index 8c294ec..d520b30 100644 --- a/median-of-two-sorted-arrays/index.md +++ b/median-of-two-sorted-arrays/index.md @@ -4,6 +4,4 @@ title: Median of Two Sorted Arrays date: 2014-12-29 00:26:24 +0800 leetcode_id: 4 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/merge-intervals/index.md b/merge-intervals/index.md index 59998c2..255fc48 100644 --- a/merge-intervals/index.md +++ b/merge-intervals/index.md @@ -4,6 +4,4 @@ title: Merge Intervals date: 2014-12-29 00:26:24 +0800 leetcode_id: 56 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/merge-k-sorted-lists/index.md b/merge-k-sorted-lists/index.md index 756ff07..2d796fd 100644 --- a/merge-k-sorted-lists/index.md +++ b/merge-k-sorted-lists/index.md @@ -4,6 +4,4 @@ title: Merge k Sorted Lists date: 2014-12-29 00:26:24 +0800 leetcode_id: 23 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/merge-sorted-array/index.md b/merge-sorted-array/index.md index c78f3e7..4775d36 100644 --- a/merge-sorted-array/index.md +++ b/merge-sorted-array/index.md @@ -4,6 +4,4 @@ title: Merge Sorted Array date: 2015-02-13 00:34:52 +0800 leetcode_id: 88 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/merge-two-sorted-lists/index.md b/merge-two-sorted-lists/index.md index 15358d2..53c2277 100644 --- a/merge-two-sorted-lists/index.md +++ b/merge-two-sorted-lists/index.md @@ -4,6 +4,4 @@ title: Merge Two Sorted Lists date: 2014-12-29 00:26:24 +0800 leetcode_id: 21 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/min-stack/index.md b/min-stack/index.md index 4e7143f..d1114de 100644 --- a/min-stack/index.md +++ b/min-stack/index.md @@ -4,6 +4,4 @@ title: Min Stack date: 2014-11-18 00:59:34 +0800 leetcode_id: 155 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/minimum-depth-of-binary-tree/index.md b/minimum-depth-of-binary-tree/index.md index f97d54f..35d2a27 100644 --- a/minimum-depth-of-binary-tree/index.md +++ b/minimum-depth-of-binary-tree/index.md @@ -4,6 +4,4 @@ title: Minimum Depth of Binary Tree date: 2014-12-29 00:26:24 +0800 leetcode_id: 111 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/minimum-path-sum/index.md b/minimum-path-sum/index.md index 0ad9aac..56e4fa4 100644 --- a/minimum-path-sum/index.md +++ b/minimum-path-sum/index.md @@ -4,6 +4,4 @@ title: Minimum Path Sum date: 2014-12-29 00:26:24 +0800 leetcode_id: 64 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/minimum-window-substring/index.md b/minimum-window-substring/index.md index ee153da..e2509fc 100644 --- a/minimum-window-substring/index.md +++ b/minimum-window-substring/index.md @@ -4,6 +4,4 @@ title: Minimum Window Substring date: 2014-12-29 00:26:24 +0800 leetcode_id: 76 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/missing-ranges/index.md b/missing-ranges/index.md index 3a15aa8..ab887ea 100644 --- a/missing-ranges/index.md +++ b/missing-ranges/index.md @@ -4,6 +4,4 @@ title: Missing Ranges date: 2014-12-29 00:26:24 +0800 leetcode_id: 163 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/multiply-strings/index.md b/multiply-strings/index.md index d23bae4..b2b7520 100644 --- a/multiply-strings/index.md +++ b/multiply-strings/index.md @@ -4,6 +4,4 @@ title: Multiply Strings date: 2014-12-29 00:26:24 +0800 leetcode_id: 43 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/n-queens-ii/index.md b/n-queens-ii/index.md index aa106c3..120f7ad 100644 --- a/n-queens-ii/index.md +++ b/n-queens-ii/index.md @@ -4,6 +4,4 @@ title: N-Queens II date: 2014-12-29 00:26:24 +0800 leetcode_id: 52 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/n-queens/index.md b/n-queens/index.md index 979bab5..5ca314c 100644 --- a/n-queens/index.md +++ b/n-queens/index.md @@ -4,6 +4,4 @@ title: N-Queens date: 2014-12-29 00:26:24 +0800 leetcode_id: 51 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/next-permutation/index.md b/next-permutation/index.md index 2484374..c7ef7be 100644 --- a/next-permutation/index.md +++ b/next-permutation/index.md @@ -4,6 +4,4 @@ title: Next Permutation date: 2014-12-29 00:26:24 +0800 leetcode_id: 31 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/number-of-1-bits/index.md b/number-of-1-bits/index.md index ea4fbeb..a1078c5 100644 --- a/number-of-1-bits/index.md +++ b/number-of-1-bits/index.md @@ -4,6 +4,4 @@ title: Number of 1 Bits date: 2015-03-10 12:33:10 +0800 leetcode_id: 191 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/number-of-islands/index.md b/number-of-islands/index.md index 75835c5..5d3dc64 100644 --- a/number-of-islands/index.md +++ b/number-of-islands/index.md @@ -4,6 +4,4 @@ title: Number of Islands date: 2015-04-08 13:28:15+08:00 leetcode_id: 200 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/one-edit-distance/index.md b/one-edit-distance/index.md index ff2ebd1..ec336b3 100644 --- a/one-edit-distance/index.md +++ b/one-edit-distance/index.md @@ -4,6 +4,4 @@ title: One Edit Distance date: 2014-12-29 00:26:24 +0800 leetcode_id: 161 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/palindrome-number/index.md b/palindrome-number/index.md index b86af95..1c393a4 100644 --- a/palindrome-number/index.md +++ b/palindrome-number/index.md @@ -4,6 +4,4 @@ title: Palindrome Number date: 2015-02-16 17:43:10 +0800 leetcode_id: 9 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/palindrome-partitioning-ii/index.md b/palindrome-partitioning-ii/index.md index 92c6d4e..5f02f13 100644 --- a/palindrome-partitioning-ii/index.md +++ b/palindrome-partitioning-ii/index.md @@ -4,6 +4,4 @@ title: Palindrome Partitioning II date: 2014-12-29 00:26:24 +0800 leetcode_id: 132 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/palindrome-partitioning/index.md b/palindrome-partitioning/index.md index 167101f..6c9767d 100644 --- a/palindrome-partitioning/index.md +++ b/palindrome-partitioning/index.md @@ -4,6 +4,4 @@ title: Palindrome Partitioning date: 2014-12-29 00:26:24 +0800 leetcode_id: 131 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/partition-list/index.md b/partition-list/index.md index 348fba0..95205bb 100644 --- a/partition-list/index.md +++ b/partition-list/index.md @@ -4,6 +4,4 @@ title: Partition List date: 2014-12-29 00:26:24 +0800 leetcode_id: 86 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/pascals-triangle-ii/index.md b/pascals-triangle-ii/index.md index e7573fe..2df0e89 100644 --- a/pascals-triangle-ii/index.md +++ b/pascals-triangle-ii/index.md @@ -4,6 +4,4 @@ title: Pascal's Triangle II date: 2014-12-29 00:26:24 +0800 leetcode_id: 119 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/pascals-triangle/index.md b/pascals-triangle/index.md index c9b49ef..b4877b3 100644 --- a/pascals-triangle/index.md +++ b/pascals-triangle/index.md @@ -4,6 +4,4 @@ title: Pascal's Triangle date: 2014-12-29 00:26:24 +0800 leetcode_id: 118 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/path-sum-ii/index.md b/path-sum-ii/index.md index 1bb6614..1a725cd 100644 --- a/path-sum-ii/index.md +++ b/path-sum-ii/index.md @@ -4,6 +4,4 @@ title: Path Sum II date: 2014-12-29 00:26:24 +0800 leetcode_id: 113 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/path-sum/index.md b/path-sum/index.md index 73781f3..16491c4 100644 --- a/path-sum/index.md +++ b/path-sum/index.md @@ -4,6 +4,4 @@ title: Path Sum date: 2014-12-29 00:26:24 +0800 leetcode_id: 112 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/permutation-sequence/index.md b/permutation-sequence/index.md index 1956c27..a5192a4 100644 --- a/permutation-sequence/index.md +++ b/permutation-sequence/index.md @@ -4,6 +4,4 @@ title: Permutation Sequence date: 2014-12-29 00:26:24 +0800 leetcode_id: 60 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/permutations-ii/index.md b/permutations-ii/index.md index c81f239..84036ab 100644 --- a/permutations-ii/index.md +++ b/permutations-ii/index.md @@ -4,6 +4,4 @@ title: Permutations II date: 2014-12-29 00:26:24 +0800 leetcode_id: 47 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/permutations/index.md b/permutations/index.md index 6b9e57c..a6708ec 100644 --- a/permutations/index.md +++ b/permutations/index.md @@ -4,6 +4,4 @@ title: Permutations date: 2014-12-29 00:26:24 +0800 leetcode_id: 46 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/plus-one/index.md b/plus-one/index.md index e04f238..102b564 100644 --- a/plus-one/index.md +++ b/plus-one/index.md @@ -4,6 +4,4 @@ title: Plus One date: 2014-12-29 00:26:24 +0800 leetcode_id: 66 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/populating-next-right-pointers-in-each-node-ii/index.md b/populating-next-right-pointers-in-each-node-ii/index.md index 262be19..f020fa6 100644 --- a/populating-next-right-pointers-in-each-node-ii/index.md +++ b/populating-next-right-pointers-in-each-node-ii/index.md @@ -4,6 +4,4 @@ title: Populating Next Right Pointers in Each Node II date: 2014-12-29 00:26:24 +0800 leetcode_id: 117 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/populating-next-right-pointers-in-each-node/index.md b/populating-next-right-pointers-in-each-node/index.md index da292c2..8b48d7a 100644 --- a/populating-next-right-pointers-in-each-node/index.md +++ b/populating-next-right-pointers-in-each-node/index.md @@ -4,6 +4,4 @@ title: Populating Next Right Pointers in Each Node date: 2014-12-29 00:26:24 +0800 leetcode_id: 116 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/powx-n/index.md b/powx-n/index.md index 3abcfb9..d0f44ed 100644 --- a/powx-n/index.md +++ b/powx-n/index.md @@ -4,6 +4,4 @@ title: Pow(x, n) date: 2014-12-29 00:26:24 +0800 leetcode_id: 50 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/read-n-characters-given-read4-ii-call-multiple-times/index.md b/read-n-characters-given-read4-ii-call-multiple-times/index.md index cc2df63..52a6c51 100644 --- a/read-n-characters-given-read4-ii-call-multiple-times/index.md +++ b/read-n-characters-given-read4-ii-call-multiple-times/index.md @@ -4,6 +4,4 @@ title: Read N Characters Given Read4 II - Call multiple times date: 2014-12-29 00:26:24 +0800 leetcode_id: 158 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/read-n-characters-given-read4/index.md b/read-n-characters-given-read4/index.md index 19a4f5e..111133f 100644 --- a/read-n-characters-given-read4/index.md +++ b/read-n-characters-given-read4/index.md @@ -4,6 +4,4 @@ title: Read N Characters Given Read4 date: 2014-12-29 00:26:24 +0800 leetcode_id: 157 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/recover-binary-search-tree/index.md b/recover-binary-search-tree/index.md index 52ba332..3025e4c 100644 --- a/recover-binary-search-tree/index.md +++ b/recover-binary-search-tree/index.md @@ -4,6 +4,4 @@ title: Recover Binary Search Tree date: 2014-12-29 00:26:24 +0800 leetcode_id: 99 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/regular-expression-matching/index.md b/regular-expression-matching/index.md index 309dc29..3a07abc 100644 --- a/regular-expression-matching/index.md +++ b/regular-expression-matching/index.md @@ -4,6 +4,4 @@ title: Regular Expression Matching date: 2014-12-29 00:26:24 +0800 leetcode_id: 10 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/remove-duplicates-from-sorted-array-ii/index.md b/remove-duplicates-from-sorted-array-ii/index.md index e1f66e9..6150623 100644 --- a/remove-duplicates-from-sorted-array-ii/index.md +++ b/remove-duplicates-from-sorted-array-ii/index.md @@ -4,6 +4,4 @@ title: Remove Duplicates from Sorted Array II date: 2014-12-29 00:26:24 +0800 leetcode_id: 80 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/remove-duplicates-from-sorted-array/index.md b/remove-duplicates-from-sorted-array/index.md index 4393d88..e09cbc4 100644 --- a/remove-duplicates-from-sorted-array/index.md +++ b/remove-duplicates-from-sorted-array/index.md @@ -4,6 +4,4 @@ title: Remove Duplicates from Sorted Array date: 2014-12-29 00:26:24 +0800 leetcode_id: 26 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/remove-duplicates-from-sorted-list-ii/index.md b/remove-duplicates-from-sorted-list-ii/index.md index 4d64ac1..0356ee4 100644 --- a/remove-duplicates-from-sorted-list-ii/index.md +++ b/remove-duplicates-from-sorted-list-ii/index.md @@ -4,6 +4,4 @@ title: Remove Duplicates from Sorted List II date: 2014-12-29 00:26:24 +0800 leetcode_id: 82 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/remove-duplicates-from-sorted-list/index.md b/remove-duplicates-from-sorted-list/index.md index dbe930c..58728b3 100644 --- a/remove-duplicates-from-sorted-list/index.md +++ b/remove-duplicates-from-sorted-list/index.md @@ -4,6 +4,4 @@ title: Remove Duplicates from Sorted List date: 2014-12-29 00:26:24 +0800 leetcode_id: 83 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/remove-element/index.md b/remove-element/index.md index e868ba8..1a5ba21 100644 --- a/remove-element/index.md +++ b/remove-element/index.md @@ -4,6 +4,4 @@ title: Remove Element date: 2014-12-29 00:26:24 +0800 leetcode_id: 27 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/remove-nth-node-from-end-of-list/index.md b/remove-nth-node-from-end-of-list/index.md index fb3fa2e..d604ea1 100644 --- a/remove-nth-node-from-end-of-list/index.md +++ b/remove-nth-node-from-end-of-list/index.md @@ -4,6 +4,4 @@ title: Remove Nth Node From End of List date: 2014-12-29 00:26:24 +0800 leetcode_id: 19 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/reorder-list/index.md b/reorder-list/index.md index 0d40da5..e339b43 100644 --- a/reorder-list/index.md +++ b/reorder-list/index.md @@ -4,6 +4,4 @@ title: Reorder List date: 2014-12-29 00:26:24 +0800 leetcode_id: 143 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/repeated-dna-sequences/index.md b/repeated-dna-sequences/index.md index dc814f3..5e6ae50 100644 --- a/repeated-dna-sequences/index.md +++ b/repeated-dna-sequences/index.md @@ -4,6 +4,4 @@ title: Repeated DNA Sequences date: 2015-03-08 01:16:06 +0800 leetcode_id: 187 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/restore-ip-addresses/index.md b/restore-ip-addresses/index.md index 36710a2..99e6e2b 100644 --- a/restore-ip-addresses/index.md +++ b/restore-ip-addresses/index.md @@ -4,6 +4,4 @@ title: Restore IP Addresses date: 2014-12-29 00:26:24 +0800 leetcode_id: 93 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/reverse-bits/index.md b/reverse-bits/index.md index e5ef1de..bfffd23 100644 --- a/reverse-bits/index.md +++ b/reverse-bits/index.md @@ -4,6 +4,4 @@ title: Reverse Bits date: 2015-03-07 19:36:21 +0800 leetcode_id: 190 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/reverse-integer/index.md b/reverse-integer/index.md index 813d566..e47927f 100644 --- a/reverse-integer/index.md +++ b/reverse-integer/index.md @@ -4,6 +4,4 @@ title: Reverse Integer date: 2015-01-18 03:14:54 +0800 leetcode_id: 7 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/reverse-linked-list-ii/index.md b/reverse-linked-list-ii/index.md index d65f42e..2245e9a 100644 --- a/reverse-linked-list-ii/index.md +++ b/reverse-linked-list-ii/index.md @@ -4,6 +4,4 @@ title: Reverse Linked List II date: 2014-12-29 00:26:24 +0800 leetcode_id: 92 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/reverse-nodes-in-k-group/index.md b/reverse-nodes-in-k-group/index.md index b034ef5..5c1be88 100644 --- a/reverse-nodes-in-k-group/index.md +++ b/reverse-nodes-in-k-group/index.md @@ -4,6 +4,4 @@ title: Reverse Nodes in k-Group date: 2014-12-29 00:26:24 +0800 leetcode_id: 25 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/reverse-words-in-a-string-ii/index.md b/reverse-words-in-a-string-ii/index.md index 55be95a..b13b207 100644 --- a/reverse-words-in-a-string-ii/index.md +++ b/reverse-words-in-a-string-ii/index.md @@ -4,6 +4,4 @@ title: Reverse Words in a String II date: 2015-02-03 14:42:33 +0800 leetcode_id: 186 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/reverse-words-in-a-string/index.md b/reverse-words-in-a-string/index.md index 88bd05e..b6aab81 100644 --- a/reverse-words-in-a-string/index.md +++ b/reverse-words-in-a-string/index.md @@ -4,6 +4,4 @@ title: Reverse Words in a String date: 2015-01-19 00:08:01 +0800 leetcode_id: 151 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/roman-to-integer/index.md b/roman-to-integer/index.md index d99b286..3076c43 100644 --- a/roman-to-integer/index.md +++ b/roman-to-integer/index.md @@ -4,6 +4,4 @@ title: Roman to Integer date: 2014-12-29 00:26:24 +0800 leetcode_id: 13 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/rotate-array/index.md b/rotate-array/index.md index fd5a686..85eeb33 100644 --- a/rotate-array/index.md +++ b/rotate-array/index.md @@ -4,6 +4,4 @@ title: Rotate Array date: 2015-03-04 01:39:57 +0800 leetcode_id: 189 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/rotate-image/index.md b/rotate-image/index.md index f8a2719..7fcfdce 100644 --- a/rotate-image/index.md +++ b/rotate-image/index.md @@ -4,6 +4,4 @@ title: Rotate Image date: 2014-12-29 00:26:24 +0800 leetcode_id: 48 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/rotate-list/index.md b/rotate-list/index.md index 45258b7..7998645 100644 --- a/rotate-list/index.md +++ b/rotate-list/index.md @@ -4,6 +4,4 @@ title: Rotate List date: 2014-12-29 00:26:24 +0800 leetcode_id: 61 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/same-tree/index.md b/same-tree/index.md index b782b27..1c0024b 100644 --- a/same-tree/index.md +++ b/same-tree/index.md @@ -4,6 +4,4 @@ title: Same Tree date: 2014-12-29 00:26:24 +0800 leetcode_id: 100 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/scramble-string/index.md b/scramble-string/index.md index d53fff5..7744138 100644 --- a/scramble-string/index.md +++ b/scramble-string/index.md @@ -4,6 +4,4 @@ title: Scramble String date: 2014-12-29 00:26:24 +0800 leetcode_id: 87 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/search-a-2d-matrix/index.md b/search-a-2d-matrix/index.md index daf935f..20286a4 100644 --- a/search-a-2d-matrix/index.md +++ b/search-a-2d-matrix/index.md @@ -4,6 +4,4 @@ title: Search a 2D Matrix date: 2014-12-29 00:26:24 +0800 leetcode_id: 74 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/search-for-a-range/index.md b/search-for-a-range/index.md index dd9c71b..b60cba3 100644 --- a/search-for-a-range/index.md +++ b/search-for-a-range/index.md @@ -4,6 +4,4 @@ title: Search for a Range date: 2014-12-29 00:26:24 +0800 leetcode_id: 34 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/search-in-rotated-sorted-array-ii/index.md b/search-in-rotated-sorted-array-ii/index.md index 8139bb6..81594de 100644 --- a/search-in-rotated-sorted-array-ii/index.md +++ b/search-in-rotated-sorted-array-ii/index.md @@ -4,6 +4,4 @@ title: Search in Rotated Sorted Array II date: 2014-12-29 00:26:24 +0800 leetcode_id: 81 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/search-in-rotated-sorted-array/index.md b/search-in-rotated-sorted-array/index.md index 2215282..6167729 100644 --- a/search-in-rotated-sorted-array/index.md +++ b/search-in-rotated-sorted-array/index.md @@ -4,6 +4,4 @@ title: Search in Rotated Sorted Array date: 2014-12-29 00:26:24 +0800 leetcode_id: 33 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/search-insert-position/index.md b/search-insert-position/index.md index 303314f..ec3700e 100644 --- a/search-insert-position/index.md +++ b/search-insert-position/index.md @@ -4,6 +4,4 @@ title: Search Insert Position date: 2014-12-29 00:26:24 +0800 leetcode_id: 35 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/set-matrix-zeroes/index.md b/set-matrix-zeroes/index.md index ab5f6ca..7e0f220 100644 --- a/set-matrix-zeroes/index.md +++ b/set-matrix-zeroes/index.md @@ -4,6 +4,4 @@ title: Set Matrix Zeroes date: 2014-12-29 00:26:24 +0800 leetcode_id: 73 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/simplify-path/index.md b/simplify-path/index.md index cd0d98a..924e27c 100644 --- a/simplify-path/index.md +++ b/simplify-path/index.md @@ -4,6 +4,4 @@ title: Simplify Path date: 2015-01-29 15:17:38 +0800 leetcode_id: 71 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/single-number-ii/index.md b/single-number-ii/index.md index 49a8ae8..b8d1972 100644 --- a/single-number-ii/index.md +++ b/single-number-ii/index.md @@ -4,6 +4,4 @@ title: Single Number II date: 2014-12-29 00:26:24 +0800 leetcode_id: 137 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/single-number/index.md b/single-number/index.md index 8f9175d..d639686 100644 --- a/single-number/index.md +++ b/single-number/index.md @@ -4,6 +4,4 @@ title: Single Number date: 2014-12-29 00:26:24 +0800 leetcode_id: 136 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/skeleton.sh b/skeleton.sh index c249e26..fa3c0c7 100755 --- a/skeleton.sh +++ b/skeleton.sh @@ -20,9 +20,7 @@ title: FIXME date: $now leetcode_id: FIXME --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} EOL diff --git a/sort-colors/index.md b/sort-colors/index.md index 81eaad5..ea77fbb 100644 --- a/sort-colors/index.md +++ b/sort-colors/index.md @@ -4,6 +4,4 @@ title: Sort Colors date: 2015-01-22 01:52:46 +0800 leetcode_id: 75 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/sort-list/index.md b/sort-list/index.md index f6ac98d..9dcd802 100644 --- a/sort-list/index.md +++ b/sort-list/index.md @@ -4,6 +4,4 @@ title: Sort List date: 2014-12-29 00:26:24 +0800 leetcode_id: 148 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/spiral-matrix-ii/index.md b/spiral-matrix-ii/index.md index fa9813a..e624bf8 100644 --- a/spiral-matrix-ii/index.md +++ b/spiral-matrix-ii/index.md @@ -4,6 +4,4 @@ title: Spiral Matrix II date: 2014-12-29 00:26:24 +0800 leetcode_id: 59 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/spiral-matrix/index.md b/spiral-matrix/index.md index 99c8006..e68647e 100644 --- a/spiral-matrix/index.md +++ b/spiral-matrix/index.md @@ -4,6 +4,4 @@ title: Spiral Matrix date: 2014-12-29 00:26:24 +0800 leetcode_id: 54 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/sqrtx/index.md b/sqrtx/index.md index 31cc78c..909dcc2 100644 --- a/sqrtx/index.md +++ b/sqrtx/index.md @@ -4,6 +4,4 @@ title: Sqrt(x) date: 2015-01-18 23:48:07 +0800 leetcode_id: 69 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/string-to-integer-atoi/index.md b/string-to-integer-atoi/index.md index 70484c6..3304230 100644 --- a/string-to-integer-atoi/index.md +++ b/string-to-integer-atoi/index.md @@ -4,6 +4,4 @@ title: String to Integer (atoi) date: 2014-12-29 00:26:24 +0800 leetcode_id: 8 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/subsets-ii/index.md b/subsets-ii/index.md index a8e086a..d3de772 100644 --- a/subsets-ii/index.md +++ b/subsets-ii/index.md @@ -4,6 +4,4 @@ title: Subsets II date: 2015-02-13 01:14:40 +0800 leetcode_id: 90 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/subsets/index.md b/subsets/index.md index e7401c2..4264933 100644 --- a/subsets/index.md +++ b/subsets/index.md @@ -4,6 +4,4 @@ title: Subsets date: 2015-02-13 01:10:10 +0800 leetcode_id: 78 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/substring-with-concatenation-of-all-words/index.md b/substring-with-concatenation-of-all-words/index.md index 3827ff6..54e5fe3 100644 --- a/substring-with-concatenation-of-all-words/index.md +++ b/substring-with-concatenation-of-all-words/index.md @@ -4,6 +4,4 @@ title: Substring with Concatenation of All Words date: 2014-12-29 00:26:24 +0800 leetcode_id: 30 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/sudoku-solver/index.md b/sudoku-solver/index.md index 533f205..4953517 100644 --- a/sudoku-solver/index.md +++ b/sudoku-solver/index.md @@ -4,6 +4,4 @@ title: Sudoku Solver date: 2014-12-29 00:26:24 +0800 leetcode_id: 37 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/sum-root-to-leaf-numbers/index.md b/sum-root-to-leaf-numbers/index.md index ebd2a0f..ed920b0 100644 --- a/sum-root-to-leaf-numbers/index.md +++ b/sum-root-to-leaf-numbers/index.md @@ -4,6 +4,4 @@ title: Sum Root to Leaf Numbers date: 2015-01-16 16:07:02 -0500 leetcode_id: 129 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/surrounded-regions/index.md b/surrounded-regions/index.md index 0cabbe2..7e48167 100644 --- a/surrounded-regions/index.md +++ b/surrounded-regions/index.md @@ -4,6 +4,4 @@ title: Surrounded Regions date: 2014-12-29 00:26:24 +0800 leetcode_id: 130 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/swap-nodes-in-pairs/index.md b/swap-nodes-in-pairs/index.md index 409f48c..dcbf2db 100644 --- a/swap-nodes-in-pairs/index.md +++ b/swap-nodes-in-pairs/index.md @@ -4,6 +4,4 @@ title: Swap Nodes in Pairs date: 2014-12-29 00:26:24 +0800 leetcode_id: 24 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/symmetric-tree/index.md b/symmetric-tree/index.md index cbce220..bde57f8 100644 --- a/symmetric-tree/index.md +++ b/symmetric-tree/index.md @@ -4,6 +4,4 @@ title: Symmetric Tree date: 2014-12-29 00:26:24 +0800 leetcode_id: 101 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/text-justification/index.md b/text-justification/index.md index 11f1826..2990eb3 100644 --- a/text-justification/index.md +++ b/text-justification/index.md @@ -4,6 +4,4 @@ title: Text Justification date: 2014-12-29 00:26:24 +0800 leetcode_id: 68 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/trapping-rain-water/index.md b/trapping-rain-water/index.md index cfa47c3..db8107d 100644 --- a/trapping-rain-water/index.md +++ b/trapping-rain-water/index.md @@ -4,6 +4,4 @@ title: Trapping Rain Water date: 2014-12-29 00:26:24 +0800 leetcode_id: 42 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/triangle/index.md b/triangle/index.md index 15935f4..ad75db1 100644 --- a/triangle/index.md +++ b/triangle/index.md @@ -4,6 +4,4 @@ title: Triangle date: 2015-03-20 12:51:52 +0800 leetcode_id: 120 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/two-sum-ii-input-array-is-sorted/index.md b/two-sum-ii-input-array-is-sorted/index.md index fd0423c..624ff8c 100644 --- a/two-sum-ii-input-array-is-sorted/index.md +++ b/two-sum-ii-input-array-is-sorted/index.md @@ -4,6 +4,4 @@ title: Two Sum II - Input array is sorted date: 2015-01-23 12:45:49 +0800 leetcode_id: 167 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/two-sum-iii-data-structure-design/index.md b/two-sum-iii-data-structure-design/index.md index 56f45d1..bd983e9 100644 --- a/two-sum-iii-data-structure-design/index.md +++ b/two-sum-iii-data-structure-design/index.md @@ -4,6 +4,4 @@ title: Two Sum III - Data structure design date: 2015-01-21 18:05:09 +0800 leetcode_id: 170 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/two-sum/index.md b/two-sum/index.md index c4e3e82..df8f548 100644 --- a/two-sum/index.md +++ b/two-sum/index.md @@ -4,7 +4,4 @@ title: Two Sum date: 2014-12-29 00:26:24 +0800 leetcode_id: 1 leetcode_id: 1 ---- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/unique-binary-search-trees-ii/index.md b/unique-binary-search-trees-ii/index.md index e6ab9be..4947ffe 100644 --- a/unique-binary-search-trees-ii/index.md +++ b/unique-binary-search-trees-ii/index.md @@ -4,6 +4,4 @@ title: Unique Binary Search Trees II date: 2014-12-29 00:26:24 +0800 leetcode_id: 95 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/unique-binary-search-trees/index.md b/unique-binary-search-trees/index.md index b25c64f..697affa 100644 --- a/unique-binary-search-trees/index.md +++ b/unique-binary-search-trees/index.md @@ -4,6 +4,4 @@ title: Unique Binary Search Trees date: 2014-12-29 00:26:24 +0800 leetcode_id: 96 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/unique-paths-ii/index.md b/unique-paths-ii/index.md index 124cfbe..9b6ffcb 100644 --- a/unique-paths-ii/index.md +++ b/unique-paths-ii/index.md @@ -4,6 +4,4 @@ title: Unique Paths II date: 2014-12-29 00:26:24 +0800 leetcode_id: 63 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/unique-paths/index.md b/unique-paths/index.md index 33a3fc3..e2a8bf3 100644 --- a/unique-paths/index.md +++ b/unique-paths/index.md @@ -4,6 +4,4 @@ title: Unique Paths date: 2014-12-29 00:26:24 +0800 leetcode_id: 62 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/valid-number/index.md b/valid-number/index.md index 9d189a4..f9cf82c 100644 --- a/valid-number/index.md +++ b/valid-number/index.md @@ -4,6 +4,4 @@ title: Valid Number date: 2014-12-29 00:26:24 +0800 leetcode_id: 65 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/valid-palindrome/index.md b/valid-palindrome/index.md index 69bfcac..bccb9c0 100644 --- a/valid-palindrome/index.md +++ b/valid-palindrome/index.md @@ -4,6 +4,4 @@ title: Valid Palindrome date: 2014-12-29 00:26:24 +0800 leetcode_id: 125 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/valid-parentheses/index.md b/valid-parentheses/index.md index 0a0e687..22f698f 100644 --- a/valid-parentheses/index.md +++ b/valid-parentheses/index.md @@ -4,6 +4,4 @@ title: Valid Parentheses date: 2014-12-29 00:26:24 +0800 leetcode_id: 20 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/valid-sudoku/index.md b/valid-sudoku/index.md index ff1e19f..5ee9111 100644 --- a/valid-sudoku/index.md +++ b/valid-sudoku/index.md @@ -4,6 +4,4 @@ title: Valid Sudoku date: 2014-12-29 00:26:24 +0800 leetcode_id: 36 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/validate-binary-search-tree/index.md b/validate-binary-search-tree/index.md index 716ea48..4b79c08 100644 --- a/validate-binary-search-tree/index.md +++ b/validate-binary-search-tree/index.md @@ -4,6 +4,4 @@ title: Validate Binary Search Tree date: 2014-12-29 00:26:24 +0800 leetcode_id: 98 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/wildcard-matching/index.md b/wildcard-matching/index.md index 7e5947e..59064c9 100644 --- a/wildcard-matching/index.md +++ b/wildcard-matching/index.md @@ -4,6 +4,4 @@ title: Wildcard Matching date: 2014-12-29 00:26:24 +0800 leetcode_id: 44 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/word-break-ii/index.md b/word-break-ii/index.md index 1f81e4d..31eeab9 100644 --- a/word-break-ii/index.md +++ b/word-break-ii/index.md @@ -4,6 +4,4 @@ title: Word Break II date: 2014-12-29 00:26:24 +0800 leetcode_id: 140 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/word-break/index.md b/word-break/index.md index 69f62cf..784221f 100644 --- a/word-break/index.md +++ b/word-break/index.md @@ -4,6 +4,4 @@ title: Word Break date: 2014-12-29 00:26:24 +0800 leetcode_id: 139 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/word-ladder-ii/index.md b/word-ladder-ii/index.md index a76b3dd..e5f6699 100644 --- a/word-ladder-ii/index.md +++ b/word-ladder-ii/index.md @@ -4,6 +4,4 @@ title: Word Ladder II date: 2014-12-29 00:26:24 +0800 leetcode_id: 126 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/word-ladder/index.md b/word-ladder/index.md index 9458dce..e0df4cf 100644 --- a/word-ladder/index.md +++ b/word-ladder/index.md @@ -4,6 +4,4 @@ title: Word Ladder date: 2014-12-29 00:26:24 +0800 leetcode_id: 127 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/word-search/index.md b/word-search/index.md index 9ee737d..753116f 100644 --- a/word-search/index.md +++ b/word-search/index.md @@ -4,6 +4,4 @@ title: Word Search date: 2014-12-29 00:26:24 +0800 leetcode_id: 79 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} diff --git a/zigzag-conversion/index.md b/zigzag-conversion/index.md index 1778316..20eb8c6 100644 --- a/zigzag-conversion/index.md +++ b/zigzag-conversion/index.md @@ -4,6 +4,4 @@ title: ZigZag Conversion date: 2014-12-29 00:26:24 +0800 leetcode_id: 6 --- -{% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_readme = {{leetcode_name | append: '/README.md' | prepend: '_root/' }} %} -{% include {{leetcode_readme}} %} +{% include_relative README.md %} From a9c1c10d4981dbed7027e665875a77eccc369bdb Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 8 Apr 2015 15:07:31 +0800 Subject: [PATCH 04/79] new github style gemfile --- Gemfile | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 053c27d..f85f962 100644 --- a/Gemfile +++ b/Gemfile @@ -1,2 +1,7 @@ source 'https://rubygems.org' -gem 'github-pages' + +require 'json' +require 'open-uri' +versions = JSON.parse(open('https://pages.github.com/versions.json').read) + +gem 'github-pages', versions['github-pages'] From 882d7b01851f42de658fdd71ea042e2d3c2aae3f Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 8 Apr 2015 15:07:58 +0800 Subject: [PATCH 05/79] make jekyll happy --- number-of-islands/Solution.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/number-of-islands/Solution.java b/number-of-islands/Solution.java index a772d48..905ee55 100644 --- a/number-of-islands/Solution.java +++ b/number-of-islands/Solution.java @@ -16,7 +16,7 @@ void travel(int x, int y, final int mx, final int my, char[][] grid, boolean[][] visited[x][y] = true; - for(int[] xy: new int[][]{{x - 1, y}, {x + 1, y}, {x, y - 1}, {x, y + 1}}){ + for(int[] xy: new int[][]{ {x - 1, y}, {x + 1, y}, {x, y - 1}, {x, y + 1} }){ int _x = xy[0]; int _y = xy[1]; From 93d8fc2f38c759e1b26b33e791dc3024ecfeffb5 Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 8 Apr 2015 15:08:46 +0800 Subject: [PATCH 06/79] change to LeetCode (was Leetcode) --- _config.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_config.yml b/_config.yml index bacb619..8383411 100644 --- a/_config.yml +++ b/_config.yml @@ -1,6 +1,6 @@ -title: Leetcode solutions by tgic +title: LeetCode solutions by tgic email: farmer1992@gmail.com -description: "Leetcode solutions by tgic" +description: "LeetCode java solutions by tgic" github_username: tg123 markdown: redcarpet From 69716885d534d7e8c6f49a83033a3b86b8e9c59b Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 8 Apr 2015 15:34:46 +0800 Subject: [PATCH 07/79] fix bag index file --- two-sum/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/two-sum/index.md b/two-sum/index.md index df8f548..4ccaf5a 100644 --- a/two-sum/index.md +++ b/two-sum/index.md @@ -3,5 +3,5 @@ layout: solution title: Two Sum date: 2014-12-29 00:26:24 +0800 leetcode_id: 1 -leetcode_id: 1 +--- {% include_relative README.md %} From bbdc8b4780529ecbf5ba2107f58c71e6f6d92513 Mon Sep 17 00:00:00 2001 From: tgic Date: Tue, 21 Apr 2015 01:19:28 +0800 Subject: [PATCH 08/79] add bit and range numbers --- bitwise-and-of-numbers-range/README.md | 0 bitwise-and-of-numbers-range/Solution.java | 22 ++++++++++++++++++++++ bitwise-and-of-numbers-range/index.md | 7 +++++++ 3 files changed, 29 insertions(+) create mode 100644 bitwise-and-of-numbers-range/README.md create mode 100644 bitwise-and-of-numbers-range/Solution.java create mode 100644 bitwise-and-of-numbers-range/index.md diff --git a/bitwise-and-of-numbers-range/README.md b/bitwise-and-of-numbers-range/README.md new file mode 100644 index 0000000..e69de29 diff --git a/bitwise-and-of-numbers-range/Solution.java b/bitwise-and-of-numbers-range/Solution.java new file mode 100644 index 0000000..f0d8d81 --- /dev/null +++ b/bitwise-and-of-numbers-range/Solution.java @@ -0,0 +1,22 @@ +public class Solution { + public int rangeBitwiseAnd(int m, int n) { + final int SIZE = Integer.SIZE; + + long[] POW = new long[SIZE + 1]; + + for(int i = 0; i < SIZE; i++){ + POW[i] = (long)Math.pow(2, i); + } + + for(int i = SIZE; i > 0; i--){ + if(POW[i - 1] <= m && m < POW[i]){ + if(POW[i - 1] <= n && n < POW[i]){ + long p = POW[i - 1]; + return (int)p | rangeBitwiseAnd((int)(m & (p - 1)), (int)(n & (p - 1))); + } + } + } + + return 0; + } +} diff --git a/bitwise-and-of-numbers-range/index.md b/bitwise-and-of-numbers-range/index.md new file mode 100644 index 0000000..0041852 --- /dev/null +++ b/bitwise-and-of-numbers-range/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Bitwise AND of Numbers Range +date: 2015-04-21 01:17:47+08:00 +leetcode_id: 201 +--- +{% include_relative README.md %} From 1aa30251ccfad2e793539441c4842197068e2c6d Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 22 Apr 2015 12:34:48 +0800 Subject: [PATCH 09/79] happy today --- happy-number/README.md | 0 happy-number/Solution.java | 33 +++++++++++++++++++++++++++++++++ happy-number/index.md | 7 +++++++ 3 files changed, 40 insertions(+) create mode 100644 happy-number/README.md create mode 100644 happy-number/Solution.java create mode 100644 happy-number/index.md diff --git a/happy-number/README.md b/happy-number/README.md new file mode 100644 index 0000000..e69de29 diff --git a/happy-number/Solution.java b/happy-number/Solution.java new file mode 100644 index 0000000..c31546f --- /dev/null +++ b/happy-number/Solution.java @@ -0,0 +1,33 @@ +public class Solution { + + int trans(int n){ + int s = 0; + + do{ + int t = n % 10; + + s += t * t; + + n /= 10; + + } while(n > 0); + + return s; + } + + public boolean isHappy(int n) { + Set s = new HashSet<>(); + + for(;;) { + + n = trans(n); + + if(n == 1) return true; + + if(s.contains(n)) return false; + + s.add(n); + } + + } +} diff --git a/happy-number/index.md b/happy-number/index.md new file mode 100644 index 0000000..3053af5 --- /dev/null +++ b/happy-number/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Happy Number +date: 2015-04-22 12:33:21+08:00 +leetcode_id: 202 +--- +{% include_relative README.md %} From e9ab17e4cdb4d30213f7e8fbd58c5cfec9b9bf8d Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 23 Apr 2015 11:39:56 +0800 Subject: [PATCH 10/79] add remove ele from linkedlist --- remove-linked-list-elements/README.md | 0 remove-linked-list-elements/Solution.java | 20 ++++++++++++++++++++ remove-linked-list-elements/index.md | 7 +++++++ 3 files changed, 27 insertions(+) create mode 100644 remove-linked-list-elements/README.md create mode 100644 remove-linked-list-elements/Solution.java create mode 100644 remove-linked-list-elements/index.md diff --git a/remove-linked-list-elements/README.md b/remove-linked-list-elements/README.md new file mode 100644 index 0000000..e69de29 diff --git a/remove-linked-list-elements/Solution.java b/remove-linked-list-elements/Solution.java new file mode 100644 index 0000000..c106a1e --- /dev/null +++ b/remove-linked-list-elements/Solution.java @@ -0,0 +1,20 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +public class Solution { + public ListNode removeElements(ListNode head, int val) { + + if(head == null) return null; + + if(head.val == val) return removeElements(head.next, val); + + head.next = removeElements(head.next, val); + + return head; + } +} diff --git a/remove-linked-list-elements/index.md b/remove-linked-list-elements/index.md new file mode 100644 index 0000000..421610a --- /dev/null +++ b/remove-linked-list-elements/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Remove Linked List Elements +date: 2015-04-23 11:38:34+08:00 +leetcode_id: 203 +--- +{% include_relative README.md %} From e695da465790ad77f110396f3d7d0dda1e255b55 Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 27 Apr 2015 16:40:41 +0800 Subject: [PATCH 11/79] add count primes --- count-primes/README.md | 0 count-primes/Solution.java | 21 +++++++++++++++++++++ count-primes/index.md | 7 +++++++ 3 files changed, 28 insertions(+) create mode 100644 count-primes/README.md create mode 100644 count-primes/Solution.java create mode 100644 count-primes/index.md diff --git a/count-primes/README.md b/count-primes/README.md new file mode 100644 index 0000000..e69de29 diff --git a/count-primes/Solution.java b/count-primes/Solution.java new file mode 100644 index 0000000..13c7394 --- /dev/null +++ b/count-primes/Solution.java @@ -0,0 +1,21 @@ +public class Solution { + public int countPrimes(int n) { + + if(n < 2) return 0; + + BitSet b = new BitSet(); + + b.set(0); + b.set(1); + + for(int p = 2; p * 2 < n ; p = b.nextClearBit(p + 1)){ + for(int i = 2; p * i < n ;i++){ + b.set(p * i); + } + } + + b.flip(0, n); + + return b.cardinality(); + } +} diff --git a/count-primes/index.md b/count-primes/index.md new file mode 100644 index 0000000..8feafa0 --- /dev/null +++ b/count-primes/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Count Primes +date: 2015-04-27 16:39:19+08:00 +leetcode_id: 204 +--- +{% include_relative README.md %} From e7cb7930d806cc12f386721d94f4f3f729667eaa Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 29 Apr 2015 12:09:06 +0800 Subject: [PATCH 12/79] add isomorphfic strings --- isomorphic-strings/README.md | 0 isomorphic-strings/Solution.java | 33 ++++++++++++++++++++++++++++++++ isomorphic-strings/index.md | 7 +++++++ 3 files changed, 40 insertions(+) create mode 100644 isomorphic-strings/README.md create mode 100644 isomorphic-strings/Solution.java create mode 100644 isomorphic-strings/index.md diff --git a/isomorphic-strings/README.md b/isomorphic-strings/README.md new file mode 100644 index 0000000..e69de29 diff --git a/isomorphic-strings/Solution.java b/isomorphic-strings/Solution.java new file mode 100644 index 0000000..ad85b88 --- /dev/null +++ b/isomorphic-strings/Solution.java @@ -0,0 +1,33 @@ +public class Solution { + + boolean isIsomorphic(char[] S, char[] T) { + char[] MAP = new char[256]; + + for(int i = 0; i < S.length; i++) { + + if(MAP[(int)S[i]] == 0) { + // not mapped + MAP[(int)S[i]] = T[i]; + } else { + + if ( MAP[(int)S[i]] != T[i]) { + return false; + } + } + + } + + return true; + } + + public boolean isIsomorphic(String s, String t) { + + char[] S = s.toCharArray(); + char[] T = t.toCharArray(); + + if(S.length != T.length) return false; + + return isIsomorphic(S, T) && isIsomorphic(T, S); + + } +} diff --git a/isomorphic-strings/index.md b/isomorphic-strings/index.md new file mode 100644 index 0000000..a04ce3e --- /dev/null +++ b/isomorphic-strings/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Isomorphic Strings +date: 2015-04-29 12:07:38+08:00 +leetcode_id: 205 +--- +{% include_relative README.md %} From 08e85ae717b1814561fa4c6aab39b6b596858abb Mon Sep 17 00:00:00 2001 From: tgic Date: Tue, 5 May 2015 11:48:40 +0800 Subject: [PATCH 13/79] add reverse linked list --- reverse-linked-list/README.md | 0 reverse-linked-list/Solution.java | 24 ++++++++++++++++++++++++ reverse-linked-list/index.md | 7 +++++++ 3 files changed, 31 insertions(+) create mode 100644 reverse-linked-list/README.md create mode 100644 reverse-linked-list/Solution.java create mode 100644 reverse-linked-list/index.md diff --git a/reverse-linked-list/README.md b/reverse-linked-list/README.md new file mode 100644 index 0000000..e69de29 diff --git a/reverse-linked-list/Solution.java b/reverse-linked-list/Solution.java new file mode 100644 index 0000000..91aba69 --- /dev/null +++ b/reverse-linked-list/Solution.java @@ -0,0 +1,24 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +public class Solution { + public ListNode reverseList(ListNode head) { + + if(head == null) return null; + if(head.next == null) return head; + + ListNode tail = head.next; + ListNode reversed = reverseList(head.next); + + tail.next = head; + + head.next = null; + + return reversed; + } +} diff --git a/reverse-linked-list/index.md b/reverse-linked-list/index.md new file mode 100644 index 0000000..eead8fb --- /dev/null +++ b/reverse-linked-list/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Reverse Linked List +date: 2015-05-05 11:37:08+08:00 +leetcode_id: 206 +--- +{% include_relative README.md %} From 364ca5b13cdab4dc22b8f3eca472e44f57716aed Mon Sep 17 00:00:00 2001 From: tgic Date: Tue, 5 May 2015 11:59:41 +0800 Subject: [PATCH 14/79] link to reverse linked list --- reorder-list/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/reorder-list/README.md b/reorder-list/README.md index deade0e..8230038 100644 --- a/reorder-list/README.md +++ b/reorder-list/README.md @@ -8,7 +8,7 @@ reorder can be achieved via ## Some O(n) method to deal with a linked list -### Reverse a linked list +### [Reverse a linked list](../reverse-linked-list) 1. walk through the linked list 1. set `node.next` to `prev` From 3f169e0c0d0ec2541d92220cafb72aae1b3fd8ea Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 7 May 2015 00:51:31 +0800 Subject: [PATCH 15/79] add course sched --- course-schedule/README.md | 0 course-schedule/Solution.java | 61 +++++++++++++++++++++++++++++++++++ course-schedule/index.md | 7 ++++ 3 files changed, 68 insertions(+) create mode 100644 course-schedule/README.md create mode 100644 course-schedule/Solution.java create mode 100644 course-schedule/index.md diff --git a/course-schedule/README.md b/course-schedule/README.md new file mode 100644 index 0000000..e69de29 diff --git a/course-schedule/Solution.java b/course-schedule/Solution.java new file mode 100644 index 0000000..7200c27 --- /dev/null +++ b/course-schedule/Solution.java @@ -0,0 +1,61 @@ +public class Solution { + + static class Vertex { + + int id; + + Vertex(int id){ + this.id = id; + } + + Set in = new HashSet<>(); + Set out = new HashSet<>(); + + boolean isSink(){ + return out.isEmpty(); + } + } + + Vertex safe(Vertex[] G, int id){ + if(G[id] == null){ + G[id] = new Vertex(id); + } + + return G[id]; + } + + public boolean canFinish(int numCourses, int[][] prerequisites) { + + Vertex[] G = new Vertex[numCourses]; + + for(int[] p : prerequisites){ + safe(G, p[0]).out.add(p[1]); + safe(G, p[1]).in.add(p[0]); + } + + Set S = Arrays.stream(G) + .filter(v -> v != null) + .collect(Collectors.toSet()); + + + loop: + while(!S.isEmpty()){ + + for(Vertex v : S){ + if(v.isSink()){ + S.remove(v); + + for(int i : v.in){ + G[i].out.remove(v.id); + } + + continue loop; + } + } + + return false; + } + + return true; + } +} diff --git a/course-schedule/index.md b/course-schedule/index.md new file mode 100644 index 0000000..6c4da2d --- /dev/null +++ b/course-schedule/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Course Schedule +date: 2015-05-07 00:48:21+08:00 +leetcode_id: 207 +--- +{% include_relative README.md %} From 042bf0b9a28c86e5681827b2deee103b1fae70a8 Mon Sep 17 00:00:00 2001 From: tgic Date: Sat, 9 May 2015 00:01:09 +0800 Subject: [PATCH 16/79] add trie impl --- implement-trie-prefix-tree/README.md | 0 implement-trie-prefix-tree/Solution.java | 91 ++++++++++++++++++++++++ implement-trie-prefix-tree/Trie.java | 1 + implement-trie-prefix-tree/index.md | 7 ++ 4 files changed, 99 insertions(+) create mode 100644 implement-trie-prefix-tree/README.md create mode 100644 implement-trie-prefix-tree/Solution.java create mode 120000 implement-trie-prefix-tree/Trie.java create mode 100644 implement-trie-prefix-tree/index.md diff --git a/implement-trie-prefix-tree/README.md b/implement-trie-prefix-tree/README.md new file mode 100644 index 0000000..e69de29 diff --git a/implement-trie-prefix-tree/Solution.java b/implement-trie-prefix-tree/Solution.java new file mode 100644 index 0000000..ed93530 --- /dev/null +++ b/implement-trie-prefix-tree/Solution.java @@ -0,0 +1,91 @@ +class TrieNode { + // Initialize your data structure here. + + TrieNode[] children = new TrieNode[26]; + + int count = 0; + + public TrieNode() { + + } + + TrieNode safe(int i){ + if(children[i] == null){ + children[i] = new TrieNode(); + } + + return children[i]; + } + + int index(char c){ + return (int)(c - 'a'); + } + + void insert(char[] word, int st, int len){ + if(len == 0){ + this.count++; + return; + } + + TrieNode t = safe(index(word[st])); + + t.insert(word, st + 1, len - 1); + } + + boolean search(char[] word, int st, int len){ + if(len == 0){ + return this.count > 0; + } + + TrieNode t = children[index(word[st])]; + + if(t == null){ + return false; + } + + return t.search(word, st + 1, len - 1); + } + + boolean startsWith(char[] prefix, int st, int len) { + if(len == 0){ + return true; + } + + TrieNode t = children[index(prefix[st])]; + + if(t == null){ + return false; + } + + return t.startsWith(prefix, st + 1, len - 1); + } +} + +public class Trie { + private TrieNode root; + + public Trie() { + root = new TrieNode(); + } + + // Inserts a word into the trie. + public void insert(String word) { + root.insert(word.toCharArray(), 0, word.length()); + } + + // Returns if the word is in the trie. + public boolean search(String word) { + return root.search(word.toCharArray(), 0, word.length()); + } + + // Returns if there is any word in the trie + // that starts with the given prefix. + public boolean startsWith(String prefix) { + return root.startsWith(prefix.toCharArray(), 0, prefix.length()); + } +} + +// Your Trie object will be instantiated and called as such: +// Trie trie = new Trie(); +// trie.insert("somestring"); +// trie.search("key"); diff --git a/implement-trie-prefix-tree/Trie.java b/implement-trie-prefix-tree/Trie.java new file mode 120000 index 0000000..e570129 --- /dev/null +++ b/implement-trie-prefix-tree/Trie.java @@ -0,0 +1 @@ +Solution.java \ No newline at end of file diff --git a/implement-trie-prefix-tree/index.md b/implement-trie-prefix-tree/index.md new file mode 100644 index 0000000..6638f3a --- /dev/null +++ b/implement-trie-prefix-tree/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Implement Trie (Prefix Tree) +date: 2015-05-08 23:58:40+08:00 +leetcode_id: 208 +--- +{% include_relative README.md %} From 681bda30eab603e0305ff5453c62f41647b30615 Mon Sep 17 00:00:00 2001 From: tgic Date: Sat, 9 May 2015 02:43:34 +0800 Subject: [PATCH 17/79] refine the code --- reverse-nodes-in-k-group/Solution.java | 70 +++++++++++++------------- 1 file changed, 34 insertions(+), 36 deletions(-) diff --git a/reverse-nodes-in-k-group/Solution.java b/reverse-nodes-in-k-group/Solution.java index 739b608..99bdc69 100644 --- a/reverse-nodes-in-k-group/Solution.java +++ b/reverse-nodes-in-k-group/Solution.java @@ -3,55 +3,53 @@ * public class ListNode { * int val; * ListNode next; - * ListNode(int x) { - * val = x; - * next = null; - * } + * ListNode(int x) { val = x; } * } */ public class Solution { + + ListNode reverse(ListNode head) { + + ListNode prev = null; + + while(head != null){ + ListNode t = head.next; + + head.next = prev; + prev = head; + + head = t; + } + + return prev; + } + public ListNode reverseKGroup(ListNode head, int k) { - // IMPORTANT: Please reset any member data you declared, as - // the same Solution instance will be reused for each test case. if(k <= 1) return head; - if(head == null) return null; if(head.next == null) return head; ListNode tail = head; - ListNode prev = null; - for(int i = 0; i < k ; i++){ - if(head == null){ - - // rollback - head = prev; - prev = null; - - while(head != null){ - ListNode t = head.next; - - head.next = prev; - prev = head; - - head = t; - } - - return prev; - } - - ListNode t = head.next; - - head.next = prev; - prev = head; - - head = t; + for(int i = 1; i < k && tail != null; i++){ + tail = tail.next; } - tail.next = reverseKGroup(head, k); + if (tail == null) { + // less than k nodes + return head; + } - return prev; + ListNode next = tail.next; + tail.next = null; // cut + + tail = head; // head will be new tail + head = reverse(head); + + tail.next = reverseKGroup(next, k); + + return head; } -} \ No newline at end of file +} From 14dba2d874a2671fc0e99d61d258a1c821b06ee9 Mon Sep 17 00:00:00 2001 From: tgic Date: Sat, 9 May 2015 22:51:01 +0800 Subject: [PATCH 18/79] renew code --- powx-n/Solution.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/powx-n/Solution.java b/powx-n/Solution.java index f8e8026..d70d1b2 100644 --- a/powx-n/Solution.java +++ b/powx-n/Solution.java @@ -1,17 +1,14 @@ public class Solution { - public double pow(double x, int n) { - // Note: The Solution object is instantiated only once and is reused by each test case. - if(n == 0) return 1; + public double myPow(double x, int n) { - double s = pow(x, n /2); + if(n == 0) return 1; - if(n % 2 == 0) - return s * s; - else if(n > 0) - return s * s * x; - else - return s * s / x; + double s = myPow(x, n / 2); + if(n % 2 == 0) return s * s; + if(n > 0) return s * s * x; + // else n < 0 + return s * s / x; } } From 3ff8cfc5929341e8f4dd063ef337b5ab286f3409 Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 10 May 2015 00:33:24 +0800 Subject: [PATCH 19/79] refine the code --- rotate-list/Solution.java | 39 ++++++++++++++++++--------------------- 1 file changed, 18 insertions(+), 21 deletions(-) diff --git a/rotate-list/Solution.java b/rotate-list/Solution.java index efb2005..e978209 100644 --- a/rotate-list/Solution.java +++ b/rotate-list/Solution.java @@ -3,39 +3,36 @@ * public class ListNode { * int val; * ListNode next; - * ListNode(int x) { - * val = x; - * next = null; - * } + * ListNode(int x) { val = x; } * } */ public class Solution { - public ListNode rotateRight(ListNode head, int n) { - // Note: The Solution object is instantiated only once and is reused by each test case. + public ListNode rotateRight(ListNode head, int k) { if(head == null) return null; - ListNode _head = head; - - ListNode node = head; int len = 1; - while(node.next != null){ + + ListNode tail = head; + + while(tail.next != null){ len++; - node = node.next; + tail = tail.next; } - n %= len; - - ListNode tail = node; + tail.next = head; // cycle - node = head; - for(int i = 0; i < len - n - 1; i++) node = node.next; + k %= len; - tail.next = head; - ListNode rt = node.next; - node.next = null; + for(int i = 1; i < len - k; i++){ + head = head.next; + } - return rt; + try { + return head.next; + } finally { + head.next = null; // cut + } } -} \ No newline at end of file +} From 1209644117980a66fea154a0b26a6f38665d4329 Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 10 May 2015 01:38:41 +0800 Subject: [PATCH 20/79] make jekyll happy --- scramble-string/README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scramble-string/README.md b/scramble-string/README.md index 8a42161..e7fe5bc 100644 --- a/scramble-string/README.md +++ b/scramble-string/README.md @@ -54,6 +54,8 @@ that means we can make a filter to remove all `set` must not take `0` as its fir and `1` as it second and so on... so we build a methd + + ``` check_has_char(pos, letter, two_part_set) set = pos -> left_set or right_set depends on the two_part_set pivot From c14e0e2ba19ee9e81bcdcdb39a4c82e0185dc9e5 Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 10 May 2015 01:51:44 +0800 Subject: [PATCH 21/79] java8 string.join --- restore-ip-addresses/Solution.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/restore-ip-addresses/Solution.java b/restore-ip-addresses/Solution.java index 97f46f4..9c766c3 100644 --- a/restore-ip-addresses/Solution.java +++ b/restore-ip-addresses/Solution.java @@ -9,7 +9,7 @@ void findnum(String s, int p, int pstack){ if(pstack == 4){ if(p >= s.length()){ - String ip = "" + stack[0] + "." + stack[1] + "." + stack[2] + "." + stack[3]; + String ip = String.join(".", stack); collect.add(ip); } From a5807ba773a75b847945b7bc77cd2114e729dbef Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 10 May 2015 01:53:43 +0800 Subject: [PATCH 22/79] return list --- binary-tree-inorder-traversal/Solution.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/binary-tree-inorder-traversal/Solution.java b/binary-tree-inorder-traversal/Solution.java index 9a01a4a..43a875a 100644 --- a/binary-tree-inorder-traversal/Solution.java +++ b/binary-tree-inorder-traversal/Solution.java @@ -22,10 +22,10 @@ static class StackState { } } - public ArrayList inorderTraversal(TreeNode root) { - ArrayList rt = new ArrayList(); + public List inorderTraversal(TreeNode root) { + ArrayList rt = new ArrayList<>(); - Deque stack = new LinkedList(); + Deque stack = new LinkedList<>(); if(root != null) stack.push(new StackState(root)); From d957a2a380ee2af8d653f0bd97ef8503c8b288cb Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 11 May 2015 00:01:22 +0800 Subject: [PATCH 23/79] use java8 string.join --- word-break-ii/Solution.java | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/word-break-ii/Solution.java b/word-break-ii/Solution.java index 11df5fe..8873f6e 100644 --- a/word-break-ii/Solution.java +++ b/word-break-ii/Solution.java @@ -1,18 +1,5 @@ public class Solution { - String join(List list){ - if(list.isEmpty()) return ""; - - StringBuilder s = new StringBuilder(list.get(0)); - - for(int i = 1; i < list.size(); i++){ - s.append(' '); - s.append(list.get(i)); - } - - return s.toString(); - } - ArrayList[] P; char[] S; ArrayList rt; @@ -21,7 +8,7 @@ void joinAll(int offset, LinkedList parents){ if(P[offset].isEmpty()){ - rt.add(join(parents)); + rt.add(String.join(" ", parents)); return; } From 52c1e7c49e6b878c3076dbaeb778807e9fda1756 Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 11 May 2015 00:06:56 +0800 Subject: [PATCH 24/79] use list --- binary-tree-preorder-traversal/Solution.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/binary-tree-preorder-traversal/Solution.java b/binary-tree-preorder-traversal/Solution.java index 6172150..80f812d 100644 --- a/binary-tree-preorder-traversal/Solution.java +++ b/binary-tree-preorder-traversal/Solution.java @@ -22,11 +22,11 @@ static class StackState { } } - public ArrayList preorderTraversal(TreeNode root) { + public List preorderTraversal(TreeNode root) { - ArrayList rt = new ArrayList(); + ArrayList rt = new ArrayList<>(); - Deque stack = new LinkedList(); + Deque stack = new LinkedList<>(); if(root != null) stack.push(new StackState(root)); From 4df0ba5d442ccc50d71f58a51d4b8e40cc5e9332 Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 11 May 2015 00:07:43 +0800 Subject: [PATCH 25/79] use list --- binary-tree-postorder-traversal/Solution.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/binary-tree-postorder-traversal/Solution.java b/binary-tree-postorder-traversal/Solution.java index 989a06e..d91e9f6 100644 --- a/binary-tree-postorder-traversal/Solution.java +++ b/binary-tree-postorder-traversal/Solution.java @@ -22,10 +22,10 @@ static class StackState { } } - public ArrayList postorderTraversal(TreeNode root) { - ArrayList rt = new ArrayList(); + public List postorderTraversal(TreeNode root) { + ArrayList rt = new ArrayList<>(); - Deque stack = new LinkedList(); + Deque stack = new LinkedList<>(); if(root != null) stack.push(new StackState(root)); From f88b1f07ded758cfb7459120a43575e20dad1169 Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 11 May 2015 00:19:55 +0800 Subject: [PATCH 26/79] upsideDownBinaryTree (was UpsideDownBinaryTree) --- binary-tree-upside-down/Solution.java | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/binary-tree-upside-down/Solution.java b/binary-tree-upside-down/Solution.java index 8632e7b..5a88db9 100644 --- a/binary-tree-upside-down/Solution.java +++ b/binary-tree-upside-down/Solution.java @@ -8,9 +8,9 @@ * } */ public class Solution { - - LinkedList queue = new LinkedList(); - + + LinkedList queue = new LinkedList<>(); + void inOrder(TreeNode root){ if(root == null) return; @@ -24,25 +24,26 @@ void inOrder(TreeNode root){ } + // bad side effect root.left = null; root.right = null; } - - public TreeNode UpsideDownBinaryTree(TreeNode root) { - + + public TreeNode upsideDownBinaryTree(TreeNode root) { + inOrder(root); - + TreeNode newRoot = queue.poll(); - + root = newRoot; - + while(!queue.isEmpty()){ root.right = queue.poll(); root.left = queue.poll(); root = root.right; } - + return newRoot; } } From cdf978d490f9b850fee719672bde7d61453fb92e Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 11 May 2015 01:12:33 +0800 Subject: [PATCH 27/79] optimize code --- bitwise-and-of-numbers-range/Solution.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/bitwise-and-of-numbers-range/Solution.java b/bitwise-and-of-numbers-range/Solution.java index f0d8d81..db32634 100644 --- a/bitwise-and-of-numbers-range/Solution.java +++ b/bitwise-and-of-numbers-range/Solution.java @@ -1,12 +1,16 @@ public class Solution { - public int rangeBitwiseAnd(int m, int n) { - final int SIZE = Integer.SIZE; + + static final int SIZE = Integer.SIZE; - long[] POW = new long[SIZE + 1]; + static final long[] POW = new long[SIZE + 1]; + static { for(int i = 0; i < SIZE; i++){ POW[i] = (long)Math.pow(2, i); - } + } + } + + public int rangeBitwiseAnd(int m, int n) { for(int i = SIZE; i > 0; i--){ if(POW[i - 1] <= m && m < POW[i]){ From e2ee4b926430fec64925aca292e8af833af8c0b8 Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 11 May 2015 01:15:34 +0800 Subject: [PATCH 28/79] update time --- binary-tree-inorder-traversal/index.md | 2 +- binary-tree-postorder-traversal/index.md | 2 +- binary-tree-preorder-traversal/index.md | 2 +- binary-tree-right-side-view/index.md | 2 +- binary-tree-upside-down/index.md | 2 +- bitwise-and-of-numbers-range/index.md | 2 +- count-primes/index.md | 2 +- course-schedule/index.md | 2 +- happy-number/index.md | 2 +- implement-trie-prefix-tree/index.md | 2 +- isomorphic-strings/index.md | 2 +- number-of-islands/index.md | 2 +- powx-n/index.md | 2 +- remove-linked-list-elements/index.md | 2 +- reorder-list/index.md | 2 +- restore-ip-addresses/index.md | 2 +- reverse-linked-list/index.md | 2 +- reverse-nodes-in-k-group/index.md | 2 +- rotate-list/index.md | 2 +- scramble-string/index.md | 2 +- word-break-ii/index.md | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/binary-tree-inorder-traversal/index.md b/binary-tree-inorder-traversal/index.md index 35dfbb1..7e71490 100644 --- a/binary-tree-inorder-traversal/index.md +++ b/binary-tree-inorder-traversal/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Binary Tree Inorder Traversal -date: 2014-12-29 00:26:24 +0800 +date: 2015-05-10 01:53:43 +0800 leetcode_id: 94 --- {% include_relative README.md %} diff --git a/binary-tree-postorder-traversal/index.md b/binary-tree-postorder-traversal/index.md index 3492494..5029919 100644 --- a/binary-tree-postorder-traversal/index.md +++ b/binary-tree-postorder-traversal/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Binary Tree Postorder Traversal -date: 2014-12-29 00:26:24 +0800 +date: 2015-05-11 00:07:43 +0800 leetcode_id: 145 --- {% include_relative README.md %} diff --git a/binary-tree-preorder-traversal/index.md b/binary-tree-preorder-traversal/index.md index c423e45..1e894dc 100644 --- a/binary-tree-preorder-traversal/index.md +++ b/binary-tree-preorder-traversal/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Binary Tree Preorder Traversal -date: 2014-12-29 00:26:24 +0800 +date: 2015-05-11 00:06:56 +0800 leetcode_id: 144 --- {% include_relative README.md %} diff --git a/binary-tree-right-side-view/index.md b/binary-tree-right-side-view/index.md index e558487..e4990cd 100644 --- a/binary-tree-right-side-view/index.md +++ b/binary-tree-right-side-view/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Binary Tree Right Side View -date: 2015-04-03 21:32:41 +0800 +date: 2015-04-03 21:37:44 +0800 leetcode_id: 199 --- {% include_relative README.md %} diff --git a/binary-tree-upside-down/index.md b/binary-tree-upside-down/index.md index 1cea6ff..5ca357f 100644 --- a/binary-tree-upside-down/index.md +++ b/binary-tree-upside-down/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Binary Tree Upside Down -date: 2014-11-18 01:45:13 +0800 +date: 2015-05-11 00:19:55 +0800 leetcode_id: 156 --- {% include_relative README.md %} diff --git a/bitwise-and-of-numbers-range/index.md b/bitwise-and-of-numbers-range/index.md index 0041852..03138a9 100644 --- a/bitwise-and-of-numbers-range/index.md +++ b/bitwise-and-of-numbers-range/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Bitwise AND of Numbers Range -date: 2015-04-21 01:17:47+08:00 +date: 2015-05-11 01:12:33 +0800 leetcode_id: 201 --- {% include_relative README.md %} diff --git a/count-primes/index.md b/count-primes/index.md index 8feafa0..4e43bb4 100644 --- a/count-primes/index.md +++ b/count-primes/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Count Primes -date: 2015-04-27 16:39:19+08:00 +date: 2015-04-27 16:40:41 +0800 leetcode_id: 204 --- {% include_relative README.md %} diff --git a/course-schedule/index.md b/course-schedule/index.md index 6c4da2d..c5a98c1 100644 --- a/course-schedule/index.md +++ b/course-schedule/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Course Schedule -date: 2015-05-07 00:48:21+08:00 +date: 2015-05-07 00:51:31 +0800 leetcode_id: 207 --- {% include_relative README.md %} diff --git a/happy-number/index.md b/happy-number/index.md index 3053af5..a5d1230 100644 --- a/happy-number/index.md +++ b/happy-number/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Happy Number -date: 2015-04-22 12:33:21+08:00 +date: 2015-04-22 12:34:48 +0800 leetcode_id: 202 --- {% include_relative README.md %} diff --git a/implement-trie-prefix-tree/index.md b/implement-trie-prefix-tree/index.md index 6638f3a..d0a19ec 100644 --- a/implement-trie-prefix-tree/index.md +++ b/implement-trie-prefix-tree/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Implement Trie (Prefix Tree) -date: 2015-05-08 23:58:40+08:00 +date: 2015-05-09 00:01:09 +0800 leetcode_id: 208 --- {% include_relative README.md %} diff --git a/isomorphic-strings/index.md b/isomorphic-strings/index.md index a04ce3e..d5aa475 100644 --- a/isomorphic-strings/index.md +++ b/isomorphic-strings/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Isomorphic Strings -date: 2015-04-29 12:07:38+08:00 +date: 2015-04-29 12:09:06 +0800 leetcode_id: 205 --- {% include_relative README.md %} diff --git a/number-of-islands/index.md b/number-of-islands/index.md index 5d3dc64..7c4093a 100644 --- a/number-of-islands/index.md +++ b/number-of-islands/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Number of Islands -date: 2015-04-08 13:28:15+08:00 +date: 2015-04-08 15:07:58 +0800 leetcode_id: 200 --- {% include_relative README.md %} diff --git a/powx-n/index.md b/powx-n/index.md index d0f44ed..efe0fd2 100644 --- a/powx-n/index.md +++ b/powx-n/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Pow(x, n) -date: 2014-12-29 00:26:24 +0800 +date: 2015-05-09 22:51:01 +0800 leetcode_id: 50 --- {% include_relative README.md %} diff --git a/remove-linked-list-elements/index.md b/remove-linked-list-elements/index.md index 421610a..b594a2f 100644 --- a/remove-linked-list-elements/index.md +++ b/remove-linked-list-elements/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Remove Linked List Elements -date: 2015-04-23 11:38:34+08:00 +date: 2015-04-23 11:39:56 +0800 leetcode_id: 203 --- {% include_relative README.md %} diff --git a/reorder-list/index.md b/reorder-list/index.md index e339b43..9128272 100644 --- a/reorder-list/index.md +++ b/reorder-list/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Reorder List -date: 2014-12-29 00:26:24 +0800 +date: 2015-05-05 11:59:41 +0800 leetcode_id: 143 --- {% include_relative README.md %} diff --git a/restore-ip-addresses/index.md b/restore-ip-addresses/index.md index 99e6e2b..b5fb755 100644 --- a/restore-ip-addresses/index.md +++ b/restore-ip-addresses/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Restore IP Addresses -date: 2014-12-29 00:26:24 +0800 +date: 2015-05-10 01:51:44 +0800 leetcode_id: 93 --- {% include_relative README.md %} diff --git a/reverse-linked-list/index.md b/reverse-linked-list/index.md index eead8fb..865563e 100644 --- a/reverse-linked-list/index.md +++ b/reverse-linked-list/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Reverse Linked List -date: 2015-05-05 11:37:08+08:00 +date: 2015-05-05 11:48:40 +0800 leetcode_id: 206 --- {% include_relative README.md %} diff --git a/reverse-nodes-in-k-group/index.md b/reverse-nodes-in-k-group/index.md index 5c1be88..d7e686d 100644 --- a/reverse-nodes-in-k-group/index.md +++ b/reverse-nodes-in-k-group/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Reverse Nodes in k-Group -date: 2014-12-29 00:26:24 +0800 +date: 2015-05-09 02:43:34 +0800 leetcode_id: 25 --- {% include_relative README.md %} diff --git a/rotate-list/index.md b/rotate-list/index.md index 7998645..c9539f8 100644 --- a/rotate-list/index.md +++ b/rotate-list/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Rotate List -date: 2014-12-29 00:26:24 +0800 +date: 2015-05-10 00:33:24 +0800 leetcode_id: 61 --- {% include_relative README.md %} diff --git a/scramble-string/index.md b/scramble-string/index.md index 7744138..d377ad4 100644 --- a/scramble-string/index.md +++ b/scramble-string/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Scramble String -date: 2014-12-29 00:26:24 +0800 +date: 2015-05-10 01:38:41 +0800 leetcode_id: 87 --- {% include_relative README.md %} diff --git a/word-break-ii/index.md b/word-break-ii/index.md index 31eeab9..6bc758c 100644 --- a/word-break-ii/index.md +++ b/word-break-ii/index.md @@ -1,7 +1,7 @@ --- layout: solution title: Word Break II -date: 2014-12-29 00:26:24 +0800 +date: 2015-05-11 00:01:22 +0800 leetcode_id: 140 --- {% include_relative README.md %} From 262c8af3e52f0b400e67bb9d1cf00b622064950e Mon Sep 17 00:00:00 2001 From: tgic Date: Tue, 12 May 2015 14:46:53 +0800 Subject: [PATCH 29/79] add min size subarray --- minimum-size-subarray-sum/README.md | 0 minimum-size-subarray-sum/Solution.java | 30 +++++++++++++++++++++++++ minimum-size-subarray-sum/index.md | 7 ++++++ 3 files changed, 37 insertions(+) create mode 100644 minimum-size-subarray-sum/README.md create mode 100644 minimum-size-subarray-sum/Solution.java create mode 100644 minimum-size-subarray-sum/index.md diff --git a/minimum-size-subarray-sum/README.md b/minimum-size-subarray-sum/README.md new file mode 100644 index 0000000..e69de29 diff --git a/minimum-size-subarray-sum/Solution.java b/minimum-size-subarray-sum/Solution.java new file mode 100644 index 0000000..a291a9e --- /dev/null +++ b/minimum-size-subarray-sum/Solution.java @@ -0,0 +1,30 @@ +public class Solution { + public int minSubArrayLen(int s, int[] nums) { + + int sum = 0; + + int st = 0; + + int c = nums.length + 1; + + for (int i = 0; i < nums.length; i++) { + + sum += nums[i]; + + if(sum >= s){ + while(sum - nums[st] >= s) { + sum -= nums[st++]; + } + + c = Math.min(c, i - st + 1); + } + + } + + if(c > nums.length) { + return 0; + } + + return c; + } +} diff --git a/minimum-size-subarray-sum/index.md b/minimum-size-subarray-sum/index.md new file mode 100644 index 0000000..feff633 --- /dev/null +++ b/minimum-size-subarray-sum/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Minimum Size Subarray Sum +date: 2015-05-12 14:45:40+08:00 +leetcode_id: 209 +--- +{% include_relative README.md %} From b53d582f610db62164abae0bb73e16e48518bbdf Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 14 May 2015 00:33:04 +0800 Subject: [PATCH 30/79] course shed ii --- course-schedule-ii/README.md | 0 course-schedule-ii/Solution.java | 69 ++++++++++++++++++++++++++++++++ course-schedule-ii/index.md | 7 ++++ 3 files changed, 76 insertions(+) create mode 100644 course-schedule-ii/README.md create mode 100644 course-schedule-ii/Solution.java create mode 100644 course-schedule-ii/index.md diff --git a/course-schedule-ii/README.md b/course-schedule-ii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/course-schedule-ii/Solution.java b/course-schedule-ii/Solution.java new file mode 100644 index 0000000..895f837 --- /dev/null +++ b/course-schedule-ii/Solution.java @@ -0,0 +1,69 @@ +public class Solution { + + static class Vertex { + + int id; + + Vertex(int id){ + this.id = id; + } + + Set in = new HashSet<>(); + Set out = new HashSet<>(); + + boolean isSink(){ + return out.isEmpty(); + } + } + + Vertex safe(Vertex[] G, int id){ + if(G[id] == null){ + G[id] = new Vertex(id); + } + + return G[id]; + } + + public int[] findOrder(int numCourses, int[][] prerequisites) { + Vertex[] G = new Vertex[numCourses]; + + for(int[] p : prerequisites){ + safe(G, p[0]).out.add(p[1]); + safe(G, p[1]).in.add(p[0]); + } + + Set S = Arrays.stream(G) + .filter(v -> v != null) + .collect(Collectors.toSet()); + + + LinkedHashSet order = new LinkedHashSet<>(numCourses); + + loop: + while(!S.isEmpty()){ + + for(Vertex v : S){ + if(v.isSink()){ + order.add(v.id); + + S.remove(v); + + for(int i : v.in){ + G[i].out.remove(v.id); + } + + continue loop; + } + } + + return new int[]{}; + } + + // fill courses not in G + order.addAll(IntStream.range(0, numCourses).boxed().collect(Collectors.toSet())); + + return order.stream() + .mapToInt(i -> i) + .toArray(); + } +} diff --git a/course-schedule-ii/index.md b/course-schedule-ii/index.md new file mode 100644 index 0000000..cb84cb8 --- /dev/null +++ b/course-schedule-ii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Course Schedule II +date: 2015-05-14 00:31:26+08:00 +leetcode_id: 210 +--- +{% include_relative README.md %} From 5b323f1c187d41e9b1ffe05fcf83171ea33fcf8f Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 18 May 2015 22:27:21 +0800 Subject: [PATCH 31/79] add trie tree ii --- .../README.md | 0 .../Solution.java | 82 +++++++++++++++++++ .../WordDictionary.java | 1 + .../index.md | 7 ++ 4 files changed, 90 insertions(+) create mode 100644 add-and-search-word-data-structure-design/README.md create mode 100644 add-and-search-word-data-structure-design/Solution.java create mode 120000 add-and-search-word-data-structure-design/WordDictionary.java create mode 100644 add-and-search-word-data-structure-design/index.md diff --git a/add-and-search-word-data-structure-design/README.md b/add-and-search-word-data-structure-design/README.md new file mode 100644 index 0000000..e69de29 diff --git a/add-and-search-word-data-structure-design/Solution.java b/add-and-search-word-data-structure-design/Solution.java new file mode 100644 index 0000000..51dda42 --- /dev/null +++ b/add-and-search-word-data-structure-design/Solution.java @@ -0,0 +1,82 @@ +public class WordDictionary { + + static class TrieNode { + // Initialize your data structure here. + + TrieNode[] children = new TrieNode[26]; + + int count = 0; + + public TrieNode() { + + } + + TrieNode safe(int i){ + if(children[i] == null){ + children[i] = new TrieNode(); + } + + return children[i]; + } + + int index(char c){ + return (int)(c - 'a'); + } + + void insert(char[] word, int st, int len){ + if(len == 0){ + this.count++; + return; + } + + TrieNode t = safe(index(word[st])); + + t.insert(word, st + 1, len - 1); + } + + boolean search(char[] word, int st, int len){ + if(len == 0){ + return this.count > 0; + } + + if(word[st] == '.'){ + + for(TrieNode t : children){ + if(t != null){ + if(t.search(word, st + 1, len - 1)){ + return true; + } + } + } + + return false; + } + + TrieNode t = children[index(word[st])]; + + if(t == null){ + return false; + } + + return t.search(word, st + 1, len - 1); + } + } + + TrieNode root = new TrieNode(); + + // Adds a word into the data structure. + public void addWord(String word) { + root.insert(word.toCharArray(), 0, word.length()); + } + + // Returns if the word is in the data structure. A word could + // contain the dot character '.' to represent any one letter. + public boolean search(String word) { + return root.search(word.toCharArray(), 0, word.length()); + } +} + +// Your WordDictionary object will be instantiated and called as such: +// WordDictionary wordDictionary = new WordDictionary(); +// wordDictionary.addWord("word"); +// wordDictionary.search("pattern"); diff --git a/add-and-search-word-data-structure-design/WordDictionary.java b/add-and-search-word-data-structure-design/WordDictionary.java new file mode 120000 index 0000000..e570129 --- /dev/null +++ b/add-and-search-word-data-structure-design/WordDictionary.java @@ -0,0 +1 @@ +Solution.java \ No newline at end of file diff --git a/add-and-search-word-data-structure-design/index.md b/add-and-search-word-data-structure-design/index.md new file mode 100644 index 0000000..2cd5b99 --- /dev/null +++ b/add-and-search-word-data-structure-design/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Add and Search Word - Data structure design +date: 2015-05-18 22:25:43+08:00 +leetcode_id: 211 +--- +{% include_relative README.md %} From 525d890f517d58361197ec48f2e5aa7a42c8a51d Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 18 May 2015 22:33:14 +0800 Subject: [PATCH 32/79] new leetcode url pattern (was oj.leetcode.com/) --- _layouts/solution.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_layouts/solution.html b/_layouts/solution.html index dc81d53..ab32238 100644 --- a/_layouts/solution.html +++ b/_layouts/solution.html @@ -2,7 +2,7 @@ layout: default --- {% assign leetcode_name = {{page.path | remove: '/index.md'}} %} -{% assign leetcode_url = {{leetcode_name | prepend: 'https://oj.leetcode.com/problems/'}} %} +{% assign leetcode_url = {{leetcode_name | prepend: 'https://leetcode.com/problems/'}} %} {% assign github_url = {{leetcode_name | prepend: 'https://github.com/tg123/leetcode/blob/gh-pages/' }} %} {% assign github_source_url = {{leetcode_name | prepend: 'https://github.com/tg123/leetcode/blob/gh-pages/' | append: '/Solution.java' }} %} From f4e964a063d29e189d3fee28aff53559ed1fec5f Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 20 May 2015 00:35:07 +0800 Subject: [PATCH 33/79] add word search ii --- word-search-ii/README.md | 0 word-search-ii/Solution.java | 141 +++++++++++++++++++++++++++++++++++ word-search-ii/index.md | 7 ++ 3 files changed, 148 insertions(+) create mode 100644 word-search-ii/README.md create mode 100644 word-search-ii/Solution.java create mode 100644 word-search-ii/index.md diff --git a/word-search-ii/README.md b/word-search-ii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/word-search-ii/Solution.java b/word-search-ii/Solution.java new file mode 100644 index 0000000..1107f8b --- /dev/null +++ b/word-search-ii/Solution.java @@ -0,0 +1,141 @@ +public class Solution { + + static class TrieNode { + // Initialize your data structure here. + TrieNode parent; + int depth = 0; + + char character; + + TrieNode[] children = new TrieNode[26]; + + int count = 0; + + public TrieNode(TrieNode parent, char character) { + this.parent = parent; + this.character = character; + + if(parent != null) { + this.depth = parent.depth + 1; + } + } + + TrieNode safe(char c){ + int i = index(c); + + if(children[i] == null){ + children[i] = new TrieNode(this, c); + } + + return children[i]; + } + + int index(char c){ + return (int)(c - 'a'); + } + + void insert(char[] word, int st, int len){ + if(len == 0){ + this.count++; + return; + } + + TrieNode t = safe(word[st]); + + t.insert(word, st + 1, len - 1); + } + + TrieNode child(char c){ + return children[index(c)]; + } + + boolean hasChild(char c){ + return child(c) != null; + } + + String recover(){ + // assert count > 0 + TrieNode t = this; + char[] s = new char[depth]; + + for(int i = depth - 1; i >= 0; i--){ + s[i] = t.character; + t = t.parent; + } + + return new String(s); + } + } + + int flatten(int x, int y, int wide){ + return x * wide + y; + } + + boolean vaild(int x, int y, char[][] board){ + return x >= 0 && + y >= 0 && + x < board.length && + y < board[0].length; + } + + Set found = new HashSet<>(); + + void findWords(int x, int y, char[][] board, boolean[] vi, TrieNode current) { + + vi[flatten(x, y, board[0].length)] = true; + + if(current.count > 0){ + found.add(current.recover()); + } + + for(int[] xy : new int[][] { + {x + 1, y}, + {x, y + 1}, + {x - 1, y}, + {x, y - 1}, + }) { + int _x = xy[0]; + int _y = xy[1]; + + if(!vaild(_x, _y, board)){ + continue; + } + + if(vi[flatten(_x, _y, board[0].length)]) { + continue; + } + + TrieNode t = current.child(board[_x][_y]); + + if(t == null){ + continue; + } + + findWords(_x, _y, board, vi, t); + + vi[flatten(_x, _y, board[0].length)] = false; + } + + } + + public List findWords(char[][] board, String[] words) { + + TrieNode root = new TrieNode(null, '\0'); + + for(String w : words){ + root.insert(w.toCharArray(), 0, w.length()); + } + + final int LEN = board.length * board[0].length; + + for(int x = 0; x < board.length; x++){ + for(int y = 0; y < board[0].length; y++){ + if(root.hasChild(board[x][y])){ + findWords(x, y, board, new boolean[LEN], root.child(board[x][y])); + } + } + } + + return new ArrayList<>(found); + } +} diff --git a/word-search-ii/index.md b/word-search-ii/index.md new file mode 100644 index 0000000..2274fed --- /dev/null +++ b/word-search-ii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Word Search II +date: 2015-05-20 00:32:45+08:00 +leetcode_id: 212 +--- +{% include_relative README.md %} From 80852644adee7b53b085a4b1110176c00d681c83 Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 20 May 2015 11:53:41 +0800 Subject: [PATCH 34/79] add horse rob ii --- house-robber-ii/README.md | 0 house-robber-ii/Solution.java | 27 +++++++++++++++++++++++++++ house-robber-ii/index.md | 7 +++++++ 3 files changed, 34 insertions(+) create mode 100644 house-robber-ii/README.md create mode 100644 house-robber-ii/Solution.java create mode 100644 house-robber-ii/index.md diff --git a/house-robber-ii/README.md b/house-robber-ii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/house-robber-ii/Solution.java b/house-robber-ii/Solution.java new file mode 100644 index 0000000..664af93 --- /dev/null +++ b/house-robber-ii/Solution.java @@ -0,0 +1,27 @@ +public class Solution { + + // rob1 + int rob(int[] num, int st, int len) { + if(len == 0) return 0; + if(len == 1) return num[st + 0]; + + int[] P = new int[len]; + + P[0] = num[st + 0]; + P[1] = Math.max(num[st + 0], num[st + 1]); + + for(int i = 2; i < len; i++){ + P[i] = Math.max(num[st + i] + P[i - 2], P[i - 1]); + } + + return P[len - 1]; + } + + public int rob(int[] nums) { + + if(nums.length == 0) return 0; + if(nums.length == 1) return nums[0]; + + return Math.max(rob(nums, 0, nums.length - 1), rob(nums, 1, nums.length - 1)); + } +} diff --git a/house-robber-ii/index.md b/house-robber-ii/index.md new file mode 100644 index 0000000..af9e2f7 --- /dev/null +++ b/house-robber-ii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: House Robber II +date: 2015-05-20 11:52:10+08:00 +leetcode_id: 213 +--- +{% include_relative README.md %} From 8345ac876208aa80bd36b1ca8c9a15b7d7bf3b84 Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 20 May 2015 11:55:58 +0800 Subject: [PATCH 35/79] fix typo --- house-robber/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/house-robber/README.md b/house-robber/README.md index 2ebe8c4..c694a4d 100644 --- a/house-robber/README.md +++ b/house-robber/README.md @@ -1,7 +1,7 @@ ## Rob or not assume that there are 9 houses along the street -and you have a `rob` func can tell you the how much money you can get from first 8 hourses. +and you have a `rob` func can tell you the how much money you can get from first 8 houses. what about the 9th house From 74e5dc20477861f67e24eb61b235bd2b3d6cf8e2 Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 25 May 2015 23:35:09 +0800 Subject: [PATCH 36/79] add contain dup --- contains-duplicate/README.md | 0 contains-duplicate/Solution.java | 15 +++++++++++++++ contains-duplicate/index.md | 7 +++++++ 3 files changed, 22 insertions(+) create mode 100644 contains-duplicate/README.md create mode 100644 contains-duplicate/Solution.java create mode 100644 contains-duplicate/index.md diff --git a/contains-duplicate/README.md b/contains-duplicate/README.md new file mode 100644 index 0000000..e69de29 diff --git a/contains-duplicate/Solution.java b/contains-duplicate/Solution.java new file mode 100644 index 0000000..8a51256 --- /dev/null +++ b/contains-duplicate/Solution.java @@ -0,0 +1,15 @@ +public class Solution { + public boolean containsDuplicate(int[] nums) { + Set s = new HashSet<>(); + + for(int n : nums){ + if(s.contains(n)){ + return true; + } + + s.add(n); + } + + return false; + } +} diff --git a/contains-duplicate/index.md b/contains-duplicate/index.md new file mode 100644 index 0000000..f38ae53 --- /dev/null +++ b/contains-duplicate/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Contains Duplicate +date: 2015-05-25 19:40:06+08:00 +leetcode_id: 217 +--- +{% include_relative README.md %} From 2302fb83da594244db6c7f707222941b3ef4d0fa Mon Sep 17 00:00:00 2001 From: tgic Date: Tue, 26 May 2015 01:20:55 +0800 Subject: [PATCH 37/79] add shortest pal --- shortest-palindrome/README.md | 0 shortest-palindrome/Solution.java | 50 +++++++++++++++++++++++++++++++ shortest-palindrome/index.md | 7 +++++ 3 files changed, 57 insertions(+) create mode 100644 shortest-palindrome/README.md create mode 100644 shortest-palindrome/Solution.java create mode 100644 shortest-palindrome/index.md diff --git a/shortest-palindrome/README.md b/shortest-palindrome/README.md new file mode 100644 index 0000000..e69de29 diff --git a/shortest-palindrome/Solution.java b/shortest-palindrome/Solution.java new file mode 100644 index 0000000..74f385a --- /dev/null +++ b/shortest-palindrome/Solution.java @@ -0,0 +1,50 @@ +public class Solution { + public String shortestPalindrome(String s) { + char[] S = s.toCharArray(); + + int[] P = new int[S.length]; + + for(int i = S.length - 2; i >= 0; i--){ + if(S[i] == S[i + 1]){ + P[i] = P[i + 1] + 1; + } + } + + int i = 0; + int e = S.length - 1; + + int j = e; + + while(i < j){ + + if(S[i] == S[j]){ + + i++; + j--; + + } else { + + if(P[j] >= i){ + j--; + e--; + + } else if(i > 0) { + + i = 0; + e = j; + + } else { + + j = e - 1; + e--; + } + } + } + + StringBuilder sb = new StringBuilder(new String(S, e + 1, S.length - e - 1)).reverse(); + + sb.append(s); + + return sb.toString(); + } +} diff --git a/shortest-palindrome/index.md b/shortest-palindrome/index.md new file mode 100644 index 0000000..aa04491 --- /dev/null +++ b/shortest-palindrome/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Shortest Palindrome +date: 2015-05-26 01:19:56+08:00 +leetcode_id: 214 +--- +{% include_relative README.md %} From e90d4f26e0f018d6143c0d04c879537339804750 Mon Sep 17 00:00:00 2001 From: tgic Date: Tue, 26 May 2015 01:33:37 +0800 Subject: [PATCH 38/79] ... not clear with this problem --- kth-largest-element-in-an-array/README.md | 0 kth-largest-element-in-an-array/Solution.java | 7 +++++++ kth-largest-element-in-an-array/index.md | 7 +++++++ 3 files changed, 14 insertions(+) create mode 100644 kth-largest-element-in-an-array/README.md create mode 100644 kth-largest-element-in-an-array/Solution.java create mode 100644 kth-largest-element-in-an-array/index.md diff --git a/kth-largest-element-in-an-array/README.md b/kth-largest-element-in-an-array/README.md new file mode 100644 index 0000000..e69de29 diff --git a/kth-largest-element-in-an-array/Solution.java b/kth-largest-element-in-an-array/Solution.java new file mode 100644 index 0000000..5012f30 --- /dev/null +++ b/kth-largest-element-in-an-array/Solution.java @@ -0,0 +1,7 @@ +public class Solution { + public int findKthLargest(int[] nums, int k) { + Arrays.sort(nums); + + return nums[nums.length - k]; + } +} diff --git a/kth-largest-element-in-an-array/index.md b/kth-largest-element-in-an-array/index.md new file mode 100644 index 0000000..403edfb --- /dev/null +++ b/kth-largest-element-in-an-array/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Kth Largest Element in an Array +date: 2015-05-26 01:30:24+08:00 +leetcode_id: 215 +--- +{% include_relative README.md %} From 2ef5cf714fcadddd6e9d69ba852eb1689fa307e0 Mon Sep 17 00:00:00 2001 From: tgic Date: Tue, 26 May 2015 02:06:39 +0800 Subject: [PATCH 39/79] add combination sum iii --- combination-sum-iii/README.md | 0 combination-sum-iii/Solution.java | 41 +++++++++++++++++++++++++++++++ combination-sum-iii/index.md | 7 ++++++ 3 files changed, 48 insertions(+) create mode 100644 combination-sum-iii/README.md create mode 100644 combination-sum-iii/Solution.java create mode 100644 combination-sum-iii/index.md diff --git a/combination-sum-iii/README.md b/combination-sum-iii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/combination-sum-iii/Solution.java b/combination-sum-iii/Solution.java new file mode 100644 index 0000000..e855819 --- /dev/null +++ b/combination-sum-iii/Solution.java @@ -0,0 +1,41 @@ +public class Solution { + + Integer[] stack; + List> found; + + void search(int p, int k, int current, int n, int st){ + + if(p == k){ + if(n == current){ + found.add(new ArrayList<>(Arrays.asList(stack))); + } + + return; + } + + // cut + if(current + 9 * (k - p) < n){ + return; + } + + if(current + 1 * (k - p) > n){ + return; + } + + for(int i = st; i < 10; i++){ + if(current + i <= n){ + stack[p] = i; + search(p + 1, k, current + i, n, i + 1); + } + } + } + + public List> combinationSum3(int k, int n) { + found = new ArrayList<>(); + stack = new Integer[k]; + + search(0, k, 0, n, 1); + + return found; + } +} diff --git a/combination-sum-iii/index.md b/combination-sum-iii/index.md new file mode 100644 index 0000000..fc4f38e --- /dev/null +++ b/combination-sum-iii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Combination Sum III +date: 2015-05-26 02:05:29+08:00 +leetcode_id: 216 +--- +{% include_relative README.md %} From 903217ecdf9a516d4ea908847aa0f2aa4dcb1dd9 Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 28 May 2015 19:48:18 +0800 Subject: [PATCH 40/79] too hard take me 2 days: skyline --- the-skyline-problem/README.md | 0 the-skyline-problem/Solution.java | 124 ++++++++++++++++++++++++++++++ the-skyline-problem/index.md | 7 ++ 3 files changed, 131 insertions(+) create mode 100644 the-skyline-problem/README.md create mode 100644 the-skyline-problem/Solution.java create mode 100644 the-skyline-problem/index.md diff --git a/the-skyline-problem/README.md b/the-skyline-problem/README.md new file mode 100644 index 0000000..e69de29 diff --git a/the-skyline-problem/Solution.java b/the-skyline-problem/Solution.java new file mode 100644 index 0000000..ff2b372 --- /dev/null +++ b/the-skyline-problem/Solution.java @@ -0,0 +1,124 @@ +public class Solution { + static int li(int[] building){ + return building[0]; + } + + static int ri(int[] building){ + return building[1]; + } + + static int hi(int[] building){ + return building[2]; + } + + static class SortedBuilds { + int[][] buildings; + int p = 0; + + PriorityQueue inserted = new PriorityQueue<>((a, b) -> li(a) - li(b)); + + SortedBuilds(int[][] buildings) { + this.buildings = buildings; + } + + boolean hasNext(){ + return p < buildings.length || !inserted.isEmpty(); + } + + + int[] next(){ + + if(p < buildings.length && !inserted.isEmpty()){ + + if(li(buildings[p]) < li(inserted.peek())){ + return buildings[p++]; + }else{ + return inserted.poll(); + } + + } else if(p < buildings.length ){ + return buildings[p++]; + } else { // !inserted.isEmpty()) + return inserted.poll(); + } + + } + + void insert(int[] building){ + inserted.add(building); + } + } + + public List getSkyline(int[][] buildings) { + + List all = new ArrayList<>(); + if(buildings.length == 0) return all; + + SortedBuilds sortedBuilds = new SortedBuilds(buildings); + + int[] a = sortedBuilds.next(); + + while (sortedBuilds.hasNext()){ + int[] b = sortedBuilds.next(); + + if(ri(a) == li(b) && hi(a) == hi(b)){ + a = new int[]{li(a), ri(b), hi(a)}; + continue; + } + + // a.r b.l + if(ri(a) <= li(b)){ + all.add(new int[]{li(a), hi(a)}); + + if(ri(a) < li(b)){ + all.add(new int[]{ri(a), 0}); + } + + a = b; + continue; + } + + // a.l b.l + if(li(a) == li(b)){ + + // make a higher than b + if(hi(a) < hi(b)){ + sortedBuilds.insert(a); + a = b; + continue; + } + + if(ri(a) < ri(b)){ + sortedBuilds.insert(new int[]{ri(a), ri(b), hi(b)}); + } + // else drop b (b inside a) + continue; + } + + // + if(hi(a) < hi(b)){ + + all.add(new int[]{li(a), hi(a)}); + + if(ri(a) > ri(b)){ + sortedBuilds.insert(new int[]{ri(b), ri(a), hi(a)}); + } + + a = b; + continue; + } + + // a.h >= b.h + + if(ri(a) < ri(b)){ + sortedBuilds.insert(new int[]{ri(a), ri(b), hi(b)}); + } + // else drop b (b inside a) + } + + all.add(new int[]{li(a), hi(a)}); + all.add(new int[]{ri(a), 0}); + + return all; + } +} diff --git a/the-skyline-problem/index.md b/the-skyline-problem/index.md new file mode 100644 index 0000000..7e48923 --- /dev/null +++ b/the-skyline-problem/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: The Skyline Problem +date: 2015-05-28 19:45:44+08:00 +leetcode_id: 218 +--- +{% include_relative README.md %} From 6f5dd5f17e3122e3d6e8e0d6bf108cf1614e1a9a Mon Sep 17 00:00:00 2001 From: tgic Date: Fri, 29 May 2015 11:56:26 +0800 Subject: [PATCH 41/79] contains dup ii --- contains-duplicate-ii/README.md | 0 contains-duplicate-ii/Solution.java | 27 +++++++++++++++++++++++++++ contains-duplicate-ii/index.md | 7 +++++++ 3 files changed, 34 insertions(+) create mode 100644 contains-duplicate-ii/README.md create mode 100644 contains-duplicate-ii/Solution.java create mode 100644 contains-duplicate-ii/index.md diff --git a/contains-duplicate-ii/README.md b/contains-duplicate-ii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/contains-duplicate-ii/Solution.java b/contains-duplicate-ii/Solution.java new file mode 100644 index 0000000..00a613a --- /dev/null +++ b/contains-duplicate-ii/Solution.java @@ -0,0 +1,27 @@ +public class Solution { + public boolean containsNearbyDuplicate(int[] nums, int k) { + + if(k <= 0) return false; + + Map> pairs = new HashMap<>(); + + for(int i = 0; i < nums.length; i++){ + List l = pairs.get(nums[i]); + + if(l == null){ + l = new ArrayList<>(); + pairs.put(nums[i], l); + } else { + for(int j : l){ + if(i - j <= k){ + return true; + } + } + } + + l.add(i); + } + + return false; + } +} diff --git a/contains-duplicate-ii/index.md b/contains-duplicate-ii/index.md new file mode 100644 index 0000000..0abfdd1 --- /dev/null +++ b/contains-duplicate-ii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Contains Duplicate II +date: 2015-05-29 11:55:22+08:00 +leetcode_id: 219 +--- +{% include_relative README.md %} From 6a62a7d8a7cd3825621e8f9c2fad8c9493ec80d4 Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 31 May 2015 01:01:13 +0800 Subject: [PATCH 42/79] a minheap version --- kth-largest-element-in-an-array/Solution.java | 82 ++++++++++++++++++- 1 file changed, 79 insertions(+), 3 deletions(-) diff --git a/kth-largest-element-in-an-array/Solution.java b/kth-largest-element-in-an-array/Solution.java index 5012f30..749278b 100644 --- a/kth-largest-element-in-an-array/Solution.java +++ b/kth-largest-element-in-an-array/Solution.java @@ -1,7 +1,83 @@ public class Solution { - public int findKthLargest(int[] nums, int k) { - Arrays.sort(nums); + + static class MinHeap { + + int[] data; + + int currentSize = 0; + + MinHeap(int size){ + data = new int[size]; + } + + int parent(int i){ + return (i - 1) / 2; + } + + int left(int i){ + return 2 * i + 1; + } + + int right(int i){ + return 2 * i + 2; + } - return nums[nums.length - k]; + void add(int n){ + int i = currentSize; + currentSize++; + + data[i] = n; + + while(i > 0 && data[parent(i)] > data[i]){ + swap(parent(i), i); + i = parent(i); + } + } + + void heapify(int i){ + + int l = left(i); + int r = right(i); + int min = i; + + if(l < currentSize && data[l] < data[min]){ + min = l; + } + + if(r < currentSize && data[r] < data[min]){ + min = r; + } + + if(min != i){ + swap(i, min); + heapify(min); + } + + } + + void swap(int x, int y){ + int t = data[x]; + data[x] = data[y]; + data[y] = t; + } + } + + public int findKthLargest(int[] nums, int k) { + + MinHeap heap = new MinHeap(k); + + for(int i = 0; i < Math.min(nums.length, k); i++){ + heap.add(nums[i]); + } + + for(int i = k; i < nums.length; i++){ + + if(heap.data[0] < nums[i]){ + heap.data[0] = nums[i]; + heap.heapify(0); + } + } + + return heap.data[0]; } } From b3c6f4f27dc123e0714859b0561152a5136adbee Mon Sep 17 00:00:00 2001 From: tgic Date: Tue, 2 Jun 2015 01:38:50 +0800 Subject: [PATCH 43/79] contain dup iii --- contains-duplicate-iii/README.md | 0 contains-duplicate-iii/Solution.java | 80 ++++++++++++++++++++++++++++ contains-duplicate-iii/index.md | 7 +++ 3 files changed, 87 insertions(+) create mode 100644 contains-duplicate-iii/README.md create mode 100644 contains-duplicate-iii/Solution.java create mode 100644 contains-duplicate-iii/index.md diff --git a/contains-duplicate-iii/README.md b/contains-duplicate-iii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/contains-duplicate-iii/Solution.java b/contains-duplicate-iii/Solution.java new file mode 100644 index 0000000..548af82 --- /dev/null +++ b/contains-duplicate-iii/Solution.java @@ -0,0 +1,80 @@ +public class Solution { + + static class Tree { + TreeMap tree = new TreeMap<>(); + + int size = 0; + + void add(Integer n){ + Integer v = tree.get(n); + + if(v == null){ + v = 0; + } + + tree.put(n, v + 1); + + size++; + } + + void remove(Integer n){ + Integer v = tree.get(n); + + v--; + + if(v == 0){ + tree.remove(n); + } else { + tree.put(n, v); + } + + size--; + } + + // fuck overflow + long nearSub(Integer n){ + + Integer v = tree.get(n); + if(v >= 2) return 0; + + long min = Long.MAX_VALUE; + + Integer h = tree.higherKey(n); + if(h != null){ + min = h - n; + } + + Integer l = tree.lowerKey(n); + if(l != null){ + min = Math.min(min, (long)n - l); + } + + return min; + } + } + + public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { + if (k <= 0) return false; + if (nums.length <= 1) return false; + + Tree tree = new Tree(); + + tree.add(nums[0]); + + int p = 0; + for(int i = 1; i < nums.length; i++){ + + tree.add(nums[i]); + + if(tree.nearSub(nums[i]) <= t){ + return true; + } + + if(tree.size > k){ + tree.remove(nums[p++]); + } + } + + return false; + } +} diff --git a/contains-duplicate-iii/index.md b/contains-duplicate-iii/index.md new file mode 100644 index 0000000..a2aed57 --- /dev/null +++ b/contains-duplicate-iii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Contains Duplicate III +date: 2015-06-02 01:36:35+08:00 +leetcode_id: 220 +--- +{% include_relative README.md %} From c05d570366628f196f6018daff19eeffd0ce3886 Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 4 Jun 2015 23:48:13 +0800 Subject: [PATCH 44/79] add max squre --- maximal-square/README.md | 0 maximal-square/Solution.java | 46 ++++++++++++++++++++++++++++++++++++ maximal-square/index.md | 7 ++++++ 3 files changed, 53 insertions(+) create mode 100644 maximal-square/README.md create mode 100644 maximal-square/Solution.java create mode 100644 maximal-square/index.md diff --git a/maximal-square/README.md b/maximal-square/README.md new file mode 100644 index 0000000..e69de29 diff --git a/maximal-square/Solution.java b/maximal-square/Solution.java new file mode 100644 index 0000000..9350e23 --- /dev/null +++ b/maximal-square/Solution.java @@ -0,0 +1,46 @@ +public class Solution { + + int maximalSquare(char[][] matrix, final int x, final int y){ + int l = 1; + + done: + while(true){ + + for(int i = 0; i <= l; i++){ + + if(x + l >= matrix.length || y + l >= matrix[0].length){ + break done; + } + + + if(matrix[x + l][y + i] != '1'){ + break done; + } + + if(matrix[x + i][y + l] != '1'){ + break done; + } + + } + + l++; + } + + return l * l; + } + + public int maximalSquare(char[][] matrix) { + + int max = 0; + + for(int x = 0; x < matrix.length; x++){ + for(int y = 0; y < matrix[0].length; y++){ + if(matrix[x][y] == '1'){ + max = Math.max(max, maximalSquare(matrix, x, y)); + } + } + } + + return max; + } +} diff --git a/maximal-square/index.md b/maximal-square/index.md new file mode 100644 index 0000000..142c600 --- /dev/null +++ b/maximal-square/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Maximal Square +date: 2015-06-04 23:46:46+08:00 +leetcode_id: 221 +--- +{% include_relative README.md %} From eca06c9be247266a6eb0146ac0cc525dc80cf617 Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 8 Jun 2015 00:31:57 +0800 Subject: [PATCH 45/79] add count complete tree --- count-complete-tree-nodes/README.md | 0 count-complete-tree-nodes/Solution.java | 70 +++++++++++++++++++++++++ count-complete-tree-nodes/index.md | 7 +++ 3 files changed, 77 insertions(+) create mode 100644 count-complete-tree-nodes/README.md create mode 100644 count-complete-tree-nodes/Solution.java create mode 100644 count-complete-tree-nodes/index.md diff --git a/count-complete-tree-nodes/README.md b/count-complete-tree-nodes/README.md new file mode 100644 index 0000000..e69de29 diff --git a/count-complete-tree-nodes/Solution.java b/count-complete-tree-nodes/Solution.java new file mode 100644 index 0000000..2f9feb6 --- /dev/null +++ b/count-complete-tree-nodes/Solution.java @@ -0,0 +1,70 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +public class Solution { + + int height(TreeNode root){ + if(root == null) return 0; + + return 1 + height(root.left); + } + + + int leaves = 0; + boolean stop = false; + + void countLeaves(TreeNode root, int heightToLeaf){ + + if(root == null) return; + + if(stop) return; + + if(heightToLeaf == 2) { + + if(root.right != null){ + leaves += 2; + } else { + + // at lease one is null + stop = true; + + if(root.left != null) { + leaves += 1; + } + } + + + return; + } + + countLeaves(root.left, heightToLeaf - 1); + countLeaves(root.right, heightToLeaf - 1); + } + + int perfectTreeNodeCount(int height){ + if(height == 0) return 0; + if(height == 1) return 1; + + return (int)Math.pow(2, height) - 1; + } + + public int countNodes(TreeNode root) { + + int h = height(root); + + countLeaves(root, h); + + if(!stop){ + // perfect tree + return perfectTreeNodeCount(h); + } + + return perfectTreeNodeCount(h - 1) + leaves; + } +} diff --git a/count-complete-tree-nodes/index.md b/count-complete-tree-nodes/index.md new file mode 100644 index 0000000..d19bd9f --- /dev/null +++ b/count-complete-tree-nodes/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Count Complete Tree Nodes +date: 2015-06-08 00:30:07+08:00 +leetcode_id: 222 +--- +{% include_relative README.md %} From f36eaa8b32183c63de234d87038fdb038116063b Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 8 Jun 2015 23:33:59 +0800 Subject: [PATCH 46/79] add rect area --- rectangle-area/README.md | 0 rectangle-area/Solution.java | 35 +++++++++++++++++++++++++++++++++++ rectangle-area/index.md | 7 +++++++ 3 files changed, 42 insertions(+) create mode 100644 rectangle-area/README.md create mode 100644 rectangle-area/Solution.java create mode 100644 rectangle-area/index.md diff --git a/rectangle-area/README.md b/rectangle-area/README.md new file mode 100644 index 0000000..e69de29 diff --git a/rectangle-area/Solution.java b/rectangle-area/Solution.java new file mode 100644 index 0000000..d26cfec --- /dev/null +++ b/rectangle-area/Solution.java @@ -0,0 +1,35 @@ +public class Solution { + + int area(int x1, int y1, int x2, int y2){ + return (y2 - y1) * (x2 - x1); + } + + public int computeArea(int A, int B, int C, int D, int E, int F, int G, int H) { + + // make sure left is left + if(A > E){ + return computeArea(E, F, G, H, A, B, C, D); + } + + int a = area(A, B, C, D) + area(E, F, G, H); + + // no share case1 + // [ ]C + // E[ ] + if(C < E){ + return a; + } + + // no share case2 + // [ ]B + // + // [ ]H + + if(B > H || F > D){ + return a; + } + + // remove share + return a - area(E, Math.max(B, F), Math.min(C, G), Math.min(D, H)); + } +} diff --git a/rectangle-area/index.md b/rectangle-area/index.md new file mode 100644 index 0000000..3303cd1 --- /dev/null +++ b/rectangle-area/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Rectangle Area +date: 2015-06-08 23:32:33+08:00 +leetcode_id: 223 +--- +{% include_relative README.md %} From 059846c9bf710942bf66925869b6c4de11734e63 Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 28 Jun 2015 15:58:34 +0800 Subject: [PATCH 47/79] add 3 easier problems --- implement-stack-using-queues/MyStack.java | 1 + implement-stack-using-queues/README.md | 0 implement-stack-using-queues/Solution.java | 34 ++++++++++++++++++ implement-stack-using-queues/index.md | 7 ++++ invert-binary-tree/README.md | 0 invert-binary-tree/Solution.java | 0 invert-binary-tree/index.md | 7 ++++ summary-ranges/README.md | 0 summary-ranges/Solution.java | 41 ++++++++++++++++++++++ summary-ranges/index.md | 7 ++++ 10 files changed, 97 insertions(+) create mode 120000 implement-stack-using-queues/MyStack.java create mode 100644 implement-stack-using-queues/README.md create mode 100644 implement-stack-using-queues/Solution.java create mode 100644 implement-stack-using-queues/index.md create mode 100644 invert-binary-tree/README.md create mode 100644 invert-binary-tree/Solution.java create mode 100644 invert-binary-tree/index.md create mode 100644 summary-ranges/README.md create mode 100644 summary-ranges/Solution.java create mode 100644 summary-ranges/index.md diff --git a/implement-stack-using-queues/MyStack.java b/implement-stack-using-queues/MyStack.java new file mode 120000 index 0000000..e570129 --- /dev/null +++ b/implement-stack-using-queues/MyStack.java @@ -0,0 +1 @@ +Solution.java \ No newline at end of file diff --git a/implement-stack-using-queues/README.md b/implement-stack-using-queues/README.md new file mode 100644 index 0000000..e69de29 diff --git a/implement-stack-using-queues/Solution.java b/implement-stack-using-queues/Solution.java new file mode 100644 index 0000000..075ca38 --- /dev/null +++ b/implement-stack-using-queues/Solution.java @@ -0,0 +1,34 @@ +class MyStack { + + Queue queue = new LinkedList<>(); + + // Push element x onto stack. + public void push(int x) { + Queue swap = new LinkedList<>(); + + swap.add(x); + + while(!queue.isEmpty()){ + swap.add(queue.remove()); + } + + queue = swap; + } + + // Removes the element on top of the stack. + public void pop() { + // pop from front + queue.remove(); + } + + // Get the top element. + public int top() { + // peek from front + return queue.peek(); + } + + // Return whether the stack is empty. + public boolean empty() { + return queue.isEmpty(); + } +} diff --git a/implement-stack-using-queues/index.md b/implement-stack-using-queues/index.md new file mode 100644 index 0000000..25ede72 --- /dev/null +++ b/implement-stack-using-queues/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Implement Stack using Queues +date: 2015-06-28 15:56:53+08:00 +leetcode_id: 225 +--- +{% include_relative README.md %} diff --git a/invert-binary-tree/README.md b/invert-binary-tree/README.md new file mode 100644 index 0000000..e69de29 diff --git a/invert-binary-tree/Solution.java b/invert-binary-tree/Solution.java new file mode 100644 index 0000000..e69de29 diff --git a/invert-binary-tree/index.md b/invert-binary-tree/index.md new file mode 100644 index 0000000..451ca81 --- /dev/null +++ b/invert-binary-tree/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Invert Binary Tree +date: 2015-06-28 15:39:51+08:00 +leetcode_id: 226 +--- +{% include_relative README.md %} diff --git a/summary-ranges/README.md b/summary-ranges/README.md new file mode 100644 index 0000000..e69de29 diff --git a/summary-ranges/Solution.java b/summary-ranges/Solution.java new file mode 100644 index 0000000..f37335b --- /dev/null +++ b/summary-ranges/Solution.java @@ -0,0 +1,41 @@ +public class Solution { + + static class Range { + + int st; + int ed; + + Range(int st){ + this.st = st; + this.ed = st; + } + + public String toString(){ + if(ed == st) return "" + st; + + return st + "->" + ed; + } + } + + public List summaryRanges(int[] nums) { + + ArrayList rt = new ArrayList<>(); + + if(nums.length == 0) return rt; + + Range r = new Range(nums[0]); + + for(int i = 1; i < nums.length; i++){ + if(nums[i] - r.ed == 1){ + r.ed = nums[i]; + } else { + rt.add(r.toString()); + r = new Range(nums[i]); + } + } + + rt.add(r.toString()); + + return rt; + } +} diff --git a/summary-ranges/index.md b/summary-ranges/index.md new file mode 100644 index 0000000..6fb65ed --- /dev/null +++ b/summary-ranges/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Summary Ranges +date: 2015-06-28 15:35:53+08:00 +leetcode_id: 228 +--- +{% include_relative README.md %} From 759d65cdfc1da526a4acd697dcf85ff394a1e1ae Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 28 Jun 2015 21:11:36 +0800 Subject: [PATCH 48/79] code did not save before push --- invert-binary-tree/Solution.java | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/invert-binary-tree/Solution.java b/invert-binary-tree/Solution.java index e69de29..f07e3a5 100644 --- a/invert-binary-tree/Solution.java +++ b/invert-binary-tree/Solution.java @@ -0,0 +1,22 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +public class Solution { + public TreeNode invertTree(TreeNode root) { + if(root == null) return null; + + TreeNode newLeft = invertTree(root.right); + TreeNode newRight = invertTree(root.left); + + root.left = newLeft; + root.right = newRight; + + return root; + } +} From a01c199b47ca6d07602b11d51876e0fdb711a6ea Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 29 Jun 2015 00:21:54 +0800 Subject: [PATCH 49/79] add two basic calculator --- basic-calculator-ii/README.md | 0 basic-calculator-ii/Solution.java | 183 ++++++++++++++++++++++++++++++ basic-calculator-ii/index.md | 7 ++ basic-calculator/README.md | 0 basic-calculator/Solution.java | 183 ++++++++++++++++++++++++++++++ basic-calculator/index.md | 7 ++ 6 files changed, 380 insertions(+) create mode 100644 basic-calculator-ii/README.md create mode 100644 basic-calculator-ii/Solution.java create mode 100644 basic-calculator-ii/index.md create mode 100644 basic-calculator/README.md create mode 100644 basic-calculator/Solution.java create mode 100644 basic-calculator/index.md diff --git a/basic-calculator-ii/README.md b/basic-calculator-ii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/basic-calculator-ii/Solution.java b/basic-calculator-ii/Solution.java new file mode 100644 index 0000000..9976235 --- /dev/null +++ b/basic-calculator-ii/Solution.java @@ -0,0 +1,183 @@ +public class Solution { + enum TokenType { DIGIT, OP } + + static class Token { + TokenType type; + int val; + + public Token(int val, TokenType type) { + this.val = val; + this.type = type; + } + } + + static final Token EOL = new Token(0, TokenType.OP); + + static final Token[] TOKENS = new Token[256]; + + static { + TOKENS['+'] = new Token('+', TokenType.OP); + TOKENS['-'] = new Token('-', TokenType.OP); + TOKENS['*'] = new Token('*', TokenType.OP); + TOKENS['/'] = new Token('/', TokenType.OP); + TOKENS['('] = new Token('(', TokenType.OP); + TOKENS[')'] = new Token(')', TokenType.OP); + } + + static class Tokenizer { + + Scanner scanner; + + Tokenizer(String s){ + scanner = new Scanner(s); + scanner.useDelimiter(""); + } + + Token next(){ + if(!scanner.hasNext()){ + return EOL; + } + + boolean num = false; + int buf = 0; + while (scanner.hasNextInt()){ + num = true; + buf = buf * 10 + scanner.nextInt(); + } + + if(num){ + return new Token(buf, TokenType.DIGIT); + } + + char c = scanner.next().charAt(0); + + if(TOKENS[c] != null){ + return TOKENS[c]; + } + + return next(); + } + } + + static class RPNCalculator { + LinkedList stack = new LinkedList<>(); + + void addToken(Token t){ + if(t.type == TokenType.OP){ + + int v2 = stack.pop(); + int v1 = stack.pop(); + + switch (t.val){ + case '+': + stack.push(v1 + v2); + break; + case '-': + stack.push(v1 - v2); + break; + case '*': + stack.push(v1 * v2); + break; + case '/': + stack.push(v1 / v2); + break; + default: + // cant happen + } + + } else { // DIGIT + stack.push(t.val); + } + } + + int val(){ + return stack.peek(); + } + } + + public int calculate(String s) { + + RPNCalculator calculator = new RPNCalculator(); + + Tokenizer tokenizer = new Tokenizer(s); + + LinkedList op = new LinkedList<>(); + + Token t; + + next: + while ((t = tokenizer.next()) != EOL){ + + // convert to RPN + + if(t.type == TokenType.DIGIT){ + calculator.addToken(t); + + } else { // type == OP + + retry: + while(true) { + + if(op.isEmpty()){ + op.push(t); + continue next; + } + + Token top = op.peek(); + + switch (t.val) { + case '(': + op.push(t); + break; + + case '+': + case '-': + if (top.val == '+' || top.val == '-' || + top.val == '*' || top.val == '/') { + + calculator.addToken(op.pop()); + continue retry; + } + + op.push(t); + + break; + + case '*': + case '/': + if (top.val == '*' || top.val == '/') { + calculator.addToken(op.pop()); + continue retry; + } + + op.push(t); + + break; + + case ')': + + while (!op.isEmpty()) { + top = op.pop(); + + if (top.val == '(') continue next; + + calculator.addToken(top); + } + + default: + // cant happen + } + + continue next; + } + } + } + + while (!op.isEmpty()){ + calculator.addToken(op.pop()); + } + + return calculator.val(); + } + +} diff --git a/basic-calculator-ii/index.md b/basic-calculator-ii/index.md new file mode 100644 index 0000000..c076eed --- /dev/null +++ b/basic-calculator-ii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Basic Calculator II +date: 2015-06-29 00:20:12+08:00 +leetcode_id: 228 +--- +{% include_relative README.md %} diff --git a/basic-calculator/README.md b/basic-calculator/README.md new file mode 100644 index 0000000..e69de29 diff --git a/basic-calculator/Solution.java b/basic-calculator/Solution.java new file mode 100644 index 0000000..9976235 --- /dev/null +++ b/basic-calculator/Solution.java @@ -0,0 +1,183 @@ +public class Solution { + enum TokenType { DIGIT, OP } + + static class Token { + TokenType type; + int val; + + public Token(int val, TokenType type) { + this.val = val; + this.type = type; + } + } + + static final Token EOL = new Token(0, TokenType.OP); + + static final Token[] TOKENS = new Token[256]; + + static { + TOKENS['+'] = new Token('+', TokenType.OP); + TOKENS['-'] = new Token('-', TokenType.OP); + TOKENS['*'] = new Token('*', TokenType.OP); + TOKENS['/'] = new Token('/', TokenType.OP); + TOKENS['('] = new Token('(', TokenType.OP); + TOKENS[')'] = new Token(')', TokenType.OP); + } + + static class Tokenizer { + + Scanner scanner; + + Tokenizer(String s){ + scanner = new Scanner(s); + scanner.useDelimiter(""); + } + + Token next(){ + if(!scanner.hasNext()){ + return EOL; + } + + boolean num = false; + int buf = 0; + while (scanner.hasNextInt()){ + num = true; + buf = buf * 10 + scanner.nextInt(); + } + + if(num){ + return new Token(buf, TokenType.DIGIT); + } + + char c = scanner.next().charAt(0); + + if(TOKENS[c] != null){ + return TOKENS[c]; + } + + return next(); + } + } + + static class RPNCalculator { + LinkedList stack = new LinkedList<>(); + + void addToken(Token t){ + if(t.type == TokenType.OP){ + + int v2 = stack.pop(); + int v1 = stack.pop(); + + switch (t.val){ + case '+': + stack.push(v1 + v2); + break; + case '-': + stack.push(v1 - v2); + break; + case '*': + stack.push(v1 * v2); + break; + case '/': + stack.push(v1 / v2); + break; + default: + // cant happen + } + + } else { // DIGIT + stack.push(t.val); + } + } + + int val(){ + return stack.peek(); + } + } + + public int calculate(String s) { + + RPNCalculator calculator = new RPNCalculator(); + + Tokenizer tokenizer = new Tokenizer(s); + + LinkedList op = new LinkedList<>(); + + Token t; + + next: + while ((t = tokenizer.next()) != EOL){ + + // convert to RPN + + if(t.type == TokenType.DIGIT){ + calculator.addToken(t); + + } else { // type == OP + + retry: + while(true) { + + if(op.isEmpty()){ + op.push(t); + continue next; + } + + Token top = op.peek(); + + switch (t.val) { + case '(': + op.push(t); + break; + + case '+': + case '-': + if (top.val == '+' || top.val == '-' || + top.val == '*' || top.val == '/') { + + calculator.addToken(op.pop()); + continue retry; + } + + op.push(t); + + break; + + case '*': + case '/': + if (top.val == '*' || top.val == '/') { + calculator.addToken(op.pop()); + continue retry; + } + + op.push(t); + + break; + + case ')': + + while (!op.isEmpty()) { + top = op.pop(); + + if (top.val == '(') continue next; + + calculator.addToken(top); + } + + default: + // cant happen + } + + continue next; + } + } + } + + while (!op.isEmpty()){ + calculator.addToken(op.pop()); + } + + return calculator.val(); + } + +} diff --git a/basic-calculator/index.md b/basic-calculator/index.md new file mode 100644 index 0000000..3b73b31 --- /dev/null +++ b/basic-calculator/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Basic Calculator +date: 2015-06-29 00:20:02+08:00 +leetcode_id: 224 +--- +{% include_relative README.md %} From c40c5b5971ff4db1b6ad1ef58a472357c0b23dea Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 29 Jun 2015 00:23:00 +0800 Subject: [PATCH 50/79] fix leetcode id --- basic-calculator-ii/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/basic-calculator-ii/index.md b/basic-calculator-ii/index.md index c076eed..78f146e 100644 --- a/basic-calculator-ii/index.md +++ b/basic-calculator-ii/index.md @@ -2,6 +2,6 @@ layout: solution title: Basic Calculator II date: 2015-06-29 00:20:12+08:00 -leetcode_id: 228 +leetcode_id: 227 --- {% include_relative README.md %} From c4343314c10195298d473c290064c23cd36b3efc Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 29 Jun 2015 13:43:24 +0800 Subject: [PATCH 51/79] add major ele ii --- majority-element-ii/README.md | 0 majority-element-ii/Solution.java | 50 +++++++++++++++++++++++++++++++ majority-element-ii/index.md | 7 +++++ 3 files changed, 57 insertions(+) create mode 100644 majority-element-ii/README.md create mode 100644 majority-element-ii/Solution.java create mode 100644 majority-element-ii/index.md diff --git a/majority-element-ii/README.md b/majority-element-ii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/majority-element-ii/Solution.java b/majority-element-ii/Solution.java new file mode 100644 index 0000000..a4d9b33 --- /dev/null +++ b/majority-element-ii/Solution.java @@ -0,0 +1,50 @@ +public class Solution { + public List majorityElement(int[] nums) { + if(nums.length == 0) return Collections.emptyList(); + + int n1 = nums[0]; + int n2 = nums[0]; + + int c1 = 0; + int c2 = 0; + + for(int i = 0; i < nums.length; i++){ + + // put to an empty slot + if(c1 <= 0 && nums[i] != n2){ + n1 = nums[i]; + c1 = 1; + continue; + } + + if(c2 <= 0 && nums[i] != n1){ + n2 = nums[i]; + c2 = 1; + continue; + } + + // add count + if(nums[i] == n1){ + c1++; + continue; + } + + if(nums[i] == n2){ + c2++; + continue; + } + + // no match + + c1--; + c2--; + } + + // faint + return new ArrayList<>(IntStream.of(n1, n2) + .filter(n -> + Arrays.stream(nums).filter(i -> n == i).count() > nums.length / 3) + .boxed() + .collect(Collectors.toSet())); + } +} diff --git a/majority-element-ii/index.md b/majority-element-ii/index.md new file mode 100644 index 0000000..2e262bc --- /dev/null +++ b/majority-element-ii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Majority Element II +date: 2015-06-29 13:42:29+08:00 +leetcode_id: 229 +--- +{% include_relative README.md %} From 821153894e0d62639712707163ca7f5165be592e Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 2 Jul 2015 14:17:56 +0800 Subject: [PATCH 52/79] add k smallest in bst --- kth-smallest-element-in-a-bst/README.md | 0 kth-smallest-element-in-a-bst/Solution.java | 51 +++++++++++++++++++++ kth-smallest-element-in-a-bst/index.md | 7 +++ 3 files changed, 58 insertions(+) create mode 100644 kth-smallest-element-in-a-bst/README.md create mode 100644 kth-smallest-element-in-a-bst/Solution.java create mode 100644 kth-smallest-element-in-a-bst/index.md diff --git a/kth-smallest-element-in-a-bst/README.md b/kth-smallest-element-in-a-bst/README.md new file mode 100644 index 0000000..e69de29 diff --git a/kth-smallest-element-in-a-bst/Solution.java b/kth-smallest-element-in-a-bst/Solution.java new file mode 100644 index 0000000..0af45bc --- /dev/null +++ b/kth-smallest-element-in-a-bst/Solution.java @@ -0,0 +1,51 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +public class Solution { + + boolean reachLeftMost = false; + boolean stop = false; + + int kth = 0; + int k = 0; + + void search(TreeNode root) { + + if(stop){ + return; + } + + // visit + if(root == null){ + reachLeftMost = true; + return; + } + + search(root.left); + + if(reachLeftMost) { + k--; + } + + if(k == 0){ + kth = root.val; + stop = true; + return; + } + + search(root.right); + } + + public int kthSmallest(TreeNode root, int k) { + this.k = k; + search(root); + + return kth; + } +} diff --git a/kth-smallest-element-in-a-bst/index.md b/kth-smallest-element-in-a-bst/index.md new file mode 100644 index 0000000..e34b4f0 --- /dev/null +++ b/kth-smallest-element-in-a-bst/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Kth Smallest Element in a BST +date: 2015-07-02 14:16:21+08:00 +leetcode_id: 230 +--- +{% include_relative README.md %} From 6727f8f342c8b5b4f234007eda82b7c7963cf609 Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 6 Jul 2015 23:01:20 +0800 Subject: [PATCH 53/79] pow of two --- power-of-two/README.md | 0 power-of-two/Solution.java | 10 ++++++++++ power-of-two/index.md | 7 +++++++ 3 files changed, 17 insertions(+) create mode 100644 power-of-two/README.md create mode 100644 power-of-two/Solution.java create mode 100644 power-of-two/index.md diff --git a/power-of-two/README.md b/power-of-two/README.md new file mode 100644 index 0000000..e69de29 diff --git a/power-of-two/Solution.java b/power-of-two/Solution.java new file mode 100644 index 0000000..9a4aae2 --- /dev/null +++ b/power-of-two/Solution.java @@ -0,0 +1,10 @@ +public class Solution { + public boolean isPowerOfTwo(int n) { + if(n == 0) return false; + if(n == 1) return true; + + if(n % 2 == 1) return false; + + return isPowerOfTwo(n / 2); + } +} diff --git a/power-of-two/index.md b/power-of-two/index.md new file mode 100644 index 0000000..de9ef4b --- /dev/null +++ b/power-of-two/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Power of Two +date: 2015-07-06 23:00:26+08:00 +leetcode_id: 231 +--- +{% include_relative README.md %} From ef4aea98e09ac8b586acb5ba7d7a9068fc185072 Mon Sep 17 00:00:00 2001 From: tgic Date: Tue, 7 Jul 2015 21:05:48 +0800 Subject: [PATCH 54/79] add queue use stack --- implement-queue-using-stacks/README.md | 0 implement-queue-using-stacks/Solution.java | 35 ++++++++++++++++++++++ implement-queue-using-stacks/index.md | 7 +++++ 3 files changed, 42 insertions(+) create mode 100644 implement-queue-using-stacks/README.md create mode 100644 implement-queue-using-stacks/Solution.java create mode 100644 implement-queue-using-stacks/index.md diff --git a/implement-queue-using-stacks/README.md b/implement-queue-using-stacks/README.md new file mode 100644 index 0000000..e69de29 diff --git a/implement-queue-using-stacks/Solution.java b/implement-queue-using-stacks/Solution.java new file mode 100644 index 0000000..c5a336a --- /dev/null +++ b/implement-queue-using-stacks/Solution.java @@ -0,0 +1,35 @@ +class MyQueue { + + // should use Deque stack in modern java + Stack stack = new Stack<>(); + + // Push element x to the back of queue. + public void push(int x) { + Stack rev = new Stack<>(); + + while(!stack.empty()){ + rev.push(stack.pop()); + } + + rev.push(x); + + while(!rev.empty()){ + stack.push(rev.pop()); + } + } + + // Removes the element from in front of queue. + public void pop() { + stack.pop(); + } + + // Get the front element. + public int peek() { + return stack.peek(); + } + + // Return whether the queue is empty. + public boolean empty() { + return stack.empty(); + } +} diff --git a/implement-queue-using-stacks/index.md b/implement-queue-using-stacks/index.md new file mode 100644 index 0000000..90c5ceb --- /dev/null +++ b/implement-queue-using-stacks/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Implement Queue using Stacks +date: 2015-07-07 21:04:46+08:00 +leetcode_id: 232 +--- +{% include_relative README.md %} From 686aa05f4c153462f474d9f2dd43f8d3f032cdf2 Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 8 Jul 2015 00:41:33 +0800 Subject: [PATCH 55/79] num of digit 1 --- number-of-digit-one/README.md | 0 number-of-digit-one/Solution.java | 57 +++++++++++++++++++++++++++++++ number-of-digit-one/index.md | 7 ++++ 3 files changed, 64 insertions(+) create mode 100644 number-of-digit-one/README.md create mode 100644 number-of-digit-one/Solution.java create mode 100644 number-of-digit-one/index.md diff --git a/number-of-digit-one/README.md b/number-of-digit-one/README.md new file mode 100644 index 0000000..e69de29 diff --git a/number-of-digit-one/Solution.java b/number-of-digit-one/Solution.java new file mode 100644 index 0000000..b90839a --- /dev/null +++ b/number-of-digit-one/Solution.java @@ -0,0 +1,57 @@ +public class Solution { + + // return { highest digit, floor(n) } + // 'floor' here has a naming problem... + // named it exactly later + // floor(101) = 100 + // floor(92) = 90 + // floor(10111) = 10000 + + int[] N = {100000000, 10000, 100, 10}; + + int[] extractHighest(int x){ + int e = 1; + + for(int n : N){ + if(x >= n){ + x /= n; + e *= n; + } + } + + return new int[]{x, x * e}; + } + + Map cache = new HashMap<>(); + + public int countDigitOne(int n) { + + if(n <= 0) return 0; + if(n < 10) return 1; + + Integer cached = cache.get(n); + + if(cached != null){ + return cached; + } + + int[] e = extractHighest(n); + + int h = e[0]; + int f = e[1]; + + int rest = n - f; + + int plus = 0; + + if(h == 1){ + plus = rest + 1; + } + + int c = plus + countDigitOne(f - 1) + countDigitOne(rest); + + cache.put(n, c); + + return c; + } +} diff --git a/number-of-digit-one/index.md b/number-of-digit-one/index.md new file mode 100644 index 0000000..2e2acbd --- /dev/null +++ b/number-of-digit-one/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Number of Digit One +date: 2015-07-08 00:39:17+08:00 +leetcode_id: 233 +--- +{% include_relative README.md %} From 84277f537cbac2a8a6ad081561301e6949dff5fe Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 12 Jul 2015 17:01:28 +0800 Subject: [PATCH 56/79] add lca of bst and pal linked list --- .../README.md | 0 .../Solution.java | 28 ++++++++++ .../index.md | 7 +++ palindrome-linked-list/README.md | 0 palindrome-linked-list/Solution.java | 56 +++++++++++++++++++ palindrome-linked-list/index.md | 7 +++ 6 files changed, 98 insertions(+) create mode 100644 lowest-common-ancestor-of-a-binary-search-tree/README.md create mode 100644 lowest-common-ancestor-of-a-binary-search-tree/Solution.java create mode 100644 lowest-common-ancestor-of-a-binary-search-tree/index.md create mode 100644 palindrome-linked-list/README.md create mode 100644 palindrome-linked-list/Solution.java create mode 100644 palindrome-linked-list/index.md diff --git a/lowest-common-ancestor-of-a-binary-search-tree/README.md b/lowest-common-ancestor-of-a-binary-search-tree/README.md new file mode 100644 index 0000000..e69de29 diff --git a/lowest-common-ancestor-of-a-binary-search-tree/Solution.java b/lowest-common-ancestor-of-a-binary-search-tree/Solution.java new file mode 100644 index 0000000..1047289 --- /dev/null +++ b/lowest-common-ancestor-of-a-binary-search-tree/Solution.java @@ -0,0 +1,28 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +public class Solution { + public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { + // make sure p < q + if(p.val > q.val) return lowestCommonAncestor(root, q, p); + + // find p <= root <= q + while(!(p.val <= root.val && root.val <= q.val)){ + + if(root.val > q.val){ + root = root.left; + } else { // root.val < p.val + root = root.right; + } + + } + + return root; + } +} diff --git a/lowest-common-ancestor-of-a-binary-search-tree/index.md b/lowest-common-ancestor-of-a-binary-search-tree/index.md new file mode 100644 index 0000000..5dae6aa --- /dev/null +++ b/lowest-common-ancestor-of-a-binary-search-tree/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Lowest Common Ancestor of a Binary Search Tree +date: 2015-07-12 16:47:16+08:00 +leetcode_id: 235 +--- +{% include_relative README.md %} diff --git a/palindrome-linked-list/README.md b/palindrome-linked-list/README.md new file mode 100644 index 0000000..e69de29 diff --git a/palindrome-linked-list/Solution.java b/palindrome-linked-list/Solution.java new file mode 100644 index 0000000..0827711 --- /dev/null +++ b/palindrome-linked-list/Solution.java @@ -0,0 +1,56 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +public class Solution { + ListNode mid(ListNode head){ + + ListNode fast = head; + ListNode slow = head; + + while(fast != null && fast.next != null){ + fast = fast.next.next; + slow = slow.next; + } + + return slow; + } + + ListNode reverse(ListNode head) { + ListNode prev = null; + + while(head != null){ + + ListNode t = head.next; + + head.next = prev; + prev = head; + + head = t; + } + + return prev; + } + + public boolean isPalindrome(ListNode head) { + ListNode m = mid(head); + + m = reverse(m); + + while(m != head && m != null){ + + if(m.val != head.val){ + return false; + } + + m = m.next; + head = head.next; + } + + return true; + } +} diff --git a/palindrome-linked-list/index.md b/palindrome-linked-list/index.md new file mode 100644 index 0000000..bd04d46 --- /dev/null +++ b/palindrome-linked-list/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Palindrome Linked List +date: 2015-07-12 17:00:15+08:00 +leetcode_id: 234 +--- +{% include_relative README.md %} From cc228fc78bba2259f197c203204aa6718cee5d00 Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 26 Jul 2015 14:44:03 +0800 Subject: [PATCH 57/79] add 2d matrix ii and del node --- delete-node-in-a-linked-list/README.md | 0 delete-node-in-a-linked-list/Solution.java | 14 ++++++++++ delete-node-in-a-linked-list/index.md | 7 +++++ search-a-2d-matrix-ii/README.md | 0 search-a-2d-matrix-ii/Solution.java | 32 ++++++++++++++++++++++ search-a-2d-matrix-ii/index.md | 7 +++++ 6 files changed, 60 insertions(+) create mode 100644 delete-node-in-a-linked-list/README.md create mode 100644 delete-node-in-a-linked-list/Solution.java create mode 100644 delete-node-in-a-linked-list/index.md create mode 100644 search-a-2d-matrix-ii/README.md create mode 100644 search-a-2d-matrix-ii/Solution.java create mode 100644 search-a-2d-matrix-ii/index.md diff --git a/delete-node-in-a-linked-list/README.md b/delete-node-in-a-linked-list/README.md new file mode 100644 index 0000000..e69de29 diff --git a/delete-node-in-a-linked-list/Solution.java b/delete-node-in-a-linked-list/Solution.java new file mode 100644 index 0000000..9e83a6f --- /dev/null +++ b/delete-node-in-a-linked-list/Solution.java @@ -0,0 +1,14 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +public class Solution { + public void deleteNode(ListNode node) { + node.val = node.next.val; + node.next = node.next.next; + } +} diff --git a/delete-node-in-a-linked-list/index.md b/delete-node-in-a-linked-list/index.md new file mode 100644 index 0000000..80f716b --- /dev/null +++ b/delete-node-in-a-linked-list/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Delete Node in a Linked List +date: 2015-07-26 14:42:29+08:00 +leetcode_id: 237 +--- +{% include_relative README.md %} diff --git a/search-a-2d-matrix-ii/README.md b/search-a-2d-matrix-ii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/search-a-2d-matrix-ii/Solution.java b/search-a-2d-matrix-ii/Solution.java new file mode 100644 index 0000000..dbd55ab --- /dev/null +++ b/search-a-2d-matrix-ii/Solution.java @@ -0,0 +1,32 @@ +public class Solution { + + boolean searchMatrix(int[][] matrix, int stX, int stY, int edX, int edY, int target) { + + if (stX >= edX || stY >= edY) return false; + + int max = matrix[edX - 1][edY - 1]; + int min = matrix[stX][stY]; + + // min <= target <= max + if (min <= target && target <= max){ + + int mdX = (stX + edX) / 2; + int mdY = (stY + edY) / 2; + + if(matrix[mdX][mdY] == target){ + return true; + } + + return searchMatrix(matrix, stX, stY, mdX, mdY, target) || + searchMatrix(matrix, stX, mdY, mdX, edY, target) || + searchMatrix(matrix, mdX, stY, edX, mdY, target) || + searchMatrix(matrix, mdX, mdY, edX, edY, target); + } + + return false; + } + + public boolean searchMatrix(int[][] matrix, int target) { + return searchMatrix(matrix, 0, 0, matrix.length, matrix[0].length, target); + } +} diff --git a/search-a-2d-matrix-ii/index.md b/search-a-2d-matrix-ii/index.md new file mode 100644 index 0000000..c67abeb --- /dev/null +++ b/search-a-2d-matrix-ii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Search a 2D Matrix II +date: 2015-07-26 14:40:48+08:00 +leetcode_id: 240 +--- +{% include_relative README.md %} From d7254556ea31d6dda0b9015fae7a136ac9dac9fe Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 26 Jul 2015 16:54:32 +0800 Subject: [PATCH 58/79] add lca --- .../README.md | 0 .../Solution.java | 57 +++++++++++++++++++ .../index.md | 7 +++ 3 files changed, 64 insertions(+) create mode 100644 lowest-common-ancestor-of-a-binary-tree/README.md create mode 100644 lowest-common-ancestor-of-a-binary-tree/Solution.java create mode 100644 lowest-common-ancestor-of-a-binary-tree/index.md diff --git a/lowest-common-ancestor-of-a-binary-tree/README.md b/lowest-common-ancestor-of-a-binary-tree/README.md new file mode 100644 index 0000000..e69de29 diff --git a/lowest-common-ancestor-of-a-binary-tree/Solution.java b/lowest-common-ancestor-of-a-binary-tree/Solution.java new file mode 100644 index 0000000..99fef31 --- /dev/null +++ b/lowest-common-ancestor-of-a-binary-tree/Solution.java @@ -0,0 +1,57 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +public class Solution { + + TreeNode lca; + + TreeNode other; + + boolean containOther(TreeNode root){ + + if(root == null) return false; + + if(root == other) return true; + + return containOther(root.left) || containOther(root.right); + } + + void inorder(TreeNode root, TreeNode p, TreeNode q){ + if(lca != null) return; + + if(root == null) return; + + if(other == null) inorder(root.left, p, q); + + if(other == null){ + if(root == p){ + other = q; + } else if (root == q){ + other = p; + } + } + + if(other != null){ + // left contain one, need other + if(root == other || containOther(root.right)){ + lca = root; + } + } + + if(other == null) inorder(root.right, p, q); + } + + + public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { + // a bit ugly + inorder(root, p, q); + + return lca; + } +} diff --git a/lowest-common-ancestor-of-a-binary-tree/index.md b/lowest-common-ancestor-of-a-binary-tree/index.md new file mode 100644 index 0000000..ef8ac7f --- /dev/null +++ b/lowest-common-ancestor-of-a-binary-tree/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Lowest Common Ancestor of a Binary Tree +date: 2015-07-26 16:03:27+08:00 +leetcode_id: 236 +--- +{% include_relative README.md %} From e11b290d1c5ea187489609401aa7d282840071b1 Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 26 Jul 2015 16:56:10 +0800 Subject: [PATCH 59/79] add sliding win max --- sliding-window-maximum/README.md | 0 sliding-window-maximum/Solution.java | 52 ++++++++++++++++++++++++++++ sliding-window-maximum/index.md | 7 ++++ 3 files changed, 59 insertions(+) create mode 100644 sliding-window-maximum/README.md create mode 100644 sliding-window-maximum/Solution.java create mode 100644 sliding-window-maximum/index.md diff --git a/sliding-window-maximum/README.md b/sliding-window-maximum/README.md new file mode 100644 index 0000000..e69de29 diff --git a/sliding-window-maximum/Solution.java b/sliding-window-maximum/Solution.java new file mode 100644 index 0000000..947c970 --- /dev/null +++ b/sliding-window-maximum/Solution.java @@ -0,0 +1,52 @@ +public class Solution { + + static class SlidingMaxQueue { + + int[] nums; + int k; + + LinkedList queue = new LinkedList<>(); + + SlidingMaxQueue(int[] nums, int k){ + this.nums = nums; + this.k = k; + } + + int max(){ + return nums[queue.peekFirst()]; + } + + void add(int i){ + + if(i >= nums.length) return; + + // remove invalid index + while(!queue.isEmpty() && queue.peekFirst() <= i - k){ + queue.pollFirst(); + } + + // remove nums < current; + while(!queue.isEmpty() && nums[queue.peekLast()] < nums[i]){ + queue.pollLast(); + } + + queue.add(i); + } + } + + public int[] maxSlidingWindow(int[] nums, int k) { + + int[] T = new int[Math.min(nums.length - k + 1, nums.length)]; + + SlidingMaxQueue Q = new SlidingMaxQueue(nums, k); + + Q.add(0); + + for(int i = 1; i <= nums.length; i++){ + T[Math.max(i - k, 0)] = Q.max(); + Q.add(i); + } + + return T; + } +} diff --git a/sliding-window-maximum/index.md b/sliding-window-maximum/index.md new file mode 100644 index 0000000..bdcd880 --- /dev/null +++ b/sliding-window-maximum/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Sliding Window Maximum +date: 2015-07-26 16:53:20+08:00 +leetcode_id: 239 +--- +{% include_relative README.md %} From d0a37287582769fda95d5579248a4aa305d09530 Mon Sep 17 00:00:00 2001 From: tgic Date: Sun, 26 Jul 2015 17:24:13 +0800 Subject: [PATCH 60/79] add product of array --- product-of-array-except-self/README.md | 0 product-of-array-except-self/Solution.java | 25 ++++++++++++++++++++++ product-of-array-except-self/index.md | 7 ++++++ 3 files changed, 32 insertions(+) create mode 100644 product-of-array-except-self/README.md create mode 100644 product-of-array-except-self/Solution.java create mode 100644 product-of-array-except-self/index.md diff --git a/product-of-array-except-self/README.md b/product-of-array-except-self/README.md new file mode 100644 index 0000000..e69de29 diff --git a/product-of-array-except-self/Solution.java b/product-of-array-except-self/Solution.java new file mode 100644 index 0000000..6a04e4a --- /dev/null +++ b/product-of-array-except-self/Solution.java @@ -0,0 +1,25 @@ +public class Solution { + public int[] productExceptSelf(int[] nums) { + int[] output = new int[nums.length]; + + if(nums.length == 0) return output; + + output[0] = nums[0]; + + for(int i = 1; i < nums.length; i++){ + output[i] = output[i - 1] * nums[i]; + } + + output[nums.length - 1] = output[nums.length - 2] * 1; + + int t = nums[nums.length - 1]; + for(int i = output.length - 2; i > 0 ; i--){ + output[i] = t * output[i - 1]; + t *= nums[i]; + } + + output[0] = t; + + return output; + } +} diff --git a/product-of-array-except-self/index.md b/product-of-array-except-self/index.md new file mode 100644 index 0000000..f20523b --- /dev/null +++ b/product-of-array-except-self/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Product of Array Except Self +date: 2015-07-26 17:23:07+08:00 +leetcode_id: 238 +--- +{% include_relative README.md %} From 4efb32f594c72fb9d70554bfc71ded6a2228e9f6 Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 29 Jul 2015 18:05:42 +0800 Subject: [PATCH 61/79] Update README.md --- kth-largest-element-in-an-array/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/kth-largest-element-in-an-array/README.md b/kth-largest-element-in-an-array/README.md index e69de29..0163a90 100644 --- a/kth-largest-element-in-an-array/README.md +++ b/kth-largest-element-in-an-array/README.md @@ -0,0 +1 @@ +[An `O(n)` solution in Guava](https://github.com/google/guava/blob/v18.0/guava/src/com/google/common/collect/Ordering.java#L666) From d3267352c2dd7a14d04167a8be294b4f767ab0f7 Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 6 Aug 2015 22:29:20 +0800 Subject: [PATCH 62/79] add new codes --- count-univalue-subtrees/README.md | 0 count-univalue-subtrees/Solution.java | 41 ++++++++++ count-univalue-subtrees/index.md | 7 ++ different-ways-to-add-parentheses/README.md | 0 .../Solution.java | 81 +++++++++++++++++++ different-ways-to-add-parentheses/index.md | 7 ++ flatten-2d-vector/README.md | 0 flatten-2d-vector/Solution.java | 33 ++++++++ flatten-2d-vector/Vector2D.java | 1 + flatten-2d-vector/index.md | 7 ++ strobogrammatic-number/README.md | 0 strobogrammatic-number/Solution.java | 33 ++++++++ strobogrammatic-number/index.md | 7 ++ valid-anagram/README.md | 0 valid-anagram/Solution.java | 11 +++ valid-anagram/index.md | 7 ++ 16 files changed, 235 insertions(+) create mode 100644 count-univalue-subtrees/README.md create mode 100644 count-univalue-subtrees/Solution.java create mode 100644 count-univalue-subtrees/index.md create mode 100644 different-ways-to-add-parentheses/README.md create mode 100644 different-ways-to-add-parentheses/Solution.java create mode 100644 different-ways-to-add-parentheses/index.md create mode 100644 flatten-2d-vector/README.md create mode 100644 flatten-2d-vector/Solution.java create mode 120000 flatten-2d-vector/Vector2D.java create mode 100644 flatten-2d-vector/index.md create mode 100644 strobogrammatic-number/README.md create mode 100644 strobogrammatic-number/Solution.java create mode 100644 strobogrammatic-number/index.md create mode 100644 valid-anagram/README.md create mode 100644 valid-anagram/Solution.java create mode 100644 valid-anagram/index.md diff --git a/count-univalue-subtrees/README.md b/count-univalue-subtrees/README.md new file mode 100644 index 0000000..e69de29 diff --git a/count-univalue-subtrees/Solution.java b/count-univalue-subtrees/Solution.java new file mode 100644 index 0000000..d55e7ef --- /dev/null +++ b/count-univalue-subtrees/Solution.java @@ -0,0 +1,41 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +import java.util.Objects; // remove after leetcode support import this by default + +public class Solution { + + void patch(Integer[] v, TreeNode parent, TreeNode me){ + if(me == null){ + v[1] = parent.val; + } + } + + // [count, uniq val] + Integer[] _countUnivalSubtrees(TreeNode root) { + + if(root == null) return new Integer[]{0, null}; + + Integer[] left = _countUnivalSubtrees(root.left); + patch(left, root, root.left); + + Integer[] right = _countUnivalSubtrees(root.right); + patch(right, root, root.right); + + if(Objects.equals(left[1], root.val) && Objects.equals(right[1], root.val)){ + return new Integer[]{left[0] + right[0] + 1, root.val}; + } + + return new Integer[]{left[0] + right[0], null}; + } + + public int countUnivalSubtrees(TreeNode root) { + return _countUnivalSubtrees(root)[0]; + } +} diff --git a/count-univalue-subtrees/index.md b/count-univalue-subtrees/index.md new file mode 100644 index 0000000..be868a9 --- /dev/null +++ b/count-univalue-subtrees/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Count Univalue Subtrees +date: 2015-08-06 22:25:20+08:00 +leetcode_id: 250 +--- +{% include_relative README.md %} diff --git a/different-ways-to-add-parentheses/README.md b/different-ways-to-add-parentheses/README.md new file mode 100644 index 0000000..e69de29 diff --git a/different-ways-to-add-parentheses/Solution.java b/different-ways-to-add-parentheses/Solution.java new file mode 100644 index 0000000..b1ace31 --- /dev/null +++ b/different-ways-to-add-parentheses/Solution.java @@ -0,0 +1,81 @@ +public class Solution { + + int calc(int l, int r, char op){ + switch(op){ + case '+': + return l + r; + case '-': + return l - r; + case '*': + return l * r; + } + + // unreachable + throw new RuntimeException(); + } + + List merge(Listleft, List right, char op){ + if(left.isEmpty()) return right; + if(right.isEmpty()) return left; + + List rt = new ArrayList<>(); + + for(int l : left){ + for(int r : right){ + rt.add(calc(l, r, op)); + } + } + + return rt; + } + + List diffWaysToCompute(Integer[] nums, int nst, int ned, Character[] ops){ + + List rt = new ArrayList<>(); + + if(nst + 1 == ned){ + rt.add(nums[nst]); + return rt; + } + + for(int i = nst; i < ned - 1; i++){ + char op = ops[i]; + List left = diffWaysToCompute(nums, nst, i + 1, ops); + List right = diffWaysToCompute(nums, i + 1, ned, ops); + + rt.addAll(merge(left, right, op)); + } + + return rt; + } + + public List diffWaysToCompute(String input) { + Scanner scanner = new Scanner(input); + scanner.useDelimiter(""); + + List nums = new ArrayList<>(); + List ops = new ArrayList<>(); + + while(scanner.hasNext()){ + boolean num = false; + int buf = 0; + while (scanner.hasNextInt()){ + num = true; + buf = buf * 10 + scanner.nextInt(); + } + + if(num){ + nums.add(buf); + continue; + } + + Character op = scanner.next().charAt(0); + ops.add(op); + } + + Integer[] _nums = nums.toArray(new Integer[0]); + Character[] _ops = ops.toArray(new Character[0]); + + return diffWaysToCompute(_nums, 0, _nums.length, _ops); + } +} diff --git a/different-ways-to-add-parentheses/index.md b/different-ways-to-add-parentheses/index.md new file mode 100644 index 0000000..e49e354 --- /dev/null +++ b/different-ways-to-add-parentheses/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Different Ways to Add Parentheses +date: 2015-08-06 22:21:28+08:00 +leetcode_id: 241 +--- +{% include_relative README.md %} diff --git a/flatten-2d-vector/README.md b/flatten-2d-vector/README.md new file mode 100644 index 0000000..e69de29 diff --git a/flatten-2d-vector/Solution.java b/flatten-2d-vector/Solution.java new file mode 100644 index 0000000..9422eeb --- /dev/null +++ b/flatten-2d-vector/Solution.java @@ -0,0 +1,33 @@ +public class Vector2D { + + Iterator> outterIter; + Iterator innerIter = Collections.emptyIterator(); + + public Vector2D(List> vec2d) { + outterIter = vec2d.iterator(); + } + + public int next() { + return innerIter.next(); + } + + public boolean hasNext() { + if(innerIter.hasNext()){ + return true; + } + + if(!outterIter.hasNext()){ + return false; + } + + innerIter = outterIter.next().iterator(); + + return hasNext(); + } +} + +/** + * Your Vector2D object will be instantiated and called as such: + * Vector2D i = new Vector2D(vec2d); + * while (i.hasNext()) v[f()] = i.next(); + */ diff --git a/flatten-2d-vector/Vector2D.java b/flatten-2d-vector/Vector2D.java new file mode 120000 index 0000000..e570129 --- /dev/null +++ b/flatten-2d-vector/Vector2D.java @@ -0,0 +1 @@ +Solution.java \ No newline at end of file diff --git a/flatten-2d-vector/index.md b/flatten-2d-vector/index.md new file mode 100644 index 0000000..e08838a --- /dev/null +++ b/flatten-2d-vector/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Flatten 2D Vector +date: 2015-08-06 22:27:26+08:00 +leetcode_id: 251 +--- +{% include_relative README.md %} diff --git a/strobogrammatic-number/README.md b/strobogrammatic-number/README.md new file mode 100644 index 0000000..e69de29 diff --git a/strobogrammatic-number/Solution.java b/strobogrammatic-number/Solution.java new file mode 100644 index 0000000..b3fea63 --- /dev/null +++ b/strobogrammatic-number/Solution.java @@ -0,0 +1,33 @@ +public class Solution { + + static final char[][] GOOD_PATTERNS = { + {'9', '6'}, + {'6', '9'}, + {'1', '1'}, + {'8', '8'}, + {'0', '0'}, + }; + + boolean isStrobogrammatic(char l, char r){ + char[] s = new char[]{l, r}; + + for(char[] g : GOOD_PATTERNS){ + if(Arrays.equals(g, s)){ + return true; + } + } + return false; + } + + public boolean isStrobogrammatic(String num) { + char[] S = num.toCharArray(); + + for(int i = 0; i <= S.length / 2; i++){ + if(!isStrobogrammatic(S[i], S[S.length - 1 - i])){ + return false; + } + } + + return true; + } +} diff --git a/strobogrammatic-number/index.md b/strobogrammatic-number/index.md new file mode 100644 index 0000000..36a151a --- /dev/null +++ b/strobogrammatic-number/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Strobogrammatic Number +date: 2015-08-06 22:24:30+08:00 +leetcode_id: 246 +--- +{% include_relative README.md %} diff --git a/valid-anagram/README.md b/valid-anagram/README.md new file mode 100644 index 0000000..e69de29 diff --git a/valid-anagram/Solution.java b/valid-anagram/Solution.java new file mode 100644 index 0000000..5e64451 --- /dev/null +++ b/valid-anagram/Solution.java @@ -0,0 +1,11 @@ +public class Solution { + public boolean isAnagram(String s, String t) { + char[] S = s.toCharArray(); + char[] T = t.toCharArray(); + + Arrays.sort(S); + Arrays.sort(T); + + return Arrays.equals(S, T); + } +} diff --git a/valid-anagram/index.md b/valid-anagram/index.md new file mode 100644 index 0000000..cec6d9b --- /dev/null +++ b/valid-anagram/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Valid Anagram +date: 2015-08-06 22:22:20+08:00 +leetcode_id: 242 +--- +{% include_relative README.md %} From 743d3af40316906bdf4135d02dfb8dbd8054ce12 Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 12 Aug 2015 20:04:52 +0800 Subject: [PATCH 63/79] add meeting roooms --- meeting-rooms-ii/README.md | 0 meeting-rooms-ii/Solution.java | 46 ++++++++++++++++++++++++++++++++++ meeting-rooms-ii/index.md | 7 ++++++ meeting-rooms/README.md | 0 meeting-rooms/Solution.java | 26 +++++++++++++++++++ meeting-rooms/index.md | 7 ++++++ 6 files changed, 86 insertions(+) create mode 100644 meeting-rooms-ii/README.md create mode 100644 meeting-rooms-ii/Solution.java create mode 100644 meeting-rooms-ii/index.md create mode 100644 meeting-rooms/README.md create mode 100644 meeting-rooms/Solution.java create mode 100644 meeting-rooms/index.md diff --git a/meeting-rooms-ii/README.md b/meeting-rooms-ii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/meeting-rooms-ii/Solution.java b/meeting-rooms-ii/Solution.java new file mode 100644 index 0000000..7f00416 --- /dev/null +++ b/meeting-rooms-ii/Solution.java @@ -0,0 +1,46 @@ +/** + * Definition for an interval. + * public class Interval { + * int start; + * int end; + * Interval() { start = 0; end = 0; } + * Interval(int s, int e) { start = s; end = e; } + * } + */ +public class Solution { + + static class RoomAllocator { + + List rooms = new ArrayList<>(); + + int currentTime = -1; + + void alloc(Interval room){ + for(int i = 0; i < rooms.size(); i++){ + if(rooms.get(i).end <= currentTime){ + rooms.set(i, room); + return; + } + } + + rooms.add(room); + } + + void freeBefore(int time){ + currentTime = time; + } + } + + public int minMeetingRooms(Interval[] intervals) { + Arrays.sort(intervals, (a, b) -> a.start - b.start); + + RoomAllocator ra = new RoomAllocator(); + + for(Interval i : intervals){ + ra.freeBefore(i.start); + ra.alloc(i); + } + + return ra.rooms.size(); + } +} diff --git a/meeting-rooms-ii/index.md b/meeting-rooms-ii/index.md new file mode 100644 index 0000000..cf55133 --- /dev/null +++ b/meeting-rooms-ii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Meeting Rooms II +date: 2015-08-12 20:03:46+08:00 +leetcode_id: 253 +--- +{% include_relative README.md %} diff --git a/meeting-rooms/README.md b/meeting-rooms/README.md new file mode 100644 index 0000000..e69de29 diff --git a/meeting-rooms/Solution.java b/meeting-rooms/Solution.java new file mode 100644 index 0000000..c7d0eba --- /dev/null +++ b/meeting-rooms/Solution.java @@ -0,0 +1,26 @@ +/** + * Definition for an interval. + * public class Interval { + * int start; + * int end; + * Interval() { start = 0; end = 0; } + * Interval(int s, int e) { start = s; end = e; } + * } + */ +public class Solution { + public boolean canAttendMeetings(Interval[] intervals) { + Arrays.sort(intervals, (a, b) -> a.start - b.start); + + int maxend = 0; + + for(Interval i : intervals){ + if(i.start < maxend){ + return false; + } + + maxend = Math.max(maxend, i.end); + } + + return true; + } +} diff --git a/meeting-rooms/index.md b/meeting-rooms/index.md new file mode 100644 index 0000000..3b7e736 --- /dev/null +++ b/meeting-rooms/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Meeting Rooms +date: 2015-08-12 20:02:37+08:00 +leetcode_id: 252 +--- +{% include_relative README.md %} From 21543312322172c9e2725778e9e5a52e642be83c Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 12 Aug 2015 23:05:38 +0800 Subject: [PATCH 64/79] add factor comb --- factor-combinations/README.md | 0 factor-combinations/Solution.java | 26 ++++++++++++++++++++++++++ factor-combinations/index.md | 7 +++++++ 3 files changed, 33 insertions(+) create mode 100644 factor-combinations/README.md create mode 100644 factor-combinations/Solution.java create mode 100644 factor-combinations/index.md diff --git a/factor-combinations/README.md b/factor-combinations/README.md new file mode 100644 index 0000000..e69de29 diff --git a/factor-combinations/Solution.java b/factor-combinations/Solution.java new file mode 100644 index 0000000..05a8d9d --- /dev/null +++ b/factor-combinations/Solution.java @@ -0,0 +1,26 @@ +public class Solution { + List> getFactors(int n, int low, int high) { + List> found = new ArrayList<>(); + + if(low <= n && n < high){ + found.add(Arrays.asList(n)); + } + + for(int i = low; n / i >= low; i++){ + if(n % i == 0){ + for(List sub : getFactors(n / i, i, n)){ + List l = new ArrayList<>(); + l.add(i); + l.addAll(sub); + found.add(l); + } + } + } + + return found; + } + + public List> getFactors(int n) { + return getFactors(n, 2, n); + } +} diff --git a/factor-combinations/index.md b/factor-combinations/index.md new file mode 100644 index 0000000..0d45107 --- /dev/null +++ b/factor-combinations/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Factor Combinations +date: 2015-08-12 23:03:42+08:00 +leetcode_id: 254 +--- +{% include_relative README.md %} From 586de58fd85c3c7ae252a25f21d6e1112edc6ce3 Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 17 Aug 2015 00:37:12 +0800 Subject: [PATCH 65/79] add 4 new codes --- add-digits/README.md | 0 add-digits/Solution.java | 5 +++ add-digits/index.md | 7 +++ binary-tree-paths/README.md | 0 binary-tree-paths/Solution.java | 38 ++++++++++++++++ binary-tree-paths/index.md | 7 +++ paint-house/README.md | 0 paint-house/Solution.java | 45 +++++++++++++++++++ paint-house/index.md | 7 +++ .../README.md | 0 .../Solution.java | 31 +++++++++++++ .../index.md | 7 +++ 12 files changed, 147 insertions(+) create mode 100644 add-digits/README.md create mode 100644 add-digits/Solution.java create mode 100644 add-digits/index.md create mode 100644 binary-tree-paths/README.md create mode 100644 binary-tree-paths/Solution.java create mode 100644 binary-tree-paths/index.md create mode 100644 paint-house/README.md create mode 100644 paint-house/Solution.java create mode 100644 paint-house/index.md create mode 100644 verify-preorder-sequence-in-binary-search-tree/README.md create mode 100644 verify-preorder-sequence-in-binary-search-tree/Solution.java create mode 100644 verify-preorder-sequence-in-binary-search-tree/index.md diff --git a/add-digits/README.md b/add-digits/README.md new file mode 100644 index 0000000..e69de29 diff --git a/add-digits/Solution.java b/add-digits/Solution.java new file mode 100644 index 0000000..ef36b1f --- /dev/null +++ b/add-digits/Solution.java @@ -0,0 +1,5 @@ +public class Solution { + public int addDigits(int num) { + return num - (num - 1) / 9 * 9; + } +} diff --git a/add-digits/index.md b/add-digits/index.md new file mode 100644 index 0000000..0842b3f --- /dev/null +++ b/add-digits/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Add Digits +date: 2015-08-17 00:35:59+08:00 +leetcode_id: 258 +--- +{% include_relative README.md %} diff --git a/binary-tree-paths/README.md b/binary-tree-paths/README.md new file mode 100644 index 0000000..e69de29 diff --git a/binary-tree-paths/Solution.java b/binary-tree-paths/Solution.java new file mode 100644 index 0000000..7cbeaa5 --- /dev/null +++ b/binary-tree-paths/Solution.java @@ -0,0 +1,38 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +public class Solution { + + List merge(int v, List subPath){ + return subPath.stream() + .map(p -> v + "->" + p) + .collect(Collectors.toList()); + } + + public List binaryTreePaths(TreeNode root) { + List path = new ArrayList<>(); + + if(root == null) return path; + + if(root.left == null && root.right == null) { + // leaf + return Arrays.asList("" + root.val); + } + + if(root.left != null){ + path.addAll(merge(root.val, binaryTreePaths(root.left))); + } + + if(root.right != null) { + path.addAll(merge(root.val, binaryTreePaths(root.right))); + } + + return path; + } +} diff --git a/binary-tree-paths/index.md b/binary-tree-paths/index.md new file mode 100644 index 0000000..d6d8bae --- /dev/null +++ b/binary-tree-paths/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Binary Tree Paths +date: 2015-08-16 23:34:16+08:00 +leetcode_id: 257 +--- +{% include_relative README.md %} diff --git a/paint-house/README.md b/paint-house/README.md new file mode 100644 index 0000000..e69de29 diff --git a/paint-house/Solution.java b/paint-house/Solution.java new file mode 100644 index 0000000..9cb1899 --- /dev/null +++ b/paint-house/Solution.java @@ -0,0 +1,45 @@ +public class Solution { + static final int RED = 0b001; + static final int BLUE = 0b010; + static final int GREEN = 0b100; + + static final int NONE = 0b000; + static final int ALL = 0b111; + + static final int[] COLORS = {RED, BLUE, GREEN}; + + int index(int color){ + return color / 2; + } + + int min(int[] costs, int exclude){ + int includes = ~(ALL & exclude); + + int min = Integer.MAX_VALUE; + for(int c : COLORS){ + if((c & includes) == c){ + min = Math.min(costs[index(c)], min); + } + } + + return min; + } + + public int minCost(int[][] costs) { + if(costs.length == 0) return 0; + + int[][] minCosts = new int[costs.length][COLORS.length]; + + for(int c : COLORS){ + minCosts[0][index(c)] = costs[0][index(c)]; + } + + for(int i = 1; i < costs.length; i++){ + for(int c : COLORS){ + minCosts[i][index(c)] = costs[i][index(c)] + min(minCosts[i - 1], c); + } + } + + return min(minCosts[costs.length - 1], NONE); + } +} diff --git a/paint-house/index.md b/paint-house/index.md new file mode 100644 index 0000000..37be63b --- /dev/null +++ b/paint-house/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Paint House +date: 2015-08-17 00:33:10+08:00 +leetcode_id: 256 +--- +{% include_relative README.md %} diff --git a/verify-preorder-sequence-in-binary-search-tree/README.md b/verify-preorder-sequence-in-binary-search-tree/README.md new file mode 100644 index 0000000..e69de29 diff --git a/verify-preorder-sequence-in-binary-search-tree/Solution.java b/verify-preorder-sequence-in-binary-search-tree/Solution.java new file mode 100644 index 0000000..5ff0cb8 --- /dev/null +++ b/verify-preorder-sequence-in-binary-search-tree/Solution.java @@ -0,0 +1,31 @@ +public class Solution { + public boolean verifyPreorder(int[] preorder) { + int[] inorder = Arrays.copyOf(preorder, preorder.length); + Arrays.sort(inorder); + + LinkedList stack = new LinkedList<>(); // fuck + + stack.push(0); + stack.push(inorder.length); + + for(int p = 0; p < preorder.length; /*void*/){ + int ed = stack.pop(); + int st = stack.pop(); + + if(st >= ed) continue; + + int root = preorder[p++]; + + int i = Arrays.binarySearch(inorder, st, ed, root); + if(i < 0) return false; + + stack.push(i + 1); + stack.push(ed); + + stack.push(st); + stack.push(i); + } + + return true; + } +} diff --git a/verify-preorder-sequence-in-binary-search-tree/index.md b/verify-preorder-sequence-in-binary-search-tree/index.md new file mode 100644 index 0000000..222f175 --- /dev/null +++ b/verify-preorder-sequence-in-binary-search-tree/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: verify-preorder-sequence-in-binary-search-tree/ +date: 2015-08-15 11:47:30+08:00 +leetcode_id: 255 +--- +{% include_relative README.md %} From 3df4933955319ab0728151fd3db908ef8b07d39a Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 17 Aug 2015 15:11:18 +0800 Subject: [PATCH 66/79] remove import java.util.Objects --- count-univalue-subtrees/Solution.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/count-univalue-subtrees/Solution.java b/count-univalue-subtrees/Solution.java index d55e7ef..53c86e4 100644 --- a/count-univalue-subtrees/Solution.java +++ b/count-univalue-subtrees/Solution.java @@ -7,8 +7,6 @@ * TreeNode(int x) { val = x; } * } */ -import java.util.Objects; // remove after leetcode support import this by default - public class Solution { void patch(Integer[] v, TreeNode parent, TreeNode me){ From 927c01bcbea24433fcc7de2277cb293372600bc4 Mon Sep 17 00:00:00 2001 From: tgic Date: Wed, 19 Aug 2015 22:58:07 +0800 Subject: [PATCH 67/79] Update index.md --- verify-preorder-sequence-in-binary-search-tree/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/verify-preorder-sequence-in-binary-search-tree/index.md b/verify-preorder-sequence-in-binary-search-tree/index.md index 222f175..48b4017 100644 --- a/verify-preorder-sequence-in-binary-search-tree/index.md +++ b/verify-preorder-sequence-in-binary-search-tree/index.md @@ -1,6 +1,6 @@ --- layout: solution -title: verify-preorder-sequence-in-binary-search-tree/ +title: Verify Preorder Sequence in Binary Search Tree date: 2015-08-15 11:47:30+08:00 leetcode_id: 255 --- From 0999280a4eb6b1fb0975cb719105ab2f5462a63c Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 24 Aug 2015 12:57:04 +0800 Subject: [PATCH 68/79] smarter skeleton.sh --- skeleton.sh | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/skeleton.sh b/skeleton.sh index fa3c0c7..9cf62c8 100755 --- a/skeleton.sh +++ b/skeleton.sh @@ -7,6 +7,11 @@ if [ -z "$leetcode_name" ]; then exit; fi +info=`curl -s https://leetcode.com/problemset/algorithms/ | grep missing-number -B 2` +IFS= +leetcode_id=`(sed 's/\\(.*\\)<\\/td>/\\1/' | sed 's/^ *//') < <(echo $info | head -n 1)` +title=`(sed 's/\\(.*\\)<\\/a>/\\1/' | sed 's/^ *//') < <(echo $info | tail -n 1)` + now=`date --rfc-3339=seconds` mkdir -p $leetcode_name @@ -16,9 +21,9 @@ mkdir -p $leetcode_name cat > $leetcode_name/index.md < Date: Mon, 24 Aug 2015 12:57:22 +0800 Subject: [PATCH 69/79] too old to catch up with leetcode --- missing-number/README.md | 0 missing-number/Solution.java | 36 ++++++++++++++++++++++++++++ missing-number/index.md | 7 ++++++ shortest-word-distance/README.md | 0 shortest-word-distance/Solution.java | 23 ++++++++++++++++++ shortest-word-distance/index.md | 7 ++++++ 6 files changed, 73 insertions(+) create mode 100644 missing-number/README.md create mode 100644 missing-number/Solution.java create mode 100644 missing-number/index.md create mode 100644 shortest-word-distance/README.md create mode 100644 shortest-word-distance/Solution.java create mode 100644 shortest-word-distance/index.md diff --git a/missing-number/README.md b/missing-number/README.md new file mode 100644 index 0000000..e69de29 diff --git a/missing-number/Solution.java b/missing-number/Solution.java new file mode 100644 index 0000000..6d7e053 --- /dev/null +++ b/missing-number/Solution.java @@ -0,0 +1,36 @@ +public class Solution { + + void swap(int[] nums, int i, int j){ + int t = nums[i]; + nums[i] = nums[j]; + nums[j] = t; + } + + void sort(int[] nums){ + + for(int i = 0; i < nums.length; i++){ + while(nums[i] != i){ + if(nums[i] < 0) break; + + if(nums[i] >= nums.length) { + nums[i] = -1; + break; // drop + } + + swap(nums, nums[i], i); + } + } + } + + public int missingNumber(int[] nums) { + sort(nums); + + for(int i = 0; i < nums.length; i++){ + if(nums[i] != i){ + return i; + } + } + + return nums.length; + } +} diff --git a/missing-number/index.md b/missing-number/index.md new file mode 100644 index 0000000..8ec826c --- /dev/null +++ b/missing-number/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Missing Number +date: 2015-08-24 12:56:25+08:00 +leetcode_id: 268 +--- +{% include_relative README.md %} diff --git a/shortest-word-distance/README.md b/shortest-word-distance/README.md new file mode 100644 index 0000000..e69de29 diff --git a/shortest-word-distance/Solution.java b/shortest-word-distance/Solution.java new file mode 100644 index 0000000..2510f2e --- /dev/null +++ b/shortest-word-distance/Solution.java @@ -0,0 +1,23 @@ +public class Solution { + public int shortestDistance(String[] words, String word1, String word2) { + + int len = words.length; + + int i1 = -1; + int i2 = -1; + + for(int i = 0; i < words.length; i++){ + if(word1.equals(words[i])){ + i1 = i; + }else if(word2.equals(words[i])){ + i2 = i; + } + + if(i1 >= 0 && i2 >= 0){ + len = Math.min(len, Math.abs(i1 - i2)); + } + } + + return len; + } +} diff --git a/shortest-word-distance/index.md b/shortest-word-distance/index.md new file mode 100644 index 0000000..93c70ba --- /dev/null +++ b/shortest-word-distance/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Shortest Word Distance +date: 2015-08-17 01:11:54+08:00 +leetcode_id: 243 +--- +{% include_relative README.md %} From 9b8ff3cea9df412882f1686dd0c1bb6a8f77ce20 Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 24 Aug 2015 17:23:01 +0800 Subject: [PATCH 70/79] fix typo --- skeleton.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/skeleton.sh b/skeleton.sh index 9cf62c8..740d609 100755 --- a/skeleton.sh +++ b/skeleton.sh @@ -7,7 +7,7 @@ if [ -z "$leetcode_name" ]; then exit; fi -info=`curl -s https://leetcode.com/problemset/algorithms/ | grep missing-number -B 2` +info=`curl -s https://leetcode.com/problemset/algorithms/ | grep $leetcode_name -B 2` IFS= leetcode_id=`(sed 's/\\(.*\\)<\\/td>/\\1/' | sed 's/^ *//') < <(echo $info | head -n 1)` title=`(sed 's/\\(.*\\)<\\/a>/\\1/' | sed 's/^ *//') < <(echo $info | tail -n 1)` From eef54108e6fc90202ca3e89727288ee51bcc2de3 Mon Sep 17 00:00:00 2001 From: tgic Date: Mon, 24 Aug 2015 17:23:17 +0800 Subject: [PATCH 71/79] add easy one and test skeleton.sh --- palindrome-permutation/README.md | 3 +++ palindrome-permutation/Solution.java | 29 ++++++++++++++++++++++++++++ palindrome-permutation/index.md | 7 +++++++ 3 files changed, 39 insertions(+) create mode 100644 palindrome-permutation/README.md create mode 100644 palindrome-permutation/Solution.java create mode 100644 palindrome-permutation/index.md diff --git a/palindrome-permutation/README.md b/palindrome-permutation/README.md new file mode 100644 index 0000000..6d48e7a --- /dev/null +++ b/palindrome-permutation/README.md @@ -0,0 +1,3 @@ +## Counting Map + + diff --git a/palindrome-permutation/Solution.java b/palindrome-permutation/Solution.java new file mode 100644 index 0000000..68e78bb --- /dev/null +++ b/palindrome-permutation/Solution.java @@ -0,0 +1,29 @@ +public class Solution { + public boolean canPermutePalindrome(String s) { + Map m = new HashMap<>(); + + for(char c : s.toCharArray()){ + Integer i = m.get(c); + + if(i == null){ + m.put(c, 1); + } else { + m.put(c, i + 1); + } + } + + int single = 0; + + for(int v : m.values()){ + if(v % 2 == 1){ + single++; + } + + if(single > 1){ + return false; + } + } + + return true; + } +} diff --git a/palindrome-permutation/index.md b/palindrome-permutation/index.md new file mode 100644 index 0000000..9444ba2 --- /dev/null +++ b/palindrome-permutation/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Palindrome Permutation +date: 2015-08-24 17:21:42+08:00 +leetcode_id: 267 +--- +{% include_relative README.md %} From f7b2711146f2e8932a0e1d22049ac5f4e207b9f5 Mon Sep 17 00:00:00 2001 From: tgic Date: Tue, 25 Aug 2015 01:07:29 +0800 Subject: [PATCH 72/79] add pla permutation ii and single num iii --- palindrome-permutation-ii/README.md | 0 palindrome-permutation-ii/Solution.java | 58 +++++++++++++++++++++++++ palindrome-permutation-ii/index.md | 7 +++ single-number-iii/README.md | 0 single-number-iii/Solution.java | 21 +++++++++ single-number-iii/index.md | 7 +++ 6 files changed, 93 insertions(+) create mode 100644 palindrome-permutation-ii/README.md create mode 100644 palindrome-permutation-ii/Solution.java create mode 100644 palindrome-permutation-ii/index.md create mode 100644 single-number-iii/README.md create mode 100644 single-number-iii/Solution.java create mode 100644 single-number-iii/index.md diff --git a/palindrome-permutation-ii/README.md b/palindrome-permutation-ii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/palindrome-permutation-ii/Solution.java b/palindrome-permutation-ii/Solution.java new file mode 100644 index 0000000..e62df14 --- /dev/null +++ b/palindrome-permutation-ii/Solution.java @@ -0,0 +1,58 @@ +public class Solution { + Set permute(ArrayList chars, final String single){ + + if(chars.isEmpty()){ + + return Collections.singleton(single); + } else if(chars.size() == 1) { + + return Collections.singleton(chars.get(0) + single + chars.get(0)); + } + + Set found = new HashSet<>(); + + // else + for(int i = 0; i < chars.size(); i++){ + + char c = chars.get(i); + + ArrayList rest = new ArrayList<>(chars); + rest.remove(i); + + found.addAll(permute(rest, single).stream() + .map(s -> c + s + c) + .collect(Collectors.toSet())); + } + + return found; + } + + public List generatePalindromes(String s) { + + + ArrayList chars = new ArrayList<>(); + + Set single = new HashSet<>(); + + for(char c : s.toCharArray()){ + + if(single.contains(c)){ + single.remove(c); + chars.add(c); + } else { + single.add(c); + } + } + + if(single.size() > 1) return Collections.emptyList(); + + // else + String _single = ""; + + if(single.size() == 1) { + _single = single.iterator().next() + ""; + } + + return new ArrayList<>(permute(chars, _single)); + } +} diff --git a/palindrome-permutation-ii/index.md b/palindrome-permutation-ii/index.md new file mode 100644 index 0000000..aba642c --- /dev/null +++ b/palindrome-permutation-ii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Palindrome Permutation II +date: 2015-08-25 00:48:04+08:00 +leetcode_id: 267 +--- +{% include_relative README.md %} diff --git a/single-number-iii/README.md b/single-number-iii/README.md new file mode 100644 index 0000000..e69de29 diff --git a/single-number-iii/Solution.java b/single-number-iii/Solution.java new file mode 100644 index 0000000..0d6ea7e --- /dev/null +++ b/single-number-iii/Solution.java @@ -0,0 +1,21 @@ +public class Solution { + public int[] singleNumber(int[] nums) { + int aXORb = nums[0]; + + for(int i = 1; i < nums.length; i++){ + aXORb ^= nums[i]; + } + + // this bit either in a or b + int bit = Integer.lowestOneBit(aXORb); + + int a = 0; + for(int n : nums){ + if((n & bit) == bit){ + a ^= n; + } + } + + return new int[]{a, aXORb ^ a}; + } +} diff --git a/single-number-iii/index.md b/single-number-iii/index.md new file mode 100644 index 0000000..669d318 --- /dev/null +++ b/single-number-iii/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Single Number III +date: 2015-08-25 00:56:56+08:00 +leetcode_id: 260 +--- +{% include_relative README.md %} From d63fdbd955da876c944471588f31ec7aa4c2ea84 Mon Sep 17 00:00:00 2001 From: tgic Date: Fri, 28 Aug 2015 16:23:41 +0800 Subject: [PATCH 73/79] add closeset bst value --- closest-binary-search-tree-value/README.md | 0 .../Solution.java | 34 +++++++++++++++++++ closest-binary-search-tree-value/index.md | 7 ++++ 3 files changed, 41 insertions(+) create mode 100644 closest-binary-search-tree-value/README.md create mode 100644 closest-binary-search-tree-value/Solution.java create mode 100644 closest-binary-search-tree-value/index.md diff --git a/closest-binary-search-tree-value/README.md b/closest-binary-search-tree-value/README.md new file mode 100644 index 0000000..e69de29 diff --git a/closest-binary-search-tree-value/Solution.java b/closest-binary-search-tree-value/Solution.java new file mode 100644 index 0000000..4408944 --- /dev/null +++ b/closest-binary-search-tree-value/Solution.java @@ -0,0 +1,34 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +public class Solution { + + int closestValue(int v1, int v2, double target){ + double _v1 = Math.abs(target - v1); + double _v2 = Math.abs(target - v2); + + if(_v1 < _v2) return v1; + else return v2; + } + + public int closestValue(TreeNode root, double target) { + + int closest = root.val; + + if(root.left != null){ + closest = closestValue(closestValue(root.left, target), closest, target); + } + + if(root.right != null){ + closest = closestValue(closestValue(root.right, target), closest, target); + } + + return closest; + } +} diff --git a/closest-binary-search-tree-value/index.md b/closest-binary-search-tree-value/index.md new file mode 100644 index 0000000..d5e7a94 --- /dev/null +++ b/closest-binary-search-tree-value/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Closest Binary Search Tree Value +date: 2015-08-28 14:52:37+08:00 +leetcode_id: 270 +--- +{% include_relative README.md %} From 4f3a4bac33fc7ea54a7e4f72f7c312bb4bfa2ece Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 3 Sep 2015 13:33:55 +0800 Subject: [PATCH 74/79] add encode and decode strings --- encode-and-decode-strings/Codec.java | 1 + encode-and-decode-strings/README.md | 0 encode-and-decode-strings/Solution.java | 63 +++++++++++++++++++++++++ encode-and-decode-strings/index.md | 7 +++ 4 files changed, 71 insertions(+) create mode 120000 encode-and-decode-strings/Codec.java create mode 100644 encode-and-decode-strings/README.md create mode 100644 encode-and-decode-strings/Solution.java create mode 100644 encode-and-decode-strings/index.md diff --git a/encode-and-decode-strings/Codec.java b/encode-and-decode-strings/Codec.java new file mode 120000 index 0000000..e570129 --- /dev/null +++ b/encode-and-decode-strings/Codec.java @@ -0,0 +1 @@ +Solution.java \ No newline at end of file diff --git a/encode-and-decode-strings/README.md b/encode-and-decode-strings/README.md new file mode 100644 index 0000000..e69de29 diff --git a/encode-and-decode-strings/Solution.java b/encode-and-decode-strings/Solution.java new file mode 100644 index 0000000..ae01953 --- /dev/null +++ b/encode-and-decode-strings/Solution.java @@ -0,0 +1,63 @@ +public class Codec { + + static final int MAX_LEN = Integer.toHexString(Integer.MAX_VALUE).length(); + + // lazy ... should be byte[] + static final String NUM_PATTERN = "%0" + MAX_LEN + "x"; + + String serializeNumber(int n){ + return String.format(NUM_PATTERN, n); + } + + int deserializeNumber(char[] s, int offset){ + return Integer.parseInt(new String(s, offset, MAX_LEN), 16); + } + + /* [count] [str len] [str ...] ... [str len][str ... ] + * 0 L 2L 2L + strlen nL (n + 1)L (n + 1)L + strlen + */ + + // Encodes a list of strings to a single string. + public String encode(List strs) { + StringBuilder sb = new StringBuilder(); + sb.append(serializeNumber(strs.size())); + + for(String s : strs){ + sb.append(serializeNumber(s.length())); + sb.append(s); + } + + return sb.toString(); + } + + // Decodes a single string to a list of strings. + public List decode(String s) { + char[] S = s.toCharArray(); + + int offset = 0; + int n = deserializeNumber(S, offset); + // move to first str len start + offset += MAX_LEN; + + ArrayList strs = new ArrayList<>(n); + + for(int i = 0; i < n; i++){ + + int len = deserializeNumber(S, offset); + + // move to str start + offset += MAX_LEN; + + strs.add(new String(S, offset, len)); + + // move to next str len start + offset += len; + } + + return strs; + } +} + +// Your Codec object will be instantiated and called as such: +// Codec codec = new Codec(); +// codec.decode(codec.encode(strs)); diff --git a/encode-and-decode-strings/index.md b/encode-and-decode-strings/index.md new file mode 100644 index 0000000..ac59955 --- /dev/null +++ b/encode-and-decode-strings/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Encode and Decode Strings +date: 2015-09-03 13:28:10+08:00 +leetcode_id: 271 +--- +{% include_relative README.md %} From d4e1cb63bdb34057b9dd48d3bc117cc8ccccf4f9 Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 24 Sep 2015 15:56:36 +0800 Subject: [PATCH 75/79] first easy after a happy holiday --- move-zeroes/README.md | 0 move-zeroes/Solution.java | 49 +++++++++++++++++++++++++++++++++++++++ move-zeroes/index.md | 7 ++++++ 3 files changed, 56 insertions(+) create mode 100644 move-zeroes/README.md create mode 100644 move-zeroes/Solution.java create mode 100644 move-zeroes/index.md diff --git a/move-zeroes/README.md b/move-zeroes/README.md new file mode 100644 index 0000000..e69de29 diff --git a/move-zeroes/Solution.java b/move-zeroes/Solution.java new file mode 100644 index 0000000..d02e5f2 --- /dev/null +++ b/move-zeroes/Solution.java @@ -0,0 +1,49 @@ +public class Solution { + + void shiftLeft(int[] nums, int p, final int c){ + if(c <= 0) return; + + while(p < nums.length){ + nums[p - c] = nums[p]; + + if(nums[p] == 0) break; + + p++; + } + + for(int i = p - c; i < p; i++){ + nums[i] = 0; + } + } + + public void moveZeroes(int[] nums) { + + int i = nums.length - 1; + + // trim tailing zero + while(i >= 0 && nums[i] == 0) i--; + + int s = i; + + boolean metzero = false; + + while(i >= 0){ + + if(nums[i] != 0){ + + if(metzero){ + shiftLeft(nums, s, s - i - 1); + metzero = false; + } + + s = i; + } else { + metzero = true; + } + + i--; + } + + shiftLeft(nums, s, s); + } +} diff --git a/move-zeroes/index.md b/move-zeroes/index.md new file mode 100644 index 0000000..5bddd19 --- /dev/null +++ b/move-zeroes/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Move Zeroes +date: 2015-09-24 15:55:37+08:00 +leetcode_id: 283 +--- +{% include_relative README.md %} From d616bbc43fde0d356b935bf1de17e99b389c17bf Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 24 Sep 2015 17:32:52 +0800 Subject: [PATCH 76/79] stop if cant fetch leetcode_id --- skeleton.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/skeleton.sh b/skeleton.sh index 740d609..54a550e 100755 --- a/skeleton.sh +++ b/skeleton.sh @@ -7,11 +7,16 @@ if [ -z "$leetcode_name" ]; then exit; fi -info=`curl -s https://leetcode.com/problemset/algorithms/ | grep $leetcode_name -B 2` +info=`curl -s https://leetcode.com/problemset/algorithms/ | grep /$leetcode_name/ -B 2` IFS= leetcode_id=`(sed 's/\\(.*\\)<\\/td>/\\1/' | sed 's/^ *//') < <(echo $info | head -n 1)` title=`(sed 's/\\(.*\\)<\\/a>/\\1/' | sed 's/^ *//') < <(echo $info | tail -n 1)` +if [ -z "$leetcode_id" ]; then + echo "cant fetch leetcode_id for $leetcode_name" + exit +fi + now=`date --rfc-3339=seconds` mkdir -p $leetcode_name From 57ebe02dbc21f19fffdad9040fdaead5c9dd68d3 Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 24 Sep 2015 17:35:09 +0800 Subject: [PATCH 77/79] add biset and next inorder bst --- first-bad-version/README.md | 0 first-bad-version/Solution.java | 23 +++++++++++++++++ first-bad-version/index.md | 7 ++++++ inorder-successor-in-bst/README.md | 0 inorder-successor-in-bst/Solution.java | 35 ++++++++++++++++++++++++++ inorder-successor-in-bst/index.md | 7 ++++++ 6 files changed, 72 insertions(+) create mode 100644 first-bad-version/README.md create mode 100644 first-bad-version/Solution.java create mode 100644 first-bad-version/index.md create mode 100644 inorder-successor-in-bst/README.md create mode 100644 inorder-successor-in-bst/Solution.java create mode 100644 inorder-successor-in-bst/index.md diff --git a/first-bad-version/README.md b/first-bad-version/README.md new file mode 100644 index 0000000..e69de29 diff --git a/first-bad-version/Solution.java b/first-bad-version/Solution.java new file mode 100644 index 0000000..9e0007b --- /dev/null +++ b/first-bad-version/Solution.java @@ -0,0 +1,23 @@ +/* The isBadVersion API is defined in the parent class VersionControl. + boolean isBadVersion(int version); */ + +public class Solution extends VersionControl { + public int firstBadVersion(int n) { + int good = 0; // not exists + int bad = n; + + for(;;) { + + if(bad - good <= 1) return bad; + + int t = (bad - good) / 2 + good; // fuck overflow + + if(isBadVersion(t)){ + bad = t; + } else { + good = t; + } + } + + } +} diff --git a/first-bad-version/index.md b/first-bad-version/index.md new file mode 100644 index 0000000..3620450 --- /dev/null +++ b/first-bad-version/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: First Bad Version +date: 2015-09-24 16:10:45+08:00 +leetcode_id: 278 +--- +{% include_relative README.md %} diff --git a/inorder-successor-in-bst/README.md b/inorder-successor-in-bst/README.md new file mode 100644 index 0000000..e69de29 diff --git a/inorder-successor-in-bst/Solution.java b/inorder-successor-in-bst/Solution.java new file mode 100644 index 0000000..a10605e --- /dev/null +++ b/inorder-successor-in-bst/Solution.java @@ -0,0 +1,35 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +public class Solution { + + TreeNode leftMost(TreeNode root){ + if(root == null) return null; + if(root.left != null) return leftMost(root.left); + return root; + } + + public TreeNode inorderSuccessor(TreeNode root, TreeNode p) { + if(root == p) { + return leftMost(p.right); + } + + if(p.val < root.val) { + p = inorderSuccessor(root.left, p); + + if(p == null){ + return root; + } + + return p; + } + + return inorderSuccessor(root.right, p); + } +} diff --git a/inorder-successor-in-bst/index.md b/inorder-successor-in-bst/index.md new file mode 100644 index 0000000..a1a952d --- /dev/null +++ b/inorder-successor-in-bst/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Inorder Successor in BST +date: 2015-09-24 17:32:03+08:00 +leetcode_id: 285 +--- +{% include_relative README.md %} From 9f561e5b75a2090f82c846c26ec75c297396cd15 Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 24 Sep 2015 17:54:43 +0800 Subject: [PATCH 78/79] add zigzag iter --- zigzag-iterator/README.md | 0 zigzag-iterator/Solution.java | 37 +++++++++++++++++++++++++++++ zigzag-iterator/ZigzagIterator.java | 1 + zigzag-iterator/index.md | 7 ++++++ 4 files changed, 45 insertions(+) create mode 100644 zigzag-iterator/README.md create mode 100644 zigzag-iterator/Solution.java create mode 120000 zigzag-iterator/ZigzagIterator.java create mode 100644 zigzag-iterator/index.md diff --git a/zigzag-iterator/README.md b/zigzag-iterator/README.md new file mode 100644 index 0000000..e69de29 diff --git a/zigzag-iterator/Solution.java b/zigzag-iterator/Solution.java new file mode 100644 index 0000000..7f04d78 --- /dev/null +++ b/zigzag-iterator/Solution.java @@ -0,0 +1,37 @@ +public class ZigzagIterator { + + Iterator[] ivs; + + int p = 0; + + public ZigzagIterator(List v1, List v2) { + ivs = new Iterator[]{v1.iterator(), v2.iterator()}; + } + + public int next() { + for(;;){ + + Iterator i = ivs[p++ % ivs.length]; + + if(i.hasNext()){ + return i.next(); + } + } + } + + public boolean hasNext() { + for(Iterator i : ivs){ + if(i.hasNext()){ + return true; + } + } + + return false; + } +} + +/** + * Your ZigzagIterator object will be instantiated and called as such: + * ZigzagIterator i = new ZigzagIterator(v1, v2); + * while (i.hasNext()) v[f()] = i.next(); + */ diff --git a/zigzag-iterator/ZigzagIterator.java b/zigzag-iterator/ZigzagIterator.java new file mode 120000 index 0000000..e570129 --- /dev/null +++ b/zigzag-iterator/ZigzagIterator.java @@ -0,0 +1 @@ +Solution.java \ No newline at end of file diff --git a/zigzag-iterator/index.md b/zigzag-iterator/index.md new file mode 100644 index 0000000..acb4140 --- /dev/null +++ b/zigzag-iterator/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Zigzag Iterator +date: 2015-09-24 17:53:54+08:00 +leetcode_id: 281 +--- +{% include_relative README.md %} From b2b0ac5e531c3609a780990761f146ab7f267b19 Mon Sep 17 00:00:00 2001 From: tgic Date: Thu, 24 Sep 2015 18:03:03 +0800 Subject: [PATCH 79/79] add peeking iter --- peeking-iterator/PeekingIterator.java | 1 + peeking-iterator/README.md | 0 peeking-iterator/Solution.java | 44 +++++++++++++++++++++++++++ peeking-iterator/index.md | 7 +++++ 4 files changed, 52 insertions(+) create mode 120000 peeking-iterator/PeekingIterator.java create mode 100644 peeking-iterator/README.md create mode 100644 peeking-iterator/Solution.java create mode 100644 peeking-iterator/index.md diff --git a/peeking-iterator/PeekingIterator.java b/peeking-iterator/PeekingIterator.java new file mode 120000 index 0000000..e570129 --- /dev/null +++ b/peeking-iterator/PeekingIterator.java @@ -0,0 +1 @@ +Solution.java \ No newline at end of file diff --git a/peeking-iterator/README.md b/peeking-iterator/README.md new file mode 100644 index 0000000..e69de29 diff --git a/peeking-iterator/Solution.java b/peeking-iterator/Solution.java new file mode 100644 index 0000000..e3800d2 --- /dev/null +++ b/peeking-iterator/Solution.java @@ -0,0 +1,44 @@ +// Java Iterator interface reference: +// https://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html +class PeekingIterator implements Iterator { + + static final Integer NONE = new Integer(0); + + Iterator iterator; + + Integer next = NONE; + + public PeekingIterator(Iterator iterator) { + // initialize any member here. + this.iterator = iterator; + } + + // Returns the next element in the iteration without advancing the iterator. + public Integer peek() { + if(next == NONE){ + next = iterator.next(); + } + + return next; + } + + // hasNext() and next() should behave the same as in the Iterator interface. + // Override them if needed. + @Override + public Integer next() { + if(next != NONE){ + try{ + return next; + } finally { + next = NONE; + } + } + + return iterator.next(); + } + + @Override + public boolean hasNext() { + return next != NONE || iterator.hasNext(); + } +} diff --git a/peeking-iterator/index.md b/peeking-iterator/index.md new file mode 100644 index 0000000..048d659 --- /dev/null +++ b/peeking-iterator/index.md @@ -0,0 +1,7 @@ +--- +layout: solution +title: Peeking Iterator +date: 2015-09-24 18:02:14+08:00 +leetcode_id: 284 +--- +{% include_relative README.md %}