From 60693a6078a9255a97267621e76ef43a71d0320b Mon Sep 17 00:00:00 2001 From: Dev Nirwal Date: Mon, 27 Oct 2025 11:27:06 +0530 Subject: [PATCH 1/2] Added 500+ leetcode solutions --- .DS_Store | Bin 0 -> 6148 bytes .../leetcode/0001-two-sum/0001-two-sum.cpp | 14 + .../leetcode/0001-two-sum/0001-two-sum.java | 17 + leetcode/leetcode/0001-two-sum/NOTES.md | 1 + leetcode/leetcode/0001-two-sum/README.md | 41 + ...ubstring-without-repeating-characters.java | 20 + .../README.md | 35 + .../0005-longest-palindromic-substring.java | 34 + .../NOTES.md | 1 + .../README.md | 24 + .../0009-palindrome-number.java | 23 + .../leetcode/0009-palindrome-number/NOTES.md | 1 + .../0011-container-with-most-water.java | 28 + .../0011-container-with-most-water/NOTES.md | 1 + .../0011-container-with-most-water/README.md | 32 + .../0013-roman-to-integer.java | 77 ++ .../leetcode/0013-roman-to-integer/NOTES.md | 1 + .../leetcode/0013-roman-to-integer/README.md | 57 ++ .../0014-longest-common-prefix.java | 21 + .../0014-longest-common-prefix/NOTES.md | 1 + .../0014-longest-common-prefix/README.md | 27 + leetcode/leetcode/0015-3sum/0015-3sum.java | 32 + leetcode/leetcode/0015-3sum/README.md | 41 + .../0016-3sum-closest/0016-3sum-closest.java | 24 + leetcode/leetcode/0016-3sum-closest/README.md | 31 + .../0020-valid-parentheses.java | 22 + .../leetcode/0020-valid-parentheses/README.md | 50 ++ .../0021-merge-two-sorted-lists.java | 37 + .../0021-merge-two-sorted-lists/README.md | 36 + .../0023-merge-k-sorted-lists.java | 45 + .../0023-merge-k-sorted-lists/README.md | 45 + .../0024-swap-nodes-in-pairs.java | 20 + .../0024-swap-nodes-in-pairs/NOTES.md | 1 + .../0024-swap-nodes-in-pairs/README.md | 29 + .../0025-reverse-nodes-in-k-group.java | 46 + .../0025-reverse-nodes-in-k-group/README.md | 32 + ...x-of-the-first-occurrence-in-a-string.java | 15 + .../NOTES.md | 1 + .../README.md | 26 + .../0029-divide-two-integers.java | 33 + .../0029-divide-two-integers/README.md | 32 + .../0032-longest-valid-parentheses.java | 17 + .../0032-longest-valid-parentheses/NOTES.md | 1 + .../0032-longest-valid-parentheses/README.md | 31 + .../0033-search-in-rotated-sorted-array.java | 27 + .../README.md | 29 + ...t-position-of-element-in-sorted-array.java | 38 + .../README.md | 26 + .../0038-count-and-say.java | 20 + .../leetcode/0038-count-and-say/README.md | 50 ++ .../0039-combination-sum.java | 29 + .../0039-combination-sum.py | 19 + .../leetcode/0039-combination-sum/README.md | 41 + .../0040-combination-sum-ii.py | 20 + .../0040-combination-sum-ii/README.md | 39 + .../0045-jump-game-ii/0045-jump-game-ii.java | 18 + leetcode/leetcode/0045-jump-game-ii/README.md | 35 + .../0046-permutations/0046-permutations.java | 29 + leetcode/leetcode/0046-permutations/README.md | 21 + .../0048-rotate-image/0048-rotate-image.java | 34 + leetcode/leetcode/0048-rotate-image/README.md | 27 + .../0049-group-anagrams.java | 23 + .../leetcode/0049-group-anagrams/README.md | 43 + .../leetcode/0050-powx-n/0050-powx-n.java | 16 + leetcode/leetcode/0050-powx-n/NOTES.md | 1 + leetcode/leetcode/0050-powx-n/README.md | 35 + .../0053-maximum-subarray.java | 13 + .../leetcode/0053-maximum-subarray/README.md | 37 + .../0055-jump-game/0055-jump-game.java | 21 + leetcode/leetcode/0055-jump-game/README.md | 28 + .../0056-merge-intervals.java | 34 + .../leetcode/0056-merge-intervals/README.md | 27 + .../0057-insert-interval.java | 71 ++ .../leetcode/0057-insert-interval/README.md | 32 + .../0058-length-of-last-word.java | 14 + .../0058-length-of-last-word/NOTES.md | 1 + .../0058-length-of-last-word/README.md | 35 + .../0061-rotate-list/0061-rotate-list.java | 40 + leetcode/leetcode/0061-rotate-list/NOTES.md | 1 + leetcode/leetcode/0061-rotate-list/README.md | 25 + .../0062-unique-paths/0062-unique-paths.java | 77 ++ leetcode/leetcode/0062-unique-paths/README.md | 31 + .../0063-unique-paths-ii.java | 61 ++ .../leetcode/0063-unique-paths-ii/README.md | 36 + .../0064-minimum-path-sum.java | 41 + .../leetcode/0064-minimum-path-sum/README.md | 29 + leetcode/leetcode/0069-sqrtx/0069-sqrtx.java | 18 + leetcode/leetcode/0069-sqrtx/README.md | 31 + .../0070-climbing-stairs.java | 50 ++ .../leetcode/0070-climbing-stairs/README.md | 32 + .../0073-set-matrix-zeroes.java | 68 ++ .../leetcode/0073-set-matrix-zeroes/NOTES.md | 1 + .../leetcode/0073-set-matrix-zeroes/README.md | 37 + .../0075-sort-colors/0075-sort-colors.java | 24 + leetcode/leetcode/0075-sort-colors/README.md | 32 + .../0076-minimum-window-substring.java | 37 + .../0076-minimum-window-substring/README.md | 42 + .../leetcode/0078-subsets/0078-subsets.java | 26 + .../leetcode/0078-subsets/0078-subsets.py | 16 + leetcode/leetcode/0078-subsets/README.md | 27 + ...-remove-duplicates-from-sorted-list-ii.cpp | 41 + .../README.md | 25 + ...83-remove-duplicates-from-sorted-list.java | 26 + .../README.md | 25 + .../0088-merge-sorted-array.java | 44 + .../leetcode/0088-merge-sorted-array/NOTES.md | 1 + .../0088-merge-sorted-array/README.md | 48 + .../0092-reverse-linked-list-ii.java | 61 ++ .../0092-reverse-linked-list-ii/README.md | 29 + .../0094-binary-tree-inorder-traversal.java | 31 + .../0094-binary-tree-inorder-traversal.py | 15 + .../README.md | 53 ++ .../0098-validate-binary-search-tree.java | 34 + .../0098-validate-binary-search-tree.py | 17 + .../README.md | 33 + .../0100-same-tree/0100-same-tree.java | 22 + leetcode/leetcode/0100-same-tree/NOTES.md | 1 + leetcode/leetcode/0100-same-tree/README.md | 33 + ...102-binary-tree-level-order-traversal.java | 45 + .../README.md | 31 + ...ary-tree-zigzag-level-order-traversal.java | 48 + .../README.md | 31 + .../0104-maximum-depth-of-binary-tree.java | 25 + .../README.md | 26 + ...e-from-inorder-and-postorder-traversal.cpp | 50 ++ .../README.md | 29 + ...rt-sorted-array-to-binary-search-tree.java | 33 + .../README.md | 28 + .../0110-balanced-binary-tree.java | 43 + .../0110-balanced-binary-tree/README.md | 31 + .../leetcode/0112-path-sum/0112-path-sum.java | 24 + leetcode/leetcode/0112-path-sum/README.md | 40 + ...14-flatten-binary-tree-to-linked-list.java | 38 + .../README.md | 39 + ...ting-next-right-pointers-in-each-node.java | 51 ++ .../README.md | 46 + .../0118-pascals-triangle.java | 31 + .../leetcode/0118-pascals-triangle/README.md | 18 + .../0119-pascals-triangle-ii.java | 23 + .../0119-pascals-triangle-ii/NOTES.md | 1 + .../0119-pascals-triangle-ii/README.md | 25 + .../leetcode/0120-triangle/0120-triangle.java | 54 ++ leetcode/leetcode/0120-triangle/README.md | 37 + .../0121-best-time-to-buy-and-sell-stock.java | 12 + .../0121-best-time-to-buy-and-sell-stock.py | 8 + .../NOTES.md | 1 + .../README.md | 31 + .../0124-binary-tree-maximum-path-sum.java | 37 + .../README.md | 30 + .../0125-valid-palindrome.java | 22 + .../leetcode/0125-valid-palindrome/NOTES.md | 1 + .../leetcode/0125-valid-palindrome/README.md | 35 + .../0128-longest-consecutive-sequence.java | 22 + .../README.md | 34 + .../0129-sum-root-to-leaf-numbers.java | 26 + .../0129-sum-root-to-leaf-numbers/README.md | 43 + .../0131-palindrome-partitioning.py | 18 + .../0131-palindrome-partitioning/README.md | 17 + .../0133-clone-graph/0133-clone-graph.java | 37 + leetcode/leetcode/0133-clone-graph/README.md | 62 ++ .../0134-gas-station/0134-gas-station.java | 20 + leetcode/leetcode/0134-gas-station/README.md | 43 + .../0138-copy-list-with-random-pointer.java | 40 + .../NOTES.md | 1 + .../README.md | 49 + .../0141-linked-list-cycle.java | 25 + .../leetcode/0141-linked-list-cycle/NOTES.md | 1 + .../leetcode/0141-linked-list-cycle/README.md | 42 + .../0142-linked-list-cycle-ii.java | 30 + .../0142-linked-list-cycle-ii/README.md | 42 + .../0143-reorder-list/0143-reorder-list.java | 54 ++ leetcode/leetcode/0143-reorder-list/README.md | 36 + .../0144-binary-tree-preorder-traversal.java | 36 + .../0144-binary-tree-preorder-traversal.py | 13 + .../README.md | 53 ++ .../0145-binary-tree-postorder-traversal.java | 27 + .../NOTES.md | 1 + .../README.md | 53 ++ .../0146-lru-cache/0146-lru-cache.java | 100 +++ leetcode/leetcode/0146-lru-cache/README.md | 44 + .../0149-max-points-on-a-line.java | 23 + .../0149-max-points-on-a-line/NOTES.md | 1 + .../0149-max-points-on-a-line/README.md | 26 + ...0150-evaluate-reverse-polish-notation.java | 29 + .../NOTES.md | 1 + .../README.md | 51 ++ .../0151-reverse-words-in-a-string.java | 22 + .../0151-reverse-words-in-a-string/NOTES.md | 1 + .../0151-reverse-words-in-a-string/README.md | 41 + .../0152-maximum-product-subarray.java | 16 + .../0152-maximum-product-subarray/README.md | 29 + ...-find-minimum-in-rotated-sorted-array.java | 17 + ...53-find-minimum-in-rotated-sorted-array.py | 13 + .../README.md | 48 + .../0155-min-stack/0155-min-stack.java | 51 ++ leetcode/leetcode/0155-min-stack/NOTES.md | 1 + leetcode/leetcode/0155-min-stack/README.md | 44 + ...0160-intersection-of-two-linked-lists.java | 59 ++ .../README.md | 67 ++ .../0162-find-peak-element.java | 22 + .../leetcode/0162-find-peak-element/README.md | 31 + ...0167-two-sum-ii-input-array-is-sorted.java | 18 + .../NOTES.md | 1 + .../README.md | 43 + .../0169-majority-element.java | 14 + .../leetcode/0169-majority-element/NOTES.md | 1 + .../leetcode/0169-majority-element/README.md | 23 + .../0175-combine-two-tables.sql | 3 + .../leetcode/0175-combine-two-tables/NOTES.md | 1 + .../0176-second-highest-salary.sql | 3 + .../0176-second-highest-salary/README.md | 55 ++ .../0177-nth-highest-salary/README.md | 57 ++ .../0179-largest-number.java | 19 + .../leetcode/0179-largest-number/NOTES.md | 1 + .../leetcode/0179-largest-number/README.md | 25 + .../0187-repeated-dna-sequences.java | 31 + .../0187-repeated-dna-sequences/README.md | 25 + .../0189-rotate-array/0189-rotate-array.java | 19 + leetcode/leetcode/0189-rotate-array/NOTES.md | 1 + leetcode/leetcode/0189-rotate-array/README.md | 39 + .../0191-number-of-1-bits.java | 12 + .../leetcode/0191-number-of-1-bits/README.md | 48 + .../0196-delete-duplicate-emails.sql | 2 + .../0196-delete-duplicate-emails/NOTES.md | 1 + .../0198-house-robber/0198-house-robber.java | 66 ++ .../0198-house-robber/0198-house-robber.py | 19 + leetcode/leetcode/0198-house-robber/README.md | 30 + .../0199-binary-tree-right-side-view.java | 35 + .../README.md | 50 ++ .../0200-number-of-islands.java | 31 + .../leetcode/0200-number-of-islands/README.md | 38 + .../0201-bitwise-and-of-numbers-range.java | 11 + .../README.md | 30 + .../0205-isomorphic-strings.java | 21 + .../leetcode/0205-isomorphic-strings/NOTES.md | 1 + .../0205-isomorphic-strings/README.md | 26 + .../0206-reverse-linked-list.java | 50 ++ .../0206-reverse-linked-list.py | 19 + .../0206-reverse-linked-list/README.md | 34 + .../0209-minimum-size-subarray-sum.java | 19 + .../0209-minimum-size-subarray-sum/README.md | 36 + .../0213-house-robber-ii.java | 30 + .../leetcode/0213-house-robber-ii/README.md | 36 + .../0214-shortest-palindrome.java | 18 + .../0214-shortest-palindrome/NOTES.md | 1 + .../0214-shortest-palindrome/README.md | 20 + .../0215-kth-largest-element-in-an-array.java | 11 + .../NOTES.md | 1 + .../README.md | 21 + .../0217-contains-duplicate.java | 10 + .../0217-contains-duplicate/README.md | 42 + .../0225-implement-stack-using-queues.java | 45 + .../README.md | 48 + .../0226-invert-binary-tree.java | 40 + .../0226-invert-binary-tree/README.md | 31 + .../0229-majority-element-ii.java | 43 + .../0229-majority-element-ii/README.md | 34 + .../0230-kth-smallest-element-in-a-bst.java | 74 ++ .../README.md | 28 + .../0232-implement-queue-using-stacks.java | 44 + .../README.md | 48 + .../0234-palindrome-linked-list.java | 52 ++ .../0234-palindrome-linked-list/README.md | 27 + ...mmon-ancestor-of-a-binary-search-tree.java | 36 + .../README.md | 38 + ...west-common-ancestor-of-a-binary-tree.java | 30 + .../README.md | 38 + .../0237-delete-node-in-a-linked-list.java | 15 + .../NOTES.md | 1 + .../README.md | 48 + .../0238-product-of-array-except-self.java | 15 + .../NOTES.md | 1 + .../README.md | 25 + .../0239-sliding-window-maximum.java | 15 + .../0239-sliding-window-maximum/README.md | 36 + ...241-different-ways-to-add-parentheses.java | 49 + .../NOTES.md | 1 + .../README.md | 35 + .../0242-valid-anagram.java | 17 + leetcode/leetcode/0242-valid-anagram/NOTES.md | 1 + .../leetcode/0242-valid-anagram/README.md | 23 + .../0257-binary-tree-paths.py | 34 + .../leetcode/0257-binary-tree-paths/README.md | 26 + .../0268-missing-number.java | 8 + .../leetcode/0268-missing-number/README.md | 69 ++ .../0283-move-zeroes/0283-move-zeroes.java | 21 + leetcode/leetcode/0283-move-zeroes/NOTES.md | 1 + leetcode/leetcode/0283-move-zeroes/README.md | 22 + .../0287-find-the-duplicate-number.java | 10 + .../0287-find-the-duplicate-number/README.md | 44 + .../0300-longest-increasing-subsequence.java | 20 + .../NOTES.md | 1 + .../README.md | 35 + .../0303-range-sum-query-immutable.java | 22 + .../0303-range-sum-query-immutable/README.md | 39 + .../0322-coin-change/0322-coin-change.java | 38 + leetcode/leetcode/0322-coin-change/README.md | 37 + .../0326-power-of-three.java | 11 + .../leetcode/0326-power-of-three/README.md | 38 + .../0328-odd-even-linked-list.cpp | 29 + .../0328-odd-even-linked-list/README.md | 30 + .../0334-increasing-triplet-subsequence.java | 24 + .../NOTES.md | 1 + .../README.md | 34 + .../0337-house-robber-iii.java | 34 + .../leetcode/0337-house-robber-iii/README.md | 30 + .../0338-counting-bits.java | 10 + .../leetcode/0338-counting-bits/README.md | 42 + .../0342-power-of-four.java | 11 + .../leetcode/0342-power-of-four/README.md | 24 + .../0345-reverse-vowels-of-a-string.java | 31 + .../0345-reverse-vowels-of-a-string/README.md | 20 + .../0347-top-k-frequent-elements.java | 36 + .../0347-top-k-frequent-elements/README.md | 22 + .../0350-intersection-of-two-arrays-ii.java | 18 + .../NOTES.md | 1 + .../README.md | 33 + .../0374-guess-number-higher-or-lower.java | 26 + .../README.md | 45 + .../0380-insert-delete-getrandom-o1/README.md | 40 + .../0386-lexicographical-numbers.java | 21 + .../0386-lexicographical-numbers/README.md | 19 + .../0392-is-subsequence.java | 18 + .../leetcode/0392-is-subsequence/NOTES.md | 1 + .../leetcode/0392-is-subsequence/README.md | 23 + .../0402-remove-k-digits.java | 36 + .../leetcode/0402-remove-k-digits/README.md | 35 + .../0404-sum-of-left-leaves.java | 32 + .../0404-sum-of-left-leaves/README.md | 27 + .../0416-partition-equal-subset-sum.java | 76 ++ .../0416-partition-equal-subset-sum/README.md | 26 + ...ngest-repeating-character-replacement.java | 23 + .../README.md | 30 + .../0435-non-overlapping-intervals.java | 16 + .../0435-non-overlapping-intervals/README.md | 37 + .../NOTES.md | 1 + .../README.md | 23 + .../0443-string-compression.java | 29 + .../leetcode/0443-string-compression/NOTES.md | 1 + .../0443-string-compression/README.md | 44 + .../0451-sort-characters-by-frequency.java | 28 + .../README.md | 39 + ...um-number-of-arrows-to-burst-balloons.java | 14 + .../NOTES.md | 1 + .../README.md | 41 + .../0480-sliding-window-median.java | 141 +++ .../0480-sliding-window-median/README.md | 42 + .../0485-max-consecutive-ones.java | 17 + .../0485-max-consecutive-ones/README.md | 25 + .../0503-next-greater-element-ii.java | 47 + .../0503-next-greater-element-ii/README.md | 29 + .../leetcode/0509-fibonacci-number/NOTES.md | 1 + .../leetcode/0509-fibonacci-number/README.md | 37 + .../0513-find-bottom-left-tree-value.java | 35 + .../README.md | 24 + .../README.md | 23 + .../0516-longest-palindromic-subsequence.java | 57 ++ .../README.md | 28 + .../0525-contiguous-array.java | 23 + .../leetcode/0525-contiguous-array/README.md | 34 + .../0539-minimum-time-difference.java | 40 + .../0539-minimum-time-difference/NOTES.md | 1 + .../0539-minimum-time-difference/README.md | 17 + ...0540-single-element-in-a-sorted-array.java | 30 + .../README.md | 21 + .../0543-diameter-of-binary-tree.java | 42 + .../0543-diameter-of-binary-tree/README.md | 29 + .../0560-subarray-sum-equals-k.java | 18 + .../0560-subarray-sum-equals-k/README.md | 20 + .../0584-find-customer-referee.sql | 2 + .../0584-find-customer-referee/README.md | 48 + .../0605-can-place-flowers.java | 28 + .../leetcode/0605-can-place-flowers/NOTES.md | 1 + .../leetcode/0605-can-place-flowers/README.md | 22 + .../0621-task-scheduler.java | 24 + .../leetcode/0621-task-scheduler/NOTES.md | 1 + .../leetcode/0621-task-scheduler/README.md | 95 ++ ...0637-average-of-levels-in-binary-tree.java | 40 + .../README.md | 25 + .../0643-maximum-average-subarray-i.java | 17 + .../0643-maximum-average-subarray-i/NOTES.md | 1 + .../0643-maximum-average-subarray-i/README.md | 27 + .../0713-subarray-product-less-than-k.java | 20 + .../README.md | 28 + .../0724-find-pivot-index.java | 19 + .../leetcode/0724-find-pivot-index/NOTES.md | 1 + .../leetcode/0724-find-pivot-index/README.md | 47 + .../0725-split-linked-list-in-parts.java | 48 + .../0725-split-linked-list-in-parts/README.md | 36 + .../0735-asteroid-collision.java | 37 + .../0735-asteroid-collision/README.md | 39 + .../0739-daily-temperatures.java | 14 + .../0739-daily-temperatures/README.md | 20 + .../0763-partition-labels.java | 28 + .../leetcode/0763-partition-labels/NOTES.md | 1 + .../leetcode/0763-partition-labels/README.md | 31 + .../0768-partition-labels.java | 30 + .../leetcode/0768-partition-labels/README.md | 32 + .../0783-search-in-a-binary-search-tree.py | 13 + .../README.md | 28 + ...0784-insert-into-a-binary-search-tree.java | 27 + .../0784-insert-into-a-binary-search-tree.py | 15 + .../README.md | 38 + .../0820-find-eventual-safe-states.java | 34 + .../0820-find-eventual-safe-states/README.md | 37 + .../0838-design-linked-list.java | 135 +++ .../0838-design-linked-list/README.md | 43 + .../0844-backspace-string-compare.java | 22 + .../0844-backspace-string-compare/NOTES.md | 1 + .../0844-backspace-string-compare/README.md | 37 + .../0872-leaf-similar-trees.java | 41 + .../leetcode/0872-leaf-similar-trees/NOTES.md | 1 + .../0872-leaf-similar-trees/README.md | 31 + ...884-uncommon-words-from-two-sentences.java | 34 + .../NOTES.md | 1 + .../README.md | 37 + .../0894-all-possible-full-binary-trees.java | 57 ++ .../NOTES.md | 1 + .../README.md | 26 + .../0907-koko-eating-bananas.java | 34 + .../0907-koko-eating-bananas/README.md | 38 + .../0908-middle-of-the-linked-list.java | 58 ++ .../0908-middle-of-the-linked-list/README.md | 28 + ...from-preorder-and-postorder-traversal.java | 41 + .../README.md | 31 + ...26-flip-string-to-monotone-increasing.java | 21 + .../NOTES.md | 1 + .../README.md | 36 + .../0937-online-stock-span.java | 26 + .../leetcode/0937-online-stock-span/README.md | 44 + .../0944-delete-columns-to-make-sorted.java | 19 + .../NOTES.md | 1 + .../README.md | 56 ++ .../0954-maximum-sum-circular-subarray.java | 23 + .../README.md | 39 + .../0966-binary-subarrays-with-sum.java | 20 + .../0966-binary-subarrays-with-sum/README.md | 32 + .../0967-minimum-falling-path-sum.java | 91 ++ .../0967-minimum-falling-path-sum/README.md | 29 + .../0988-flip-equivalent-binary-trees.java | 26 + .../README.md | 36 + .../0997-find-the-town-judge/NOTES.md | 1 + .../0997-find-the-town-judge/README.md | 45 + leetcode/leetcode/1-two-sum/1-two-sum.java | 15 + leetcode/leetcode/1-two-sum/NOTES.md | 1 + leetcode/leetcode/1-two-sum/README.md | 38 + .../1004-max-consecutive-ones-iii.java | 48 + .../1004-max-consecutive-ones-iii/NOTES.md | 1 + .../1004-max-consecutive-ones-iii/README.md | 27 + ...y-search-tree-from-preorder-traversal.java | 32 + .../NOTES.md | 1 + .../README.md | 30 + .../1009-complement-of-base-10-integer.java | 15 + .../NOTES.md | 1 + .../README.md | 40 + .../101-symmetric-tree.java | 28 + leetcode/leetcode/101-symmetric-tree/NOTES.md | 1 + .../leetcode/101-symmetric-tree/README.md | 25 + .../1014-k-closest-points-to-origin.java | 53 ++ .../1014-k-closest-points-to-origin/README.md | 34 + ...1019-next-greater-node-in-linked-list.java | 46 + .../NOTES.md | 1 + .../README.md | 28 + ...102-binary-tree-level-order-traversal.java | 34 + .../NOTES.md | 1 + .../README.md | 29 + ...22-sum-of-root-to-leaf-binary-numbers.java | 51 ++ .../NOTES.md | 1 + .../README.md | 32 + ...-difference-between-node-and-ancestor.java | 28 + .../NOTES.md | 1 + .../README.md | 30 + ...ical-order-traversal-of-a-binary-tree.java | 74 ++ .../README.md | 52 ++ ...ary-tree-zigzag-level-order-traversal.java | 40 + .../NOTES.md | 1 + .../README.md | 29 + ...30-smallest-string-starting-from-leaf.java | 36 + .../README.md | 41 + .../README.md | 34 + ...inary-search-tree-to-greater-sum-tree.java | 24 + .../NOTES.md | 1 + .../README.md | 35 + .../104-maximum-depth-of-binary-tree.java | 21 + .../104-maximum-depth-of-binary-tree/NOTES.md | 1 + .../README.md | 25 + ...e-from-preorder-and-inorder-traversal.java | 31 + .../NOTES.md | 1 + .../README.md | 28 + ...y-search-tree-from-preorder-traversal.java | 30 + .../README.md | 31 + ...pacity-to-ship-packages-within-d-days.java | 36 + .../README.md | 52 ++ ...-from-inorder-and-postorder-traversal.java | 35 + .../NOTES.md | 1 + .../README.md | 28 + ...raphically-smallest-equivalent-string.java | 27 + .../README.md | 54 ++ ...-binary-tree-level-order-traversal-ii.java | 37 + .../NOTES.md | 1 + .../README.md | 29 + ...71-greatest-common-divisor-of-strings.java | 17 + .../NOTES.md | 1 + .../README.md | 31 + ...st-subsequence-of-distinct-characters.java | 51 ++ .../NOTES.md | 1 + .../README.md | 25 + .../1089-duplicate-zeros.java | 23 + .../leetcode/1089-duplicate-zeros/README.md | 27 + ...ecover-a-tree-from-preorder-traversal.java | 45 + .../README.md | 37 + .../11-container-with-most-water.java | 17 + .../11-container-with-most-water/NOTES.md | 1 + .../11-container-with-most-water/README.md | 31 + .../1110-delete-nodes-and-return-forest.java | 60 ++ .../NOTES.md | 1 + .../README.md | 29 + .../1122-relative-sort-array.java | 21 + .../1122-relative-sort-array/NOTES.md | 1 + .../1122-relative-sort-array/README.md | 27 + .../1137-n-th-tribonacci-number.java | 17 + .../1137-n-th-tribonacci-number/NOTES.md | 1 + .../1137-n-th-tribonacci-number/README.md | 29 + .../1143-longest-common-subsequence.java | 22 + .../1143-longest-common-subsequence/NOTES.md | 1 + .../1143-longest-common-subsequence/README.md | 40 + .../1153-product-sales-analysis-i/README.md | 75 ++ ...ting-next-right-pointers-in-each-node.java | 42 + .../NOTES.md | 1 + .../README.md | 44 + ...ords-that-can-be-formed-by-characters.java | 26 + .../NOTES.md | 1 + .../README.md | 30 + ...61-maximum-level-sum-of-a-binary-tree.java | 43 + .../NOTES.md | 1 + .../README.md | 30 + ...g-next-right-pointers-in-each-node-ii.java | 42 + .../NOTES.md | 1 + .../README.md | 44 + .../1170-shortest-common-supersequence.java | 42 + .../README.md | 30 + ...um-consecutive-nodes-from-linked-list.java | 36 + .../NOTES.md | 1 + .../README.md | 34 + .../118-pascals-triangle.java | 23 + .../leetcode/118-pascals-triangle/NOTES.md | 1 + .../leetcode/118-pascals-triangle/README.md | 19 + ...ings-between-each-pair-of-parentheses.java | 24 + .../1207-unique-number-of-occurrences.java | 15 + .../NOTES.md | 1 + .../README.md | 29 + .../121-best-time-to-buy-and-sell-stock.java | 12 + .../NOTES.md | 1 + .../README.md | 30 + .../1224-minimum-falling-path-sum-ii.java | 27 + .../README.md | 33 + ...imum-remove-to-make-valid-parentheses.java | 24 + .../README.md | 41 + .../1250-longest-common-subsequence.java | 25 + .../1250-longest-common-subsequence/README.md | 42 + .../1258-article-views-i.sql | 2 + .../leetcode/1258-article-views-i/README.md | 49 + ...lements-in-a-contaminated-binary-tree.java | 39 + .../NOTES.md | 1 + .../README.md | 69 ++ ...1266-minimum-time-visiting-all-points.java | 14 + .../README.md | 43 + .../128-longest-consecutive-sequence.java | 21 + .../128-longest-consecutive-sequence/NOTES.md | 1 + ...ppearing-more-than-25-in-sorted-array.java | 10 + .../NOTES.md | 1 + .../README.md | 23 + .../129-sum-root-to-leaf-numbers.java | 26 + .../129-sum-root-to-leaf-numbers/NOTES.md | 1 + .../129-sum-root-to-leaf-numbers/README.md | 43 + .../1291-sequential-digits.java | 22 + .../leetcode/1291-sequential-digits/NOTES.md | 1 + .../leetcode/1291-sequential-digits/README.md | 19 + ...rray-in-sets-of-k-consecutive-numbers.java | 33 + .../NOTES.md | 1 + .../README.md | 36 + ...s-with-greatest-element-on-right-side.java | 14 + .../NOTES.md | 1 + .../README.md | 33 + .../1302-deepest-leaves-sum.java | 17 + .../leetcode/1302-deepest-leaves-sum/NOTES.md | 1 + .../1302-deepest-leaves-sum/README.md | 22 + ...l-elements-in-two-binary-search-trees.java | 46 + .../NOTES.md | 1 + .../README.md | 23 + .../1310-xor-queries-of-a-subarray.java | 19 + .../1310-xor-queries-of-a-subarray/README.md | 40 + ...of-nodes-with-even-valued-grandparent.java | 41 + .../NOTES.md | 1 + .../1331-rank-transform-of-an-array.java | 15 + .../1331-rank-transform-of-an-array/NOTES.md | 1 + .../1331-rank-transform-of-an-array/README.md | 38 + ...ximum-candies-allocated-to-k-children.java | 47 + .../README.md | 31 + .../134-gas-station/134-gas-station.java | 19 + leetcode/leetcode/134-gas-station/NOTES.md | 1 + leetcode/leetcode/134-gas-station/README.md | 44 + .../136-single-number/136-single-number.java | 9 + leetcode/leetcode/136-single-number/NOTES.md | 1 + leetcode/leetcode/136-single-number/README.md | 24 + .../1367-linked-list-in-binary-tree.java | 38 + .../1367-linked-list-in-binary-tree/NOTES.md | 1 + .../1367-linked-list-in-binary-tree/README.md | 40 + ...ring-containing-vowels-in-even-counts.java | 20 + .../README.md | 32 + .../1373-maximum-sum-bst-in-binary-tree.java | 53 ++ .../NOTES.md | 1 + .../README.md | 44 + ...53-find-minimum-in-rotated-sorted-array.py | 13 + .../README.md | 47 + .../138-copy-list-with-random-pointer.java | 32 + .../NOTES.md | 1 + .../README.md | 47 + ...lements-in-a-contaminated-binary-tree.java | 39 + .../README.md | 75 ++ .../1390-four-divisors.java | 28 + leetcode/leetcode/1390-four-divisors/NOTES.md | 1 + .../leetcode/1390-four-divisors/README.md | 34 + .../14-longest-common-prefix.java | 18 + .../14-longest-common-prefix/NOTES.md | 1 + .../14-longest-common-prefix/README.md | 27 + .../141-linked-list-cycle.java | 22 + .../leetcode/141-linked-list-cycle/NOTES.md | 1 + ...r-of-fibonacci-numbers-whose-sum-is-k.java | 32 + .../NOTES.md | 1 + .../142-linked-list-cycle-ii.java | 30 + .../142-linked-list-cycle-ii/NOTES.md | 1 + .../142-linked-list-cycle-ii/README.md | 40 + ...nd-numbers-with-even-number-of-digits.java | 18 + .../README.md | 33 + ...s-with-the-greatest-number-of-candies.java | 17 + .../NOTES.md | 1 + .../README.md | 43 + ...-build-an-array-with-stack-operations.java | 17 + .../NOTES.md | 1 + ...-time-to-collect-all-apples-in-a-tree.java | 27 + .../NOTES.md | 1 + .../README.md | 37 + .../1448-count-good-nodes-in-binary-tree.java | 29 + .../NOTES.md | 1 + .../README.md | 38 + .../1451-rearrange-words-in-a-sentence.java | 14 + .../NOTES.md | 1 + .../README.md | 46 + ...vowels-in-a-substring-of-given-length.java | 23 + .../NOTES.md | 1 + .../README.md | 35 + ...rings-containing-all-three-characters.java | 24 + .../README.md | 35 + .../147-insertion-sort-list.java | 29 + .../leetcode/147-insertion-sort-list/NOTES.md | 1 + .../147-insertion-sort-list/README.md | 33 + .../1476-subrectangle-queries.java | 26 + .../1476-subrectangle-queries/NOTES.md | 1 + .../1476-subrectangle-queries/README.md | 80 ++ .../leetcode/148-sort-list/148-sort-list.java | 91 ++ leetcode/leetcode/148-sort-list/NOTES.md | 1 + leetcode/leetcode/148-sort-list/README.md | 32 + .../1480-running-sum-of-1d-array.java | 8 + .../1480-running-sum-of-1d-array/NOTES.md | 1 + .../1480-running-sum-of-1d-array/README.md | 30 + ...luding-the-minimum-and-maximum-salary.java | 20 + .../NOTES.md | 1 + .../README.md | 30 + ...rray-of-1s-after-deleting-one-element.java | 29 + .../NOTES.md | 1 + .../README.md | 34 + ...eck-if-array-pairs-are-divisible-by-k.java | 19 + .../NOTES.md | 1 + .../README.md | 39 + .../150-evaluate-reverse-polish-notation.java | 23 + .../NOTES.md | 1 + .../README.md | 44 + ...508-range-sum-of-sorted-subarray-sums.java | 26 + .../NOTES.md | 1 + .../README.md | 35 + ...est-and-smallest-value-in-three-moves.java | 12 + .../NOTES.md | 1 + ...employee-id-with-the-unique-identifier.sql | 2 + .../README.md | 75 ++ .../1518-water-bottles.java | 12 + leetcode/leetcode/1518-water-bottles/NOTES.md | 1 + .../leetcode/1518-water-bottles/README.md | 31 + ...s-in-the-sub-tree-with-the-same-label.java | 37 + .../NOTES.md | 1 + .../leetcode/155-min-stack/155-min-stack.java | 47 + leetcode/leetcode/155-min-stack/NOTES.md | 1 + leetcode/leetcode/155-min-stack/README.md | 42 + .../1550-three-consecutive-odds.java | 17 + .../1550-three-consecutive-odds/NOTES.md | 1 + .../1550-three-consecutive-odds/README.md | 24 + ...-special-positions-in-a-binary-matrix.java | 25 + .../NOTES.md | 1 + .../README.md | 29 + .../1598-crawler-log-folder.java | 17 + .../leetcode/1598-crawler-log-folder/NOTES.md | 1 + .../1598-crawler-log-folder/README.md | 51 ++ .../160-intersection-of-two-linked-lists.java | 42 + .../NOTES.md | 1 + .../1609-even-odd-tree.java | 48 + leetcode/leetcode/1609-even-odd-tree/NOTES.md | 1 + .../leetcode/1609-even-odd-tree/README.md | 49 + .../162-find-peak-element.java | 15 + .../leetcode/162-find-peak-element/NOTES.md | 1 + .../leetcode/162-find-peak-element/README.md | 30 + ...631-number-of-sub-arrays-with-odd-sum.java | 22 + .../README.md | 39 + .../1642-water-bottles.java | 12 + .../leetcode/1642-water-bottles/README.md | 32 + .../1652-minimum-suffix-flips.py | 22 + .../1652-minimum-suffix-flips/README.md | 47 + ...k-if-two-string-arrays-are-equivalent.java | 23 + .../NOTES.md | 1 + .../README.md | 36 + .../167-two-sum-ii-input-array-is-sorted.java | 19 + .../NOTES.md | 1 + .../README.md | 41 + .../1672-richest-customer-wealth.java | 11 + .../1672-richest-customer-wealth/NOTES.md | 1 + .../1672-richest-customer-wealth/README.md | 41 + .../1679-max-number-of-k-sum-pairs.java | 21 + .../1679-max-number-of-k-sum-pairs/NOTES.md | 1 + .../1679-max-number-of-k-sum-pairs/README.md | 33 + ...ount-the-number-of-consistent-strings.java | 20 + .../NOTES.md | 1 + .../README.md | 37 + ...minimum-number-of-deci-binary-numbers.java | 10 + .../NOTES.md | 1 + .../README.md | 33 + .../169-majority-element.java | 12 + .../leetcode/169-majority-element/NOTES.md | 1 + .../leetcode/169-majority-element/README.md | 23 + ...letter-combinations-of-a-phone-number.java | 34 + .../NOTES.md | 1 + .../README.md | 33 + .../1701-average-waiting-time.java | 15 + .../1701-average-waiting-time/NOTES.md | 1 + .../1701-average-waiting-time/README.md | 44 + .../1710-maximum-units-on-a-truck.java | 16 + .../1710-maximum-units-on-a-truck/NOTES.md | 1 + .../1710-maximum-units-on-a-truck/README.md | 39 + ...aximum-score-from-removing-substrings.java | 30 + .../README.md | 45 + .../172-factorial-trailing-zeroes.java | 13 + .../172-factorial-trailing-zeroes/NOTES.md | 1 + .../172-factorial-trailing-zeroes/README.md | 35 + .../1721-swapping-nodes-in-a-linked-list.java | 41 + .../NOTES.md | 1 + .../README.md | 26 + ...ited-but-did-not-make-any-transactions.sql | 3 + .../README.md | 80 ++ .../173-binary-search-tree-iterator.java | 50 ++ .../173-binary-search-tree-iterator/NOTES.md | 1 + .../1732-find-the-highest-altitude.java | 11 + .../1732-find-the-highest-altitude/NOTES.md | 1 + .../1732-find-the-highest-altitude/README.md | 28 + .../1768-merge-strings-alternately.java | 21 + .../1768-merge-strings-alternately/NOTES.md | 1 + .../1768-merge-strings-alternately/README.md | 42 + .../1791-find-center-of-star-graph.java | 10 + .../1791-find-center-of-star-graph/README.md | 30 + ...1817-finding-the-users-active-minutes.java | 19 + .../NOTES.md | 1 + .../README.md | 42 + .../182-duplicate-emails.sql | 2 + .../leetcode/182-duplicate-emails/NOTES.md | 1 + .../leetcode/182-duplicate-emails/README.md | 41 + .../1822-sign-of-the-product-of-an-array.java | 11 + .../NOTES.md | 1 + .../README.md | 42 + ...-find-the-winner-of-the-circular-game.java | 16 + .../NOTES.md | 1 + .../README.md | 49 + .../1827-invalid-tweets.sql | 2 + .../leetcode/1827-invalid-tweets/README.md | 44 + .../1833-maximum-ice-cream-bars.java | 14 + .../1833-maximum-ice-cream-bars/NOTES.md | 1 + .../1833-maximum-ice-cream-bars/README.md | 39 + .../1845-seat-reservation-manager.java | 27 + .../1845-seat-reservation-manager/NOTES.md | 1 + .../1845-seat-reservation-manager/README.md | 42 + ...ment-after-decreasing-and-rearranging.java | 20 + .../README.md | 54 ++ ...-maximum-absolute-sum-of-any-subarray.java | 17 + .../README.md | 35 + ...if-number-is-a-sum-of-powers-of-three.java | 32 + .../README.md | 34 + .../19-remove-nth-node-from-end-of-list.java | 29 + .../NOTES.md | 1 + .../1908-recyclable-and-low-fat-products.sql | 2 + .../README.md | 46 + .../1920-build-array-from-permutation.py | 6 + .../README.md | 35 + ...sum-of-digits-of-string-after-convert.java | 23 + .../README.md | 51 ++ ...find-greatest-common-divisor-of-array.java | 15 + .../NOTES.md | 1 + .../README.md | 43 + .../198-house-robber/198-house-robber.java | 13 + leetcode/leetcode/198-house-robber/NOTES.md | 1 + leetcode/leetcode/198-house-robber/README.md | 29 + .../1983-maximum-population-year.java | 21 + .../1983-maximum-population-year/README.md | 31 + .../199-binary-tree-right-side-view.java | 32 + .../199-binary-tree-right-side-view/NOTES.md | 1 + .../199-binary-tree-right-side-view/README.md | 29 + .../1991-find-the-middle-index-in-array.java | 19 + .../NOTES.md | 1 + .../README.md | 43 + .../2-add-two-numbers/2-add-two-numbers.java | 42 + leetcode/leetcode/2-add-two-numbers/NOTES.md | 1 + .../20-valid-parentheses.java | 20 + .../leetcode/20-valid-parentheses/NOTES.md | 1 + .../leetcode/20-valid-parentheses/README.md | 36 + .../2000-reverse-prefix-of-word.java | 16 + .../2000-reverse-prefix-of-word/NOTES.md | 1 + .../2000-reverse-prefix-of-word/README.md | 42 + .../202-happy-number/202-happy-number.java | 21 + leetcode/leetcode/202-happy-number/NOTES.md | 1 + ...remove-all-occurrences-of-a-substring.java | 88 ++ .../README.md | 44 + .../2048-build-array-from-permutation.java | 11 + .../README.md | 36 + ...mber-of-nodes-between-critical-points.java | 48 + .../README.md | 50 ++ ...ount-common-words-with-one-occurrence.java | 29 + .../README.md | 38 + ...nd-target-indices-after-sorting-array.java | 19 + .../NOTES.md | 1 + ...mber-of-ways-to-arrive-at-destination.java | 71 ++ .../README.md | 41 + ...moving-minimum-and-maximum-from-array.java | 18 + .../NOTES.md | 1 + .../README.md | 49 + .../21-merge-two-sorted-lists.java | 44 + .../21-merge-two-sorted-lists/NOTES.md | 1 + .../2107-find-unique-binary-string.java | 47 + .../2107-find-unique-binary-string/README.md | 37 + ...ome-by-concatenating-two-letter-words.java | 29 + .../NOTES.md | 1 + .../README.md | 42 + ...y-row-and-column-contains-all-numbers.java | 19 + .../NOTES.md | 1 + .../README.md | 30 + ...divide-a-string-into-groups-of-size-k.java | 20 + .../README.md | 44 + ...9-minimum-moves-to-reach-target-score.java | 16 + .../NOTES.md | 1 + .../README.md | 52 ++ ...strictly-smaller-and-greater-elements.java | 23 + .../NOTES.md | 1 + .../README.md | 28 + ...2149-rearrange-array-elements-by-sign.java | 29 + .../NOTES.md | 1 + .../README.md | 42 + .../215-kth-largest-element-in-an-array.java | 10 + .../NOTES.md | 1 + .../README.md | 20 + ...-find-all-lonely-numbers-in-the-array.java | 15 + .../NOTES.md | 1 + .../README.md | 37 + ...-keep-multiplying-found-values-by-two.java | 10 + .../README.md | 40 + ...m-operations-to-make-a-uni-value-grid.java | 25 + .../README.md | 45 + ...r-digit-number-after-splitting-digits.java | 15 + .../NOTES.md | 1 + .../README.md | 32 + ...tition-array-according-to-given-pivot.java | 25 + .../README.md | 44 + ...rt-even-and-odd-indices-independently.java | 16 + .../NOTES.md | 1 + .../README.md | 48 + ...allest-value-of-the-rearranged-number.java | 44 + .../NOTES.md | 1 + .../README.md | 30 + .../2166-design-bitset.java | 91 ++ leetcode/leetcode/2166-design-bitset/NOTES.md | 1 + .../leetcode/2166-design-bitset/README.md | 49 + ...t-greater-numerically-balanced-number.java | 21 + .../README.md | 47 + ...e-integers-that-sum-to-a-given-number.java | 12 + .../NOTES.md | 1 + .../README.md | 25 + ...80-count-integers-with-even-digit-sum.java | 11 + .../README.md | 29 + .../2181-merge-nodes-in-between-zeros.java | 27 + .../NOTES.md | 1 + .../README.md | 38 + ...2183-count-array-pairs-divisible-by-k.java | 21 + .../NOTES.md | 1 + .../README.md | 34 + ...uent-number-following-key-in-an-array.java | 20 + .../README.md | 39 + ...215-find-the-difference-of-two-arrays.java | 29 + .../NOTES.md | 1 + .../README.md | 35 + ...lete-the-middle-node-of-a-linked-list.java | 25 + .../README.md | 47 + ...-possible-recipes-from-given-supplies.java | 98 ++ .../README.md | 51 ++ ...0-minimum-bit-flips-to-convert-number.java | 11 + .../README.md | 37 + ...-minimum-rounds-to-complete-all-tasks.java | 15 + .../NOTES.md | 1 + .../README.md | 32 + ...th-with-different-adjacent-characters.java | 34 + .../README.md | 34 + .../225-implement-stack-using-queues.java | 39 + .../225-implement-stack-using-queues/NOTES.md | 1 + .../README.md | 48 + ...mum-swaps-to-group-all-1s-together-ii.java | 28 + .../README.md | 48 + ...divide-a-string-into-groups-of-size-k.java | 20 + .../README.md | 45 + ...largest-3-same-digit-number-in-string.java | 20 + .../NOTES.md | 1 + .../README.md | 47 + ...tition-array-according-to-given-pivot.java | 25 + .../README.md | 45 + .../228-summary-ranges.java | 27 + leetcode/leetcode/228-summary-ranges/NOTES.md | 1 + .../leetcode/228-summary-ranges/README.md | 43 + .../23-merge-k-sorted-lists.java | 46 + .../leetcode/23-merge-k-sorted-lists/NOTES.md | 1 + .../23-merge-k-sorted-lists/README.md | 43 + .../230-kth-smallest-element-in-a-bst.java | 33 + .../NOTES.md | 1 + ...07-replace-non-coprime-numbers-in-array.py | 10 + .../README.md | 53 ++ .../2308-divide-array-into-equal-pairs.java | 61 ++ .../README.md | 39 + .../232-implement-queue-using-stacks.java | 39 + .../232-implement-queue-using-stacks/NOTES.md | 1 + .../README.md | 48 + .../2324-find-triangular-sum-of-an-array.java | 11 + .../README.md | 37 + .../234-palindrome-linked-list/README.md | 25 + .../2352-equal-row-and-column-pairs.java | 23 + .../2352-equal-row-and-column-pairs/NOTES.md | 1 + ...west-common-ancestor-of-a-binary-tree.java | 20 + .../NOTES.md | 1 + .../README.md | 36 + .../238-product-of-array-except-self.java | 22 + .../238-product-of-array-except-self/NOTES.md | 1 + .../README.md | 26 + .../2390-removing-stars-from-a-string.java | 24 + .../NOTES.md | 1 + .../README.md | 45 + ...ount-subarrays-with-score-less-than-k.java | 17 + .../README.md | 45 + .../24-swap-nodes-in-pairs.java | 21 + .../leetcode/24-swap-nodes-in-pairs/README.md | 29 + .../240-search-a-2d-matrix-ii.java | 61 ++ .../240-search-a-2d-matrix-ii/NOTES.md | 1 + .../240-search-a-2d-matrix-ii/README.md | 33 + .../2405-optimal-partition-of-string.java | 14 + .../2405-optimal-partition-of-string/NOTES.md | 1 + .../README.md | 32 + ...est-subarray-with-maximum-bitwise-and.java | 20 + .../NOTES.md | 1 + .../README.md | 41 + .../2421-number-of-good-paths.java | 85 ++ .../2421-number-of-good-paths/README.md | 55 ++ .../2427-first-letter-to-appear-twice.java | 37 + .../README.md | 40 + .../2429-design-a-food-rating-system.java | 61 ++ .../README.md | 63 ++ .../2448-count-number-of-bad-pairs.java | 14 + .../2448-count-number-of-bad-pairs/README.md | 33 + ...f-time-for-binary-tree-to-be-infected.java | 67 ++ .../README.md | 43 + ...ors-to-get-k-consecutive-black-blocks.java | 27 + .../README.md | 40 + ...ations-to-sort-a-binary-tree-by-level.java | 68 ++ .../README.md | 49 + .../2478-longest-nice-subarray.java | 27 + .../2478-longest-nice-subarray/README.md | 37 + ...ween-ones-and-zeros-in-row-and-column.java | 28 + .../NOTES.md | 1 + .../README.md | 55 ++ .../2487-remove-nodes-from-linked-list.java | 51 ++ .../NOTES.md | 1 + .../README.md | 32 + ...493-reverse-odd-levels-of-binary-tree.java | 51 ++ .../README.md | 51 ++ .../2551-apply-operations-to-an-array.java | 28 + .../README.md | 48 + .../2564-most-profitable-path-in-a-tree.java | 68 ++ .../README.md | 69 ++ .../258-add-digits/258-add-digits.java | 11 + leetcode/leetcode/258-add-digits/README.md | 29 + .../2582-pass-the-pillow.java | 8 + .../leetcode/2582-pass-the-pillow/NOTES.md | 1 + .../leetcode/2582-pass-the-pillow/README.md | 32 + ...um-number-of-points-from-grid-queries.java | 126 +++ .../README.md | 41 + .../2610-closest-prime-numbers-in-range.java | 40 + .../README.md | 44 + ...positive-integer-and-negative-integer.java | 40 + .../README.md | 44 + .../263-ugly-number/263-ugly-number.java | 9 + leetcode/leetcode/263-ugly-number/NOTES.md | 1 + leetcode/leetcode/263-ugly-number/README.md | 33 + ...9-count-total-number-of-colored-cells.java | 19 + .../README.md | 34 + .../2665-minimum-time-to-repair-cars.java | 42 + .../README.md | 42 + .../2681-put-marbles-in-bags.java | 16 + .../2681-put-marbles-in-bags/README.md | 42 + .../2690-house-robber-iv.java | 28 + .../leetcode/2690-house-robber-iv/README.md | 40 + .../2707-extra-characters-in-a-string.java | 29 + .../README.md | 31 + ...merge-two-2d-arrays-by-summing-values.java | 43 + .../README.md | 49 + .../2751-robot-collisions.java | 55 ++ .../leetcode/2751-robot-collisions/NOTES.md | 1 + .../279-perfect-squares.java | 34 + .../leetcode/279-perfect-squares/NOTES.md | 1 + ...unt-the-number-of-complete-components.java | 53 ++ .../README.md | 40 + ...eatest-common-divisors-in-linked-list.java | 35 + .../README.md | 36 + .../284-peeking-iterator.java | 29 + .../leetcode/284-peeking-iterator/NOTES.md | 1 + .../leetcode/284-peeking-iterator/README.md | 43 + ...inimum-operations-to-collect-elements.java | 15 + .../NOTES.md | 1 + .../README.md | 38 + .../287-find-the-duplicate-number.java | 10 + .../287-find-the-duplicate-number/NOTES.md | 1 + .../287-find-the-duplicate-number/README.md | 37 + .../2887-sort-vowels-in-a-string.py | 15 + .../2887-sort-vowels-in-a-string/README.md | 35 + .../2888-minimum-index-of-a-valid-split.java | 41 + .../README.md | 54 ++ .../290-word-pattern/290-word-pattern.java | 19 + leetcode/leetcode/290-word-pattern/NOTES.md | 1 + leetcode/leetcode/290-word-pattern/README.md | 35 + .../295-find-median-from-data-stream.java | 37 + .../295-find-median-from-data-stream/NOTES.md | 1 + ...serialize-and-deserialize-binary-tree.java | 54 ++ .../NOTES.md | 1 + .../README.md | 27 + .../300-longest-increasing-subsequence.java | 17 + .../NOTES.md | 1 + .../README.md | 35 + ...01-apply-operations-to-maximize-score.java | 133 +++ .../README.md | 49 + ...ximize-happiness-of-selected-children.java | 13 + .../NOTES.md | 1 + .../README.md | 47 + .../316-remove-duplicate-letters.java | 51 ++ .../316-remove-duplicate-letters/NOTES.md | 1 + .../316-remove-duplicate-letters/README.md | 26 + ...ble-and-non-divisible-sums-difference.java | 13 + .../README.md | 51 ++ ...-distribute-candies-among-children-ii.java | 18 + .../README.md | 28 + ...-max-element-appears-at-least-k-times.java | 19 + .../README.md | 31 + ...3227-find-missing-and-repeated-values.java | 23 + .../README.md | 31 + ...count-elements-with-maximum-frequency.java | 19 + .../README.md | 32 + .../328-odd-even-linked-list.java | 27 + .../328-odd-even-linked-list/NOTES.md | 1 + .../33-search-in-rotated-sorted-array.java | 43 + ...erations-to-exceed-threshold-value-ii.java | 16 + .../README.md | 64 ++ ...8-minimum-cost-walk-in-weighted-graph.java | 97 ++ .../README.md | 54 ++ ...asing-or-strictly-decreasing-subarray.java | 29 + .../README.md | 58 ++ .../338-counting-bits/338-counting-bits.java | 11 + leetcode/leetcode/338-counting-bits/NOTES.md | 1 + leetcode/leetcode/338-counting-bits/README.md | 41 + ...398-make-a-square-with-the-same-color.java | 66 ++ .../README.md | 129 +++ ...t-position-of-element-in-sorted-array.java | 39 + .../NOTES.md | 1 + .../README.md | 27 + .../3430-count-days-without-meetings.java | 18 + .../README.md | 52 ++ .../344-reverse-string.java | 13 + .../leetcode/344-reverse-string/README.md | 20 + .../3447-clear-digits/3447-clear-digits.java | 13 + leetcode/leetcode/3447-clear-digits/README.md | 45 + .../347-top-k-frequent-elements.java | 27 + .../347-top-k-frequent-elements/NOTES.md | 1 + .../347-top-k-frequent-elements/README.md | 22 + ...-binary-array-elements-equal-to-one-i.java | 18 + .../README.md | 48 + .../3483-alternating-groups-ii.java | 35 + .../3483-alternating-groups-ii/README.md | 66 ++ .../350-intersection-of-two-arrays-ii.java | 18 + .../NOTES.md | 1 + .../README.md | 33 + ...des-from-linked-list-present-in-array.java | 30 + .../README.md | 56 ++ .../3541-report-spam-message.java | 13 + .../3541-report-spam-message/README.md | 39 + ...ining-every-vowel-and-k-consonants-ii.java | 57 ++ .../README.md | 55 ++ .../36-valid-sudoku/36-valid-sudoku.java | 14 + leetcode/leetcode/36-valid-sudoku/NOTES.md | 1 + leetcode/leetcode/36-valid-sudoku/README.md | 56 ++ .../3643-zero-array-transformation-ii.java | 31 + .../README.md | 77 ++ ...heck-if-grid-can-be-cut-into-sections.java | 34 + .../README.md | 67 ++ .../README.md | 34 + .../371-sum-of-two-integers.java | 7 + .../leetcode/371-sum-of-two-integers/NOTES.md | 1 + .../371-sum-of-two-integers/README.md | 17 + .../380-insert-delete-getrandom-o1.java | 47 + .../380-insert-delete-getrandom-o1/NOTES.md | 1 + .../380-insert-delete-getrandom-o1/README.md | 40 + .../382-linked-list-random-node.java | 30 + .../382-linked-list-random-node/NOTES.md | 1 + .../382-linked-list-random-node/README.md | 45 + ...87-first-unique-character-in-a-string.java | 12 + .../NOTES.md | 1 + .../README.md | 21 + .../389-find-the-difference.java | 15 + .../leetcode/389-find-the-difference/NOTES.md | 1 + .../389-find-the-difference/README.md | 29 + .../39-combination-sum.java | 36 + leetcode/leetcode/39-combination-sum/NOTES.md | 1 + .../leetcode/39-combination-sum/README.md | 39 + .../392-is-subsequence.java | 18 + leetcode/leetcode/392-is-subsequence/NOTES.md | 1 + .../leetcode/392-is-subsequence/README.md | 23 + .../397-integer-replacement.java | 9 + .../leetcode/397-integer-replacement/NOTES.md | 1 + .../397-integer-replacement/README.md | 38 + .../398-random-pick-index.java | 21 + .../leetcode/398-random-pick-index/NOTES.md | 1 + .../leetcode/398-random-pick-index/README.md | 35 + .../leetcode/400-nth-digit/400-nth-digit.java | 23 + leetcode/leetcode/400-nth-digit/NOTES.md | 1 + leetcode/leetcode/400-nth-digit/README.md | 23 + .../413-arithmetic-slices.java | 28 + .../leetcode/413-arithmetic-slices/NOTES.md | 1 + .../leetcode/413-arithmetic-slices/README.md | 32 + .../416-partition-equal-subset-sum.java | 22 + .../416-partition-equal-subset-sum/NOTES.md | 1 + .../416-partition-equal-subset-sum/README.md | 25 + .../42-trapping-rain-water.java | 20 + .../leetcode/42-trapping-rain-water/NOTES.md | 1 + .../leetcode/42-trapping-rain-water/README.md | 25 + .../429-n-ary-tree-level-order-traversal.java | 43 + .../NOTES.md | 1 + .../README.md | 29 + .../438-find-all-anagrams-in-a-string.java | 32 + .../NOTES.md | 1 + .../README.md | 32 + .../449-serialize-and-deserialize-bst.java | 57 ++ .../NOTES.md | 1 + .../README.md | 23 + .../45-jump-game-ii/45-jump-game-ii.java | 17 + leetcode/leetcode/45-jump-game-ii/NOTES.md | 1 + leetcode/leetcode/45-jump-game-ii/README.md | 30 + .../450-delete-node-in-a-bst.java | 43 + .../450-delete-node-in-a-bst/NOTES.md | 1 + .../450-delete-node-in-a-bst/README.md | 47 + .../451-sort-characters-by-frequency.java | 22 + .../451-sort-characters-by-frequency/NOTES.md | 1 + ...um-number-of-arrows-to-burst-balloons.java | 14 + .../NOTES.md | 1 + .../README.md | 41 + .../46-permutations/46-permutations.java | 26 + leetcode/leetcode/46-permutations/NOTES.md | 1 + leetcode/leetcode/46-permutations/README.md | 22 + ...imum-moves-to-equal-array-elements-ii.java | 13 + .../NOTES.md | 1 + .../README.md | 31 + .../470-implement-rand10-using-rand7.java | 10 + .../470-implement-rand10-using-rand7/NOTES.md | 1 + .../README.md | 30 + .../48-rotate-image/48-rotate-image.java | 31 + leetcode/leetcode/48-rotate-image/NOTES.md | 1 + leetcode/leetcode/48-rotate-image/README.md | 26 + .../494-target-sum/494-target-sum.java | 13 + leetcode/leetcode/494-target-sum/NOTES.md | 1 + leetcode/leetcode/494-target-sum/README.md | 39 + .../496-next-greater-element-i.java | 16 + .../496-next-greater-element-i/NOTES.md | 1 + .../496-next-greater-element-i/README.md | 40 + .../509-fibonacci-number.java | 16 + .../leetcode/509-fibonacci-number/NOTES.md | 1 + .../leetcode/509-fibonacci-number/README.md | 37 + .../511-game-play-analysis-i.sql | 2 + .../511-game-play-analysis-i/NOTES.md | 1 + .../511-game-play-analysis-i/README.md | 47 + ...5-find-largest-value-in-each-tree-row.java | 34 + .../NOTES.md | 1 + .../README.md | 23 + .../520-detect-capital.java | 24 + leetcode/leetcode/520-detect-capital/NOTES.md | 1 + .../525-contiguous-array.java | 22 + .../leetcode/525-contiguous-array/NOTES.md | 1 + .../leetcode/525-contiguous-array/README.md | 25 + .../532-k-diff-pairs-in-an-array.java | 28 + .../532-k-diff-pairs-in-an-array/NOTES.md | 1 + .../532-k-diff-pairs-in-an-array/README.md | 44 + .../538-convert-bst-to-greater-tree.java | 25 + .../538-convert-bst-to-greater-tree/NOTES.md | 1 + .../538-convert-bst-to-greater-tree/README.md | 36 + .../54-spiral-matrix/54-spiral-matrix.java | 27 + leetcode/leetcode/54-spiral-matrix/NOTES.md | 1 + leetcode/leetcode/54-spiral-matrix/README.md | 25 + .../540-single-element-in-a-sorted-array.java | 29 + .../NOTES.md | 1 + .../leetcode/55-jump-game/55-jump-game.java | 16 + leetcode/leetcode/55-jump-game/NOTES.md | 1 + leetcode/leetcode/55-jump-game/README.md | 27 + .../560-subarray-sum-equals-k.java | 14 + .../560-subarray-sum-equals-k/NOTES.md | 1 + .../560-subarray-sum-equals-k/README.md | 19 + .../567-permutation-in-string.java | 30 + .../567-permutation-in-string/NOTES.md | 1 + .../567-permutation-in-string/README.md | 26 + .../575-distribute-candies.java | 9 + .../leetcode/575-distribute-candies/NOTES.md | 1 + .../leetcode/575-distribute-candies/README.md | 38 + .../59-spiral-matrix-ii.java | 33 + .../leetcode/59-spiral-matrix-ii/NOTES.md | 1 + .../leetcode/59-spiral-matrix-ii/README.md | 22 + .../595-big-countries/595-big-countries.sql | 2 + leetcode/leetcode/595-big-countries/NOTES.md | 1 + leetcode/leetcode/595-big-countries/README.md | 53 ++ .../596-classes-more-than-5-students.sql | 2 + .../596-classes-more-than-5-students/NOTES.md | 1 + .../README.md | 51 ++ .../605-can-place-flowers.java | 26 + .../leetcode/605-can-place-flowers/NOTES.md | 1 + .../leetcode/605-can-place-flowers/README.md | 22 + ...606-construct-string-from-binary-tree.java | 42 + .../NOTES.md | 1 + .../README.md | 27 + .../61-rotate-list/61-rotate-list.java | 39 + leetcode/leetcode/61-rotate-list/NOTES.md | 1 + .../62-unique-paths/62-unique-paths.java | 27 + leetcode/leetcode/62-unique-paths/NOTES.md | 1 + leetcode/leetcode/62-unique-paths/README.md | 30 + .../623-add-one-row-to-tree.java | 38 + .../leetcode/623-add-one-row-to-tree/NOTES.md | 1 + .../623-add-one-row-to-tree/README.md | 37 + .../63-unique-paths-ii.java | 33 + leetcode/leetcode/63-unique-paths-ii/NOTES.md | 1 + .../leetcode/63-unique-paths-ii/README.md | 35 + .../NOTES.md | 1 + .../README.md | 24 + .../64-minimum-path-sum.java | 30 + .../leetcode/64-minimum-path-sum/NOTES.md | 1 + .../leetcode/64-minimum-path-sum/README.md | 28 + .../645-set-mismatch/645-set-mismatch.java | 22 + leetcode/leetcode/645-set-mismatch/README.md | 22 + .../662-maximum-width-of-binary-tree.java | 49 + .../662-maximum-width-of-binary-tree/NOTES.md | 1 + .../README.md | 38 + .../669-trim-a-binary-search-tree.java | 27 + .../669-trim-a-binary-search-tree/NOTES.md | 1 + .../669-trim-a-binary-search-tree/README.md | 28 + .../leetcode/67-add-binary/67-add-binary.java | 17 + leetcode/leetcode/67-add-binary/README.md | 19 + ...-second-minimum-node-in-a-binary-tree.java | 33 + .../NOTES.md | 1 + .../README.md | 32 + .../695-max-area-of-island.java | 17 + .../leetcode/695-max-area-of-island/NOTES.md | 1 + .../leetcode/695-max-area-of-island/README.md | 30 + .../70-climbing-stairs.java | 15 + .../leetcode/70-climbing-stairs/README.md | 31 + .../700-search-in-a-binary-search-tree.java | 23 + .../NOTES.md | 1 + .../README.md | 27 + .../701-insert-into-a-binary-search-tree.java | 26 + .../NOTES.md | 1 + .../README.md | 36 + .../704-binary-search/704-binary-search.java | 17 + leetcode/leetcode/704-binary-search/NOTES.md | 1 + leetcode/leetcode/704-binary-search/README.md | 29 + .../709-to-lower-case/709-to-lower-case.java | 5 + leetcode/leetcode/709-to-lower-case/NOTES.md | 1 + leetcode/leetcode/709-to-lower-case/README.md | 29 + .../72-edit-distance/72-edit-distance.java | 30 + leetcode/leetcode/72-edit-distance/NOTES.md | 1 + leetcode/leetcode/72-edit-distance/README.md | 41 + .../73-set-matrix-zeroes.java | 53 ++ .../leetcode/73-set-matrix-zeroes/NOTES.md | 1 + .../leetcode/73-set-matrix-zeroes/README.md | 36 + .../735-asteroid-collision.java | 39 + .../leetcode/735-asteroid-collision/NOTES.md | 1 + .../739-daily-temperatures.java | 22 + .../leetcode/739-daily-temperatures/NOTES.md | 1 + .../leetcode/739-daily-temperatures/README.md | 21 + .../74-search-a-2d-matrix.java | 20 + .../leetcode/74-search-a-2d-matrix/NOTES.md | 1 + .../leetcode/74-search-a-2d-matrix/README.md | 30 + .../740-delete-and-earn.java | 17 + .../leetcode/740-delete-and-earn/README.md | 37 + .../746-min-cost-climbing-stairs.java | 19 + .../746-min-cost-climbing-stairs/NOTES.md | 1 + .../746-min-cost-climbing-stairs/README.md | 38 + ...rgest-number-at-least-twice-of-others.java | 16 + .../NOTES.md | 1 + .../README.md | 36 + .../75-sort-colors/75-sort-colors.java | 24 + leetcode/leetcode/75-sort-colors/NOTES.md | 1 + leetcode/leetcode/75-sort-colors/README.md | 31 + leetcode/leetcode/78-subsets/78-subsets.java | 26 + leetcode/leetcode/78-subsets/NOTES.md | 1 + leetcode/leetcode/78-subsets/README.md | 26 + .../79-word-search/79-word-search.java | 26 + leetcode/leetcode/79-word-search/NOTES.md | 1 + leetcode/leetcode/79-word-search/README.md | 37 + .../799-champagne-tower.java | 17 + .../leetcode/799-champagne-tower/NOTES.md | 1 + .../leetcode/799-champagne-tower/README.md | 38 + .../8-string-to-integer-atoi.java | 29 + .../8-string-to-integer-atoi/NOTES.md | 1 + .../8-string-to-integer-atoi/README.md | 74 ++ ...807-max-increase-to-keep-city-skyline.java | 20 + .../NOTES.md | 1 + .../README.md | 39 + .../814-binary-tree-pruning.c | 18 + .../814-binary-tree-pruning.java | 26 + .../leetcode/814-binary-tree-pruning/NOTES.md | 1 + .../814-binary-tree-pruning/README.md | 34 + ...remove-duplicates-from-sorted-list-ii.java | 31 + .../NOTES.md | 1 + .../README.md | 24 + .../846-hand-of-straights.java | 34 + .../leetcode/846-hand-of-straights/NOTES.md | 1 + .../leetcode/846-hand-of-straights/README.md | 32 + ...9-maximize-distance-to-closest-person.java | 23 + .../NOTES.md | 1 + .../README.md | 44 + .../852-peak-index-in-a-mountain-array.java | 15 + .../NOTES.md | 1 + .../README.md | 44 + .../867-transpose-matrix.java | 13 + .../leetcode/867-transpose-matrix/NOTES.md | 1 + .../leetcode/867-transpose-matrix/README.md | 30 + .../875-koko-eating-bananas.java | 25 + .../leetcode/875-koko-eating-bananas/NOTES.md | 1 + .../875-koko-eating-bananas/README.md | 36 + .../88-merge-sorted-array.java | 17 + .../leetcode/88-merge-sorted-array/NOTES.md | 1 + .../leetcode/88-merge-sorted-array/README.md | 46 + ...from-preorder-and-postorder-traversal.java | 34 + .../NOTES.md | 1 + .../README.md | 30 + .../890-find-and-replace-pattern.java | 21 + .../890-find-and-replace-pattern/NOTES.md | 1 + .../890-find-and-replace-pattern/README.md | 31 + .../9-palindrome-number.cpp | 12 + .../9-palindrome-number.java | 11 + .../leetcode/9-palindrome-number/NOTES.md | 1 + .../leetcode/9-palindrome-number/README.md | 39 + .../931-minimum-falling-path-sum.java | 28 + .../94-binary-tree-inorder-traversal.java | 27 + .../94-binary-tree-inorder-traversal/NOTES.md | 1 + .../README.md | 31 + .../941-valid-mountain-array.java | 18 + .../941-valid-mountain-array/NOTES.md | 1 + .../941-valid-mountain-array/README.md | 33 + .../946-validate-stack-sequences.java | 26 + .../946-validate-stack-sequences/NOTES.md | 1 + .../946-validate-stack-sequences/README.md | 32 + .../96-unique-binary-search-trees.java | 15 + .../96-unique-binary-search-trees/NOTES.md | 1 + .../96-unique-binary-search-trees/README.md | 22 + .../969-pancake-sorting.java | 33 + .../leetcode/969-pancake-sorting/NOTES.md | 1 + .../leetcode/969-pancake-sorting/README.md | 44 + .../973-k-closest-points-to-origin.java | 30 + .../973-k-closest-points-to-origin/NOTES.md | 1 + .../973-k-closest-points-to-origin/README.md | 33 + .../991-broken-calculator.java | 14 + .../leetcode/991-broken-calculator/NOTES.md | 1 + .../leetcode/991-broken-calculator/README.md | 38 + .../leetcode/Binary Search - GFG/README.md | 42 + .../Binary Search - GFG/binary-search.java | 42 + .../README.md | 68 ++ .../bottom-view-of-binary-tree.java | 150 ++++ .../README.md | 58 ++ .../buildings-receiving-sunlight.java | 53 ++ .../leetcode/Check for BST - GFG/README.md | 68 ++ .../Check for BST - GFG/check-for-bst.java | 143 +++ .../README.md | 36 + .../check-if-linked-list-is-palindrome.java | 136 +++ .../README.md | 60 ++ .../connect-nodes-at-same-level.java | 173 ++++ .../README.md | 40 + ...unt-distinct-elements-in-every-window.java | 53 ++ .../README.md | 47 + .../count-pairs-in-array-divisible-by-k.java | 47 + .../README.md | 42 + .../detect-loop-in-linked-list.java | 92 ++ .../Diameter of a Binary Tree - GFG/README.md | 40 + .../diameter-of-a-binary-tree.java | 143 +++ .../Find Transition Point - GFG/README.md | 39 + .../find-transition-point.java | 39 + .../README.md | 38 + .../find-duplicates-in-an-array.java | 41 + .../README.md | 37 + ...nding-middle-element-in-a-linked-list.java | 68 ++ .../GCD of two numbers - GFG/README.md | 32 + .../gcd-of-two-numbers.java | 32 + .../README.md | 37 + .../get-minimum-element-from-stack.java | 88 ++ .../README.md | 37 + ...-linked-list-of-0s-1s-and-2s-sort-it..java | 106 +++ .../Height of Binary Tree - GFG/README.md | 39 + .../height-of-binary-tree.java | 128 +++ .../Inorder Successor in BST - GFG/README.md | 50 ++ .../inorder-successor-in-bst.java | 148 ++++ .../README.md | 57 ++ ...ction-point-in-y-shapped-linked-lists.java | 163 ++++ .../Kadane's Algorithm - GFG/README.md | 44 + .../kadanes-algorithm.java | 50 ++ .../README.md | 51 ++ .../largest-value-in-each-level.java | 137 +++ .../Left View of Binary Tree - GFG/README.md | 42 + .../left-view-of-binary-tree.java | 141 +++ .../README.md | 40 + .../level-order-traversal-in-spiral-form.java | 163 ++++ .../README.md | 40 + ...west-common-ancestor-in-a-binary-tree.java | 135 +++ .../README.md | 51 ++ .../max-sum-subarray-of-size-k.java | 53 ++ .../Maximum no of 1's row - GFG/README.md | 43 + .../maximum-no-of-1s-row.java | 59 ++ .../Minimum Operations - GFG/README.md | 43 + .../minimum-operations.java | 40 + .../Missing number in array - GFG/README.md | 34 + .../missing-number-in-array.java | 35 + .../README.md | 41 + .../move-all-zeroes-to-end-of-array.java | 49 + .../leetcode/Peak element - GFG/README.md | 48 + .../Peak element - GFG/peak-element.java | 63 ++ leetcode/leetcode/README.md | 836 ++++++++++++++++++ .../Rearrange a linked list - GFG/README.md | 40 + .../rearrange-a-linked-list.java | 81 ++ .../README.md | 67 ++ .../remove-loop-in-linked-list.java | 131 +++ .../leetcode/Rotate Array - GFG/README.md | 43 + .../Rotate Array - GFG/rotate-array.c | 58 ++ .../Rotate a Linked List - GFG/README.md | 39 + .../rotate-a-linked-list.java | 92 ++ .../subset-sum-problem.java | 55 ++ leetcode/leetcode/Sum Tree - GFG/README.md | 55 ++ .../leetcode/Sum Tree - GFG/sum-tree.java | 146 +++ .../Top View of Binary Tree - GFG/README.md | 48 + .../top-view-of-binary-tree.java | 163 ++++ .../README.md | 33 + .../trailing-zeroes-in-factorial.java | 38 + .../Transform to Sum Tree - GFG/README.md | 45 + .../README.md | 43 + .../vertical-traversal-of-binary-tree.java | 147 +++ .../README.md | 38 + .../a-number-after-a-double-reversal.java | 7 + leetcode/leetcode/add-digits/README.md | 29 + leetcode/leetcode/add-digits/add-digits.java | 6 + .../leetcode/add-two-numbers-ii/README.md | 35 + .../add-two-numbers-ii.java | 63 ++ leetcode/leetcode/add-two-numbers/README.md | 33 + .../add-two-numbers/add-two-numbers.java | 42 + .../adding-spaces-to-a-string/README.md | 46 + .../adding-spaces-to-a-string.java | 17 + .../apply-discount-every-n-orders/README.md | 58 ++ .../apply-discount-every-n-orders.java | 35 + leetcode/leetcode/arranging-coins/README.md | 26 + .../arranging-coins/arranging-coins.java | 5 + leetcode/leetcode/array-partition-i/README.md | 29 + .../array-partition-i/array-partition-i.java | 10 + .../README.md | 24 + .../average-of-levels-in-binary-tree.java | 48 + .../leetcode/balanced-binary-tree/README.md | 35 + .../balanced-binary-tree.java | 25 + leetcode/leetcode/binary-search/README.md | 29 + .../leetcode/binary-search/binary-search.java | 19 + .../binary-tree-inorder-traversal/README.md | 43 + .../binary-tree-inorder-traversal.java | 27 + .../binary-tree-postorder-traversal/README.md | 43 + .../binary-tree-postorder-traversal.java | 28 + .../binary-tree-preorder-traversal/README.md | 44 + .../binary-tree-preorder-traversal.java | 27 + leetcode/leetcode/binary-tree-tilt/README.md | 44 + .../binary-tree-tilt/binary-tree-tilt.java | 31 + .../bitwise-and-of-numbers-range/README.md | 30 + .../bitwise-and-of-numbers-range.cpp | 12 + .../bitwise-and-of-numbers-range.java | 16 + .../build-array-from-permutation/README.md | 35 + .../build-array-from-permutation.java | 11 + .../README.md | 35 + .../calculate-money-in-leetcode-bank.java | 14 + .../README.md | 50 ++ ...as-a-prefix-of-any-word-in-a-sentence.java | 13 + .../README.md | 37 + ...check-if-all-as-appears-before-all-bs.java | 9 + .../README.md | 41 + ...ne-string-swap-can-make-strings-equal.java | 32 + .../README.md | 26 + .../check-if-the-sentence-is-pangram.java | 13 + .../README.md | 36 + ...k-if-two-string-arrays-are-equivalent.java | 5 + leetcode/leetcode/climbing-stairs/README.md | 31 + .../climbing-stairs/climbing-stairs.cpp | 17 + .../climbing-stairs/climbing-stairs.java | 16 + .../complement-of-base-10-integer/README.md | 40 + .../complement-of-base-10-integer.java | 13 + .../complex-number-multiplication/README.md | 32 + .../complex-number-multiplication.java | 9 + .../leetcode/concatenation-of-array/README.md | 33 + .../concatenation-of-array.java | 18 + .../leetcode/consecutive-characters/README.md | 45 + .../consecutive-characters.java | 16 + .../leetcode/contains-duplicate/README.md | 21 + .../contains-duplicate.java | 10 + .../convert-1d-array-into-2d-array/README.md | 53 ++ .../convert-1d-array-into-2d-array.java | 10 + .../README.md | 44 + ...ry-number-in-a-linked-list-to-integer.java | 28 + .../README.md | 29 + ...rt-sorted-array-to-binary-search-tree.java | 28 + .../README.md | 26 + ...ert-sorted-list-to-binary-search-tree.java | 46 + .../count-complete-tree-nodes/README.md | 34 + .../count-complete-tree-nodes.java | 44 + .../count-items-matching-a-rule/README.md | 36 + .../count-items-matching-a-rule.java | 12 + .../README.md | 40 + ...t-negative-numbers-in-a-sorted-matrix.java | 13 + .../README.md | 47 + ...r-of-pairs-with-absolute-difference-k.java | 9 + .../README.md | 21 + ...ount-odd-numbers-in-an-interval-range.java | 10 + leetcode/leetcode/count-primes/README.md | 29 + .../leetcode/count-primes/count-primes.java | 19 + .../README.md | 55 ++ ...reate-target-array-in-the-given-order.java | 17 + .../README.md | 53 ++ .../delete-leaves-with-a-given-value.java | 24 + .../delete-node-in-a-linked-list/README.md | 47 + .../delete-node-in-a-linked-list.java | 14 + .../README.md | 45 + ...lete-the-middle-node-of-a-linked-list.java | 25 + .../README.md | 46 + ...sign-a-stack-with-increment-operation.java | 41 + .../leetcode/design-browser-history/README.md | 45 + .../design-browser-history.java | 44 + .../leetcode/design-circular-queue/README.md | 50 ++ .../design-circular-queue.java | 66 ++ .../leetcode/design-linked-list/README.md | 43 + .../design-linked-list.java | 105 +++ .../leetcode/destroying-asteroids/README.md | 38 + .../destroying-asteroids.java | 11 + leetcode/leetcode/detect-capital/README.md | 26 + .../detect-capital/detect-capital.java | 25 + .../diameter-of-binary-tree/README.md | 28 + .../diameter-of-binary-tree.java | 35 + .../encode-and-decode-tinyurl/README.md | 35 + .../encode-and-decode-tinyurl.java | 31 + leetcode/leetcode/fibonacci-number/README.md | 37 + .../fibonacci-number/fibonacci-number.java | 16 + .../README.md | 54 ++ ...-variable-after-performing-operations.java | 9 + .../find-all-duplicates-in-an-array/README.md | 25 + .../find-all-duplicates-in-an-array.java | 21 + .../README.md | 28 + ...t-position-of-element-in-sorted-array.java | 36 + .../README.md | 37 + ...first-palindromic-string-in-the-array.java | 18 + .../README.md | 46 + .../find-minimum-in-rotated-sorted-array.java | 21 + leetcode/leetcode/find-pivot-index/README.md | 47 + .../find-pivot-index/find-pivot-index.java | 16 + .../find-the-duplicate-number/README.md | 38 + .../find-the-duplicate-number.java | 11 + .../README.md | 47 + ...e-student-that-will-replace-the-chalk.java | 14 + .../leetcode/find-the-town-judge/README.md | 45 + .../find-the-town-judge.java | 13 + .../README.md | 49 + .../finding-pairs-with-a-certain-sum.java | 33 + leetcode/leetcode/first-bad-version/README.md | 31 + .../first-bad-version/first-bad-version.java | 14 + .../leetcode/first-missing-positive/README.md | 23 + .../first-missing-positive.java | 19 + .../README.md | 21 + .../first-unique-character-in-a-string.java | 14 + .../README.md | 72 ++ ...atten-a-multilevel-doubly-linked-list.java | 32 + .../README.md | 37 + .../flatten-binary-tree-to-linked-list.java | 37 + .../guess-number-higher-or-lower/README.md | 38 + .../guess-number-higher-or-lower.java | 25 + leetcode/leetcode/implement-strstr/README.md | 29 + .../implement-strstr/implement-strstr.java | 11 + .../README.md | 36 + .../insert-into-a-binary-search-tree.java | 29 + .../intersection-of-two-arrays/README.md | 24 + .../intersection-of-two-arrays.java | 18 + .../leetcode/invert-binary-tree/README.md | 29 + .../invert-binary-tree.java | 28 + .../kth-largest-element-in-an-array/README.md | 20 + .../kth-largest-element-in-an-array.java | 13 + .../largest-perimeter-triangle/README.md | 24 + .../largest-perimeter-triangle.java | 9 + .../leetcode/length-of-last-word/README.md | 35 + .../length-of-last-word.java | 19 + leetcode/leetcode/linked-list-cycle/README.md | 40 + .../linked-list-cycle/linked-list-cycle.java | 23 + .../linked-list-random-node/README.md | 45 + .../linked-list-random-node.java | 39 + .../longest-increasing-subsequence/README.md | 35 + .../longest-increasing-subsequence.java | 15 + .../README.md | 33 + ...ubstring-without-repeating-characters.java | 22 + leetcode/leetcode/majority-element/README.md | 23 + .../majority-element/majority-element.java | 15 + .../README.md | 40 + ...-arrays-equal-by-reversing-sub-arrays.java | 11 + .../leetcode/matrix-diagonal-sum/README.md | 39 + .../matrix-diagonal-sum.java | 14 + .../leetcode/max-consecutive-ones/README.md | 24 + .../max-consecutive-ones.java | 15 + .../leetcode/maximum-binary-tree/README.md | 42 + .../maximum-binary-tree.java | 36 + .../maximum-depth-of-binary-tree/README.md | 37 + .../maximum-depth-of-binary-tree.java | 21 + .../maximum-depth-of-n-ary-tree/README.md | 31 + .../maximum-depth-of-n-ary-tree.java | 35 + .../leetcode/maximum-ice-cream-bars/README.md | 39 + .../maximum-ice-cream-bars.java | 25 + .../README.md | 46 + .../maximum-number-of-coins-you-can-get.java | 16 + .../README.md | 34 + ...-product-difference-between-two-pairs.java | 47 + .../README.md | 21 + .../maximum-product-of-three-numbers.java | 11 + .../README.md | 30 + ...m-product-of-two-elements-in-an-array.java | 15 + .../maximum-product-subarray/README.md | 30 + .../maximum-product-subarray.java | 18 + leetcode/leetcode/maximum-subarray/README.md | 35 + .../maximum-subarray/maximum-subarray.java | 12 + .../median-of-two-sorted-arrays/README.md | 49 + .../median-of-two-sorted-arrays.java | 33 + .../merge-in-between-linked-lists/README.md | 32 + .../merge-in-between-linked-lists.java | 32 + .../leetcode/merge-two-sorted-lists/README.md | 30 + .../merge-two-sorted-lists.java | 36 + .../middle-of-the-linked-list/README.md | 27 + .../middle-of-the-linked-list.java | 21 + .../README.md | 41 + .../minimize-maximum-pair-sum-in-array.java | 18 + .../minimum-absolute-difference/README.md | 37 + .../minimum-absolute-difference.java | 18 + .../README.md | 31 + ...imum-moves-to-equal-array-elements-ii.java | 14 + .../README.md | 33 + ...rations-to-move-all-balls-to-each-box.java | 26 + .../README.md | 49 + ...-of-steps-to-make-two-strings-anagram.java | 21 + .../README.md | 29 + ...inimum-operations-to-make-array-equal.java | 17 + leetcode/leetcode/missing-number/README.md | 43 + .../missing-number/missing-number.java | 10 + leetcode/leetcode/move-zeroes/README.md | 23 + .../leetcode/move-zeroes/move-zeroes.java | 14 + .../n-ary-tree-postorder-traversal/README.md | 29 + .../n-ary-tree-postorder-traversal.java | 32 + .../n-ary-tree-preorder-traversal/README.md | 33 + .../n-ary-tree-preorder-traversal.java | 32 + .../README.md | 31 + .../n-repeated-element-in-size-2n-array.java | 11 + leetcode/leetcode/number-complement/README.md | 33 + .../number-complement/number-complement.java | 13 + .../number-of-laser-beams-in-a-bank/README.md | 48 + .../number-of-laser-beams-in-a-bank.java | 20 + .../number-of-segments-in-a-string/README.md | 39 + .../number-of-segments-in-a-string.java | 14 + .../README.md | 42 + ...r-of-steps-to-reduce-a-number-to-zero.java | 14 + .../leetcode/odd-even-linked-list/README.md | 30 + .../odd-even-linked-list.java | 35 + .../leetcode/palindrome-linked-list/README.md | 25 + .../palindrome-linked-list.java | 47 + leetcode/leetcode/palindrome-number/README.md | 40 + .../palindrome-number/palindrome-number.java | 14 + leetcode/leetcode/partition-list/README.md | 26 + .../partition-list/partition-list.java | 33 + .../README.md | 33 + ...minimum-number-of-deci-binary-numbers.java | 14 + .../leetcode/pascals-triangle-ii/README.md | 25 + .../pascals-triangle-ii.java | 22 + leetcode/leetcode/pascals-triangle/README.md | 19 + .../pascals-triangle/pascals-triangle.java | 23 + leetcode/leetcode/path-sum/README.md | 38 + leetcode/leetcode/plus-one/README.md | 50 ++ leetcode/leetcode/plus-one/plus-one.java | 26 + leetcode/leetcode/power-of-two/README.md | 46 + .../leetcode/power-of-two/power-of-two.java | 12 + .../leetcode/power-of-two/power-of-two.py | 7 + leetcode/leetcode/range-sum-of-bst/README.md | 27 + .../range-sum-of-bst/range-sum-of-bst.java | 29 + .../reduce-array-size-to-the-half/README.md | 30 + .../reduce-array-size-to-the-half.java | 20 + .../README.md | 30 + ...ove-all-adjacent-duplicates-in-string.java | 17 + .../README.md | 43 + ...remove-all-occurrences-of-a-substring.java | 9 + .../README.md | 51 ++ .../remove-duplicates-from-sorted-array.java | 21 + .../README.md | 24 + ...remove-duplicates-from-sorted-list-ii.java | 31 + leetcode/leetcode/remove-element/README.md | 55 ++ .../remove-element/remove-element.java | 16 + .../remove-linked-list-elements/README.md | 30 + .../remove-linked-list-elements.java | 25 + .../README.md | 34 + .../remove-nth-node-from-end-of-list.java | 29 + leetcode/leetcode/reorder-list/README.md | 33 + .../leetcode/reorder-list/reorder-list.java | 51 ++ .../leetcode/reordered-power-of-2/README.md | 42 + .../reordered-power-of-2.java | 21 + leetcode/leetcode/reverse-integer/README.md | 25 + .../reverse-integer/reverse-integer.java | 11 + .../leetcode/reverse-linked-list-ii/README.md | 28 + .../reverse-linked-list-ii.java | 55 ++ .../leetcode/reverse-linked-list/README.md | 32 + .../reverse-linked-list.java | 26 + .../reverse-nodes-in-k-group/README.md | 31 + .../reverse-nodes-in-k-group.java | 43 + leetcode/leetcode/reverse-string/README.md | 20 + .../reverse-string/reverse-string.java | 13 + .../reverse-words-in-a-string/README.md | 54 ++ .../reverse-words-in-a-string.java | 22 + leetcode/leetcode/rotate-array/README.md | 39 + .../leetcode/rotate-array/rotate-array.java | 21 + leetcode/leetcode/rotate-list/README.md | 24 + .../leetcode/rotate-list/rotate-list.java | 39 + .../running-sum-of-1d-array/README.md | 30 + .../running-sum-of-1d-array.java | 10 + leetcode/leetcode/same-tree/README.md | 31 + leetcode/leetcode/same-tree/same-tree.java | 25 + .../leetcode/search-insert-position/README.md | 33 + .../search-insert-position.java | 13 + .../README.md | 28 + .../second-largest-digit-in-a-string.java | 22 + leetcode/leetcode/shuffle-an-array/README.md | 39 + .../shuffle-an-array/shuffle-an-array.java | 33 + .../sign-of-the-product-of-an-array/README.md | 42 + .../sign-of-the-product-of-an-array.java | 10 + .../leetcode/simple-bank-system/README.md | 50 ++ .../simple-bank-system.java | 43 + .../README.md | 20 + .../single-element-in-a-sorted-array.java | 16 + leetcode/leetcode/single-number-ii/README.md | 21 + .../single-number-ii/single-number-ii.java | 19 + leetcode/leetcode/single-number/README.md | 24 + .../leetcode/single-number/single-number.java | 9 + leetcode/leetcode/sort-an-array/README.md | 18 + .../leetcode/sort-an-array/sort-an-array.java | 54 ++ .../sort-array-by-parity.java | 27 + leetcode/leetcode/sort-colors/README.md | 33 + .../leetcode/sort-colors/sort-colors.java | 45 + leetcode/leetcode/sort-list/README.md | 33 + leetcode/leetcode/sort-list/sort-list.java | 56 ++ .../leetcode/subdomain-visit-count/README.md | 38 + .../subdomain-visit-count.java | 21 + .../README.md | 51 ++ ...sum-of-digits-of-string-after-convert.java | 35 + .../leetcode/sum-of-left-leaves/README.md | 24 + .../sum-of-left-leaves.java | 25 + .../README.md | 26 + ...of-nodes-with-even-valued-grandparent.java | 41 + .../leetcode/sum-of-unique-elements/README.md | 34 + .../sum-of-unique-elements.java | 17 + .../leetcode/swap-nodes-in-pairs/README.md | 29 + .../swap-nodes-in-pairs.java | 30 + .../swapping-nodes-in-a-linked-list/README.md | 44 + .../swapping-nodes-in-a-linked-list.java | 41 + .../leetcode/the-kth-factor-of-n/README.md | 48 + .../the-kth-factor-of-n.java | 10 + .../time-needed-to-buy-tickets/README.md | 39 + .../time-needed-to-buy-tickets.java | 16 + leetcode/leetcode/truncate-sentence/README.md | 45 + .../truncate-sentence/truncate-sentence.java | 9 + .../README.md | 39 + .../two-sum-ii-input-array-is-sorted.java | 26 + leetcode/leetcode/two-sum/README.md | 38 + leetcode/leetcode/two-sum/two-sum.java | 15 + .../unique-number-of-occurrences/README.md | 29 + .../unique-number-of-occurrences.java | 13 + leetcode/leetcode/valid-parentheses/README.md | 48 + .../valid-parentheses/valid-parentheses.java | 21 + .../leetcode/valid-perfect-square/README.md | 19 + .../valid-perfect-square.cpp | 18 + .../leetcode/valid-triangle-number/README.md | 27 + .../valid-triangle-number.java | 21 + .../validate-binary-search-tree/README.md | 32 + .../validate-binary-search-tree.java | 29 + leetcode/leetcode/water-bottles/README.md | 46 + .../leetcode/water-bottles/water-bottles.java | 12 + leetcode/leetcode/watering-plants/README.md | 59 ++ .../watering-plants/watering-plants.java | 19 + 1818 files changed, 52176 insertions(+) create mode 100644 .DS_Store create mode 100644 leetcode/leetcode/0001-two-sum/0001-two-sum.cpp create mode 100644 leetcode/leetcode/0001-two-sum/0001-two-sum.java create mode 100644 leetcode/leetcode/0001-two-sum/NOTES.md create mode 100644 leetcode/leetcode/0001-two-sum/README.md create mode 100644 leetcode/leetcode/0003-longest-substring-without-repeating-characters/0003-longest-substring-without-repeating-characters.java create mode 100644 leetcode/leetcode/0003-longest-substring-without-repeating-characters/README.md create mode 100644 leetcode/leetcode/0005-longest-palindromic-substring/0005-longest-palindromic-substring.java create mode 100644 leetcode/leetcode/0005-longest-palindromic-substring/NOTES.md create mode 100644 leetcode/leetcode/0005-longest-palindromic-substring/README.md create mode 100644 leetcode/leetcode/0009-palindrome-number/0009-palindrome-number.java create mode 100644 leetcode/leetcode/0009-palindrome-number/NOTES.md create mode 100644 leetcode/leetcode/0011-container-with-most-water/0011-container-with-most-water.java create mode 100644 leetcode/leetcode/0011-container-with-most-water/NOTES.md create mode 100644 leetcode/leetcode/0011-container-with-most-water/README.md create mode 100644 leetcode/leetcode/0013-roman-to-integer/0013-roman-to-integer.java create mode 100644 leetcode/leetcode/0013-roman-to-integer/NOTES.md create mode 100644 leetcode/leetcode/0013-roman-to-integer/README.md create mode 100644 leetcode/leetcode/0014-longest-common-prefix/0014-longest-common-prefix.java create mode 100644 leetcode/leetcode/0014-longest-common-prefix/NOTES.md create mode 100644 leetcode/leetcode/0014-longest-common-prefix/README.md create mode 100644 leetcode/leetcode/0015-3sum/0015-3sum.java create mode 100644 leetcode/leetcode/0015-3sum/README.md create mode 100644 leetcode/leetcode/0016-3sum-closest/0016-3sum-closest.java create mode 100644 leetcode/leetcode/0016-3sum-closest/README.md create mode 100644 leetcode/leetcode/0020-valid-parentheses/0020-valid-parentheses.java create mode 100644 leetcode/leetcode/0020-valid-parentheses/README.md create mode 100644 leetcode/leetcode/0021-merge-two-sorted-lists/0021-merge-two-sorted-lists.java create mode 100644 leetcode/leetcode/0021-merge-two-sorted-lists/README.md create mode 100644 leetcode/leetcode/0023-merge-k-sorted-lists/0023-merge-k-sorted-lists.java create mode 100644 leetcode/leetcode/0023-merge-k-sorted-lists/README.md create mode 100644 leetcode/leetcode/0024-swap-nodes-in-pairs/0024-swap-nodes-in-pairs.java create mode 100644 leetcode/leetcode/0024-swap-nodes-in-pairs/NOTES.md create mode 100644 leetcode/leetcode/0024-swap-nodes-in-pairs/README.md create mode 100644 leetcode/leetcode/0025-reverse-nodes-in-k-group/0025-reverse-nodes-in-k-group.java create mode 100644 leetcode/leetcode/0025-reverse-nodes-in-k-group/README.md create mode 100644 leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/0028-find-the-index-of-the-first-occurrence-in-a-string.java create mode 100644 leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/NOTES.md create mode 100644 leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/README.md create mode 100644 leetcode/leetcode/0029-divide-two-integers/0029-divide-two-integers.java create mode 100644 leetcode/leetcode/0029-divide-two-integers/README.md create mode 100644 leetcode/leetcode/0032-longest-valid-parentheses/0032-longest-valid-parentheses.java create mode 100644 leetcode/leetcode/0032-longest-valid-parentheses/NOTES.md create mode 100644 leetcode/leetcode/0032-longest-valid-parentheses/README.md create mode 100644 leetcode/leetcode/0033-search-in-rotated-sorted-array/0033-search-in-rotated-sorted-array.java create mode 100644 leetcode/leetcode/0033-search-in-rotated-sorted-array/README.md create mode 100644 leetcode/leetcode/0034-find-first-and-last-position-of-element-in-sorted-array/0034-find-first-and-last-position-of-element-in-sorted-array.java create mode 100644 leetcode/leetcode/0034-find-first-and-last-position-of-element-in-sorted-array/README.md create mode 100644 leetcode/leetcode/0038-count-and-say/0038-count-and-say.java create mode 100644 leetcode/leetcode/0038-count-and-say/README.md create mode 100644 leetcode/leetcode/0039-combination-sum/0039-combination-sum.java create mode 100644 leetcode/leetcode/0039-combination-sum/0039-combination-sum.py create mode 100644 leetcode/leetcode/0039-combination-sum/README.md create mode 100644 leetcode/leetcode/0040-combination-sum-ii/0040-combination-sum-ii.py create mode 100644 leetcode/leetcode/0040-combination-sum-ii/README.md create mode 100644 leetcode/leetcode/0045-jump-game-ii/0045-jump-game-ii.java create mode 100644 leetcode/leetcode/0045-jump-game-ii/README.md create mode 100644 leetcode/leetcode/0046-permutations/0046-permutations.java create mode 100644 leetcode/leetcode/0046-permutations/README.md create mode 100644 leetcode/leetcode/0048-rotate-image/0048-rotate-image.java create mode 100644 leetcode/leetcode/0048-rotate-image/README.md create mode 100644 leetcode/leetcode/0049-group-anagrams/0049-group-anagrams.java create mode 100644 leetcode/leetcode/0049-group-anagrams/README.md create mode 100644 leetcode/leetcode/0050-powx-n/0050-powx-n.java create mode 100644 leetcode/leetcode/0050-powx-n/NOTES.md create mode 100644 leetcode/leetcode/0050-powx-n/README.md create mode 100644 leetcode/leetcode/0053-maximum-subarray/0053-maximum-subarray.java create mode 100644 leetcode/leetcode/0053-maximum-subarray/README.md create mode 100644 leetcode/leetcode/0055-jump-game/0055-jump-game.java create mode 100644 leetcode/leetcode/0055-jump-game/README.md create mode 100644 leetcode/leetcode/0056-merge-intervals/0056-merge-intervals.java create mode 100644 leetcode/leetcode/0056-merge-intervals/README.md create mode 100644 leetcode/leetcode/0057-insert-interval/0057-insert-interval.java create mode 100644 leetcode/leetcode/0057-insert-interval/README.md create mode 100644 leetcode/leetcode/0058-length-of-last-word/0058-length-of-last-word.java create mode 100644 leetcode/leetcode/0058-length-of-last-word/NOTES.md create mode 100644 leetcode/leetcode/0058-length-of-last-word/README.md create mode 100644 leetcode/leetcode/0061-rotate-list/0061-rotate-list.java create mode 100644 leetcode/leetcode/0061-rotate-list/NOTES.md create mode 100644 leetcode/leetcode/0061-rotate-list/README.md create mode 100644 leetcode/leetcode/0062-unique-paths/0062-unique-paths.java create mode 100644 leetcode/leetcode/0062-unique-paths/README.md create mode 100644 leetcode/leetcode/0063-unique-paths-ii/0063-unique-paths-ii.java create mode 100644 leetcode/leetcode/0063-unique-paths-ii/README.md create mode 100644 leetcode/leetcode/0064-minimum-path-sum/0064-minimum-path-sum.java create mode 100644 leetcode/leetcode/0064-minimum-path-sum/README.md create mode 100644 leetcode/leetcode/0069-sqrtx/0069-sqrtx.java create mode 100644 leetcode/leetcode/0069-sqrtx/README.md create mode 100644 leetcode/leetcode/0070-climbing-stairs/0070-climbing-stairs.java create mode 100644 leetcode/leetcode/0070-climbing-stairs/README.md create mode 100644 leetcode/leetcode/0073-set-matrix-zeroes/0073-set-matrix-zeroes.java create mode 100644 leetcode/leetcode/0073-set-matrix-zeroes/NOTES.md create mode 100644 leetcode/leetcode/0073-set-matrix-zeroes/README.md create mode 100644 leetcode/leetcode/0075-sort-colors/0075-sort-colors.java create mode 100644 leetcode/leetcode/0075-sort-colors/README.md create mode 100644 leetcode/leetcode/0076-minimum-window-substring/0076-minimum-window-substring.java create mode 100644 leetcode/leetcode/0076-minimum-window-substring/README.md create mode 100644 leetcode/leetcode/0078-subsets/0078-subsets.java create mode 100644 leetcode/leetcode/0078-subsets/0078-subsets.py create mode 100644 leetcode/leetcode/0078-subsets/README.md create mode 100644 leetcode/leetcode/0082-remove-duplicates-from-sorted-list-ii/0082-remove-duplicates-from-sorted-list-ii.cpp create mode 100644 leetcode/leetcode/0082-remove-duplicates-from-sorted-list-ii/README.md create mode 100644 leetcode/leetcode/0083-remove-duplicates-from-sorted-list/0083-remove-duplicates-from-sorted-list.java create mode 100644 leetcode/leetcode/0083-remove-duplicates-from-sorted-list/README.md create mode 100644 leetcode/leetcode/0088-merge-sorted-array/0088-merge-sorted-array.java create mode 100644 leetcode/leetcode/0088-merge-sorted-array/NOTES.md create mode 100644 leetcode/leetcode/0088-merge-sorted-array/README.md create mode 100644 leetcode/leetcode/0092-reverse-linked-list-ii/0092-reverse-linked-list-ii.java create mode 100644 leetcode/leetcode/0092-reverse-linked-list-ii/README.md create mode 100644 leetcode/leetcode/0094-binary-tree-inorder-traversal/0094-binary-tree-inorder-traversal.java create mode 100644 leetcode/leetcode/0094-binary-tree-inorder-traversal/0094-binary-tree-inorder-traversal.py create mode 100644 leetcode/leetcode/0094-binary-tree-inorder-traversal/README.md create mode 100644 leetcode/leetcode/0098-validate-binary-search-tree/0098-validate-binary-search-tree.java create mode 100644 leetcode/leetcode/0098-validate-binary-search-tree/0098-validate-binary-search-tree.py create mode 100644 leetcode/leetcode/0098-validate-binary-search-tree/README.md create mode 100644 leetcode/leetcode/0100-same-tree/0100-same-tree.java create mode 100644 leetcode/leetcode/0100-same-tree/NOTES.md create mode 100644 leetcode/leetcode/0100-same-tree/README.md create mode 100644 leetcode/leetcode/0102-binary-tree-level-order-traversal/0102-binary-tree-level-order-traversal.java create mode 100644 leetcode/leetcode/0102-binary-tree-level-order-traversal/README.md create mode 100644 leetcode/leetcode/0103-binary-tree-zigzag-level-order-traversal/0103-binary-tree-zigzag-level-order-traversal.java create mode 100644 leetcode/leetcode/0103-binary-tree-zigzag-level-order-traversal/README.md create mode 100644 leetcode/leetcode/0104-maximum-depth-of-binary-tree/0104-maximum-depth-of-binary-tree.java create mode 100644 leetcode/leetcode/0104-maximum-depth-of-binary-tree/README.md create mode 100644 leetcode/leetcode/0106-construct-binary-tree-from-inorder-and-postorder-traversal/0106-construct-binary-tree-from-inorder-and-postorder-traversal.cpp create mode 100644 leetcode/leetcode/0106-construct-binary-tree-from-inorder-and-postorder-traversal/README.md create mode 100644 leetcode/leetcode/0108-convert-sorted-array-to-binary-search-tree/0108-convert-sorted-array-to-binary-search-tree.java create mode 100644 leetcode/leetcode/0108-convert-sorted-array-to-binary-search-tree/README.md create mode 100644 leetcode/leetcode/0110-balanced-binary-tree/0110-balanced-binary-tree.java create mode 100644 leetcode/leetcode/0110-balanced-binary-tree/README.md create mode 100644 leetcode/leetcode/0112-path-sum/0112-path-sum.java create mode 100644 leetcode/leetcode/0112-path-sum/README.md create mode 100644 leetcode/leetcode/0114-flatten-binary-tree-to-linked-list/0114-flatten-binary-tree-to-linked-list.java create mode 100644 leetcode/leetcode/0114-flatten-binary-tree-to-linked-list/README.md create mode 100644 leetcode/leetcode/0116-populating-next-right-pointers-in-each-node/0116-populating-next-right-pointers-in-each-node.java create mode 100644 leetcode/leetcode/0116-populating-next-right-pointers-in-each-node/README.md create mode 100644 leetcode/leetcode/0118-pascals-triangle/0118-pascals-triangle.java create mode 100644 leetcode/leetcode/0118-pascals-triangle/README.md create mode 100644 leetcode/leetcode/0119-pascals-triangle-ii/0119-pascals-triangle-ii.java create mode 100644 leetcode/leetcode/0119-pascals-triangle-ii/NOTES.md create mode 100644 leetcode/leetcode/0119-pascals-triangle-ii/README.md create mode 100644 leetcode/leetcode/0120-triangle/0120-triangle.java create mode 100644 leetcode/leetcode/0120-triangle/README.md create mode 100644 leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/0121-best-time-to-buy-and-sell-stock.java create mode 100644 leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/0121-best-time-to-buy-and-sell-stock.py create mode 100644 leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/NOTES.md create mode 100644 leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/README.md create mode 100644 leetcode/leetcode/0124-binary-tree-maximum-path-sum/0124-binary-tree-maximum-path-sum.java create mode 100644 leetcode/leetcode/0124-binary-tree-maximum-path-sum/README.md create mode 100644 leetcode/leetcode/0125-valid-palindrome/0125-valid-palindrome.java create mode 100644 leetcode/leetcode/0125-valid-palindrome/NOTES.md create mode 100644 leetcode/leetcode/0125-valid-palindrome/README.md create mode 100644 leetcode/leetcode/0128-longest-consecutive-sequence/0128-longest-consecutive-sequence.java create mode 100644 leetcode/leetcode/0128-longest-consecutive-sequence/README.md create mode 100644 leetcode/leetcode/0129-sum-root-to-leaf-numbers/0129-sum-root-to-leaf-numbers.java create mode 100644 leetcode/leetcode/0129-sum-root-to-leaf-numbers/README.md create mode 100644 leetcode/leetcode/0131-palindrome-partitioning/0131-palindrome-partitioning.py create mode 100644 leetcode/leetcode/0131-palindrome-partitioning/README.md create mode 100644 leetcode/leetcode/0133-clone-graph/0133-clone-graph.java create mode 100644 leetcode/leetcode/0133-clone-graph/README.md create mode 100644 leetcode/leetcode/0134-gas-station/0134-gas-station.java create mode 100644 leetcode/leetcode/0134-gas-station/README.md create mode 100644 leetcode/leetcode/0138-copy-list-with-random-pointer/0138-copy-list-with-random-pointer.java create mode 100644 leetcode/leetcode/0138-copy-list-with-random-pointer/NOTES.md create mode 100644 leetcode/leetcode/0138-copy-list-with-random-pointer/README.md create mode 100644 leetcode/leetcode/0141-linked-list-cycle/0141-linked-list-cycle.java create mode 100644 leetcode/leetcode/0141-linked-list-cycle/NOTES.md create mode 100644 leetcode/leetcode/0141-linked-list-cycle/README.md create mode 100644 leetcode/leetcode/0142-linked-list-cycle-ii/0142-linked-list-cycle-ii.java create mode 100644 leetcode/leetcode/0142-linked-list-cycle-ii/README.md create mode 100644 leetcode/leetcode/0143-reorder-list/0143-reorder-list.java create mode 100644 leetcode/leetcode/0143-reorder-list/README.md create mode 100644 leetcode/leetcode/0144-binary-tree-preorder-traversal/0144-binary-tree-preorder-traversal.java create mode 100644 leetcode/leetcode/0144-binary-tree-preorder-traversal/0144-binary-tree-preorder-traversal.py create mode 100644 leetcode/leetcode/0144-binary-tree-preorder-traversal/README.md create mode 100644 leetcode/leetcode/0145-binary-tree-postorder-traversal/0145-binary-tree-postorder-traversal.java create mode 100644 leetcode/leetcode/0145-binary-tree-postorder-traversal/NOTES.md create mode 100644 leetcode/leetcode/0145-binary-tree-postorder-traversal/README.md create mode 100644 leetcode/leetcode/0146-lru-cache/0146-lru-cache.java create mode 100644 leetcode/leetcode/0146-lru-cache/README.md create mode 100644 leetcode/leetcode/0149-max-points-on-a-line/0149-max-points-on-a-line.java create mode 100644 leetcode/leetcode/0149-max-points-on-a-line/NOTES.md create mode 100644 leetcode/leetcode/0149-max-points-on-a-line/README.md create mode 100644 leetcode/leetcode/0150-evaluate-reverse-polish-notation/0150-evaluate-reverse-polish-notation.java create mode 100644 leetcode/leetcode/0150-evaluate-reverse-polish-notation/NOTES.md create mode 100644 leetcode/leetcode/0150-evaluate-reverse-polish-notation/README.md create mode 100644 leetcode/leetcode/0151-reverse-words-in-a-string/0151-reverse-words-in-a-string.java create mode 100644 leetcode/leetcode/0151-reverse-words-in-a-string/NOTES.md create mode 100644 leetcode/leetcode/0151-reverse-words-in-a-string/README.md create mode 100644 leetcode/leetcode/0152-maximum-product-subarray/0152-maximum-product-subarray.java create mode 100644 leetcode/leetcode/0152-maximum-product-subarray/README.md create mode 100644 leetcode/leetcode/0153-find-minimum-in-rotated-sorted-array/0153-find-minimum-in-rotated-sorted-array.java create mode 100644 leetcode/leetcode/0153-find-minimum-in-rotated-sorted-array/0153-find-minimum-in-rotated-sorted-array.py create mode 100644 leetcode/leetcode/0153-find-minimum-in-rotated-sorted-array/README.md create mode 100644 leetcode/leetcode/0155-min-stack/0155-min-stack.java create mode 100644 leetcode/leetcode/0155-min-stack/NOTES.md create mode 100644 leetcode/leetcode/0155-min-stack/README.md create mode 100644 leetcode/leetcode/0160-intersection-of-two-linked-lists/0160-intersection-of-two-linked-lists.java create mode 100644 leetcode/leetcode/0160-intersection-of-two-linked-lists/README.md create mode 100644 leetcode/leetcode/0162-find-peak-element/0162-find-peak-element.java create mode 100644 leetcode/leetcode/0162-find-peak-element/README.md create mode 100644 leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/0167-two-sum-ii-input-array-is-sorted.java create mode 100644 leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/NOTES.md create mode 100644 leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/README.md create mode 100644 leetcode/leetcode/0169-majority-element/0169-majority-element.java create mode 100644 leetcode/leetcode/0169-majority-element/NOTES.md create mode 100644 leetcode/leetcode/0169-majority-element/README.md create mode 100644 leetcode/leetcode/0175-combine-two-tables/0175-combine-two-tables.sql create mode 100644 leetcode/leetcode/0175-combine-two-tables/NOTES.md create mode 100644 leetcode/leetcode/0176-second-highest-salary/0176-second-highest-salary.sql create mode 100644 leetcode/leetcode/0176-second-highest-salary/README.md create mode 100644 leetcode/leetcode/0177-nth-highest-salary/README.md create mode 100644 leetcode/leetcode/0179-largest-number/0179-largest-number.java create mode 100644 leetcode/leetcode/0179-largest-number/NOTES.md create mode 100644 leetcode/leetcode/0179-largest-number/README.md create mode 100644 leetcode/leetcode/0187-repeated-dna-sequences/0187-repeated-dna-sequences.java create mode 100644 leetcode/leetcode/0187-repeated-dna-sequences/README.md create mode 100644 leetcode/leetcode/0189-rotate-array/0189-rotate-array.java create mode 100644 leetcode/leetcode/0189-rotate-array/NOTES.md create mode 100644 leetcode/leetcode/0189-rotate-array/README.md create mode 100644 leetcode/leetcode/0191-number-of-1-bits/0191-number-of-1-bits.java create mode 100644 leetcode/leetcode/0191-number-of-1-bits/README.md create mode 100644 leetcode/leetcode/0196-delete-duplicate-emails/0196-delete-duplicate-emails.sql create mode 100644 leetcode/leetcode/0196-delete-duplicate-emails/NOTES.md create mode 100644 leetcode/leetcode/0198-house-robber/0198-house-robber.java create mode 100644 leetcode/leetcode/0198-house-robber/0198-house-robber.py create mode 100644 leetcode/leetcode/0198-house-robber/README.md create mode 100644 leetcode/leetcode/0199-binary-tree-right-side-view/0199-binary-tree-right-side-view.java create mode 100644 leetcode/leetcode/0199-binary-tree-right-side-view/README.md create mode 100644 leetcode/leetcode/0200-number-of-islands/0200-number-of-islands.java create mode 100644 leetcode/leetcode/0200-number-of-islands/README.md create mode 100644 leetcode/leetcode/0201-bitwise-and-of-numbers-range/0201-bitwise-and-of-numbers-range.java create mode 100644 leetcode/leetcode/0201-bitwise-and-of-numbers-range/README.md create mode 100644 leetcode/leetcode/0205-isomorphic-strings/0205-isomorphic-strings.java create mode 100644 leetcode/leetcode/0205-isomorphic-strings/NOTES.md create mode 100644 leetcode/leetcode/0205-isomorphic-strings/README.md create mode 100644 leetcode/leetcode/0206-reverse-linked-list/0206-reverse-linked-list.java create mode 100644 leetcode/leetcode/0206-reverse-linked-list/0206-reverse-linked-list.py create mode 100644 leetcode/leetcode/0206-reverse-linked-list/README.md create mode 100644 leetcode/leetcode/0209-minimum-size-subarray-sum/0209-minimum-size-subarray-sum.java create mode 100644 leetcode/leetcode/0209-minimum-size-subarray-sum/README.md create mode 100644 leetcode/leetcode/0213-house-robber-ii/0213-house-robber-ii.java create mode 100644 leetcode/leetcode/0213-house-robber-ii/README.md create mode 100644 leetcode/leetcode/0214-shortest-palindrome/0214-shortest-palindrome.java create mode 100644 leetcode/leetcode/0214-shortest-palindrome/NOTES.md create mode 100644 leetcode/leetcode/0214-shortest-palindrome/README.md create mode 100644 leetcode/leetcode/0215-kth-largest-element-in-an-array/0215-kth-largest-element-in-an-array.java create mode 100644 leetcode/leetcode/0215-kth-largest-element-in-an-array/NOTES.md create mode 100644 leetcode/leetcode/0215-kth-largest-element-in-an-array/README.md create mode 100644 leetcode/leetcode/0217-contains-duplicate/0217-contains-duplicate.java create mode 100644 leetcode/leetcode/0217-contains-duplicate/README.md create mode 100644 leetcode/leetcode/0225-implement-stack-using-queues/0225-implement-stack-using-queues.java create mode 100644 leetcode/leetcode/0225-implement-stack-using-queues/README.md create mode 100644 leetcode/leetcode/0226-invert-binary-tree/0226-invert-binary-tree.java create mode 100644 leetcode/leetcode/0226-invert-binary-tree/README.md create mode 100644 leetcode/leetcode/0229-majority-element-ii/0229-majority-element-ii.java create mode 100644 leetcode/leetcode/0229-majority-element-ii/README.md create mode 100644 leetcode/leetcode/0230-kth-smallest-element-in-a-bst/0230-kth-smallest-element-in-a-bst.java create mode 100644 leetcode/leetcode/0230-kth-smallest-element-in-a-bst/README.md create mode 100644 leetcode/leetcode/0232-implement-queue-using-stacks/0232-implement-queue-using-stacks.java create mode 100644 leetcode/leetcode/0232-implement-queue-using-stacks/README.md create mode 100644 leetcode/leetcode/0234-palindrome-linked-list/0234-palindrome-linked-list.java create mode 100644 leetcode/leetcode/0234-palindrome-linked-list/README.md create mode 100644 leetcode/leetcode/0235-lowest-common-ancestor-of-a-binary-search-tree/0235-lowest-common-ancestor-of-a-binary-search-tree.java create mode 100644 leetcode/leetcode/0235-lowest-common-ancestor-of-a-binary-search-tree/README.md create mode 100644 leetcode/leetcode/0236-lowest-common-ancestor-of-a-binary-tree/0236-lowest-common-ancestor-of-a-binary-tree.java create mode 100644 leetcode/leetcode/0236-lowest-common-ancestor-of-a-binary-tree/README.md create mode 100644 leetcode/leetcode/0237-delete-node-in-a-linked-list/0237-delete-node-in-a-linked-list.java create mode 100644 leetcode/leetcode/0237-delete-node-in-a-linked-list/NOTES.md create mode 100644 leetcode/leetcode/0237-delete-node-in-a-linked-list/README.md create mode 100644 leetcode/leetcode/0238-product-of-array-except-self/0238-product-of-array-except-self.java create mode 100644 leetcode/leetcode/0238-product-of-array-except-self/NOTES.md create mode 100644 leetcode/leetcode/0238-product-of-array-except-self/README.md create mode 100644 leetcode/leetcode/0239-sliding-window-maximum/0239-sliding-window-maximum.java create mode 100644 leetcode/leetcode/0239-sliding-window-maximum/README.md create mode 100644 leetcode/leetcode/0241-different-ways-to-add-parentheses/0241-different-ways-to-add-parentheses.java create mode 100644 leetcode/leetcode/0241-different-ways-to-add-parentheses/NOTES.md create mode 100644 leetcode/leetcode/0241-different-ways-to-add-parentheses/README.md create mode 100644 leetcode/leetcode/0242-valid-anagram/0242-valid-anagram.java create mode 100644 leetcode/leetcode/0242-valid-anagram/NOTES.md create mode 100644 leetcode/leetcode/0242-valid-anagram/README.md create mode 100644 leetcode/leetcode/0257-binary-tree-paths/0257-binary-tree-paths.py create mode 100644 leetcode/leetcode/0257-binary-tree-paths/README.md create mode 100644 leetcode/leetcode/0268-missing-number/0268-missing-number.java create mode 100644 leetcode/leetcode/0268-missing-number/README.md create mode 100644 leetcode/leetcode/0283-move-zeroes/0283-move-zeroes.java create mode 100644 leetcode/leetcode/0283-move-zeroes/NOTES.md create mode 100644 leetcode/leetcode/0283-move-zeroes/README.md create mode 100644 leetcode/leetcode/0287-find-the-duplicate-number/0287-find-the-duplicate-number.java create mode 100644 leetcode/leetcode/0287-find-the-duplicate-number/README.md create mode 100644 leetcode/leetcode/0300-longest-increasing-subsequence/0300-longest-increasing-subsequence.java create mode 100644 leetcode/leetcode/0300-longest-increasing-subsequence/NOTES.md create mode 100644 leetcode/leetcode/0300-longest-increasing-subsequence/README.md create mode 100644 leetcode/leetcode/0303-range-sum-query-immutable/0303-range-sum-query-immutable.java create mode 100644 leetcode/leetcode/0303-range-sum-query-immutable/README.md create mode 100644 leetcode/leetcode/0322-coin-change/0322-coin-change.java create mode 100644 leetcode/leetcode/0322-coin-change/README.md create mode 100644 leetcode/leetcode/0326-power-of-three/0326-power-of-three.java create mode 100644 leetcode/leetcode/0326-power-of-three/README.md create mode 100644 leetcode/leetcode/0328-odd-even-linked-list/0328-odd-even-linked-list.cpp create mode 100644 leetcode/leetcode/0328-odd-even-linked-list/README.md create mode 100644 leetcode/leetcode/0334-increasing-triplet-subsequence/0334-increasing-triplet-subsequence.java create mode 100644 leetcode/leetcode/0334-increasing-triplet-subsequence/NOTES.md create mode 100644 leetcode/leetcode/0334-increasing-triplet-subsequence/README.md create mode 100644 leetcode/leetcode/0337-house-robber-iii/0337-house-robber-iii.java create mode 100644 leetcode/leetcode/0337-house-robber-iii/README.md create mode 100644 leetcode/leetcode/0338-counting-bits/0338-counting-bits.java create mode 100644 leetcode/leetcode/0338-counting-bits/README.md create mode 100644 leetcode/leetcode/0342-power-of-four/0342-power-of-four.java create mode 100644 leetcode/leetcode/0342-power-of-four/README.md create mode 100644 leetcode/leetcode/0345-reverse-vowels-of-a-string/0345-reverse-vowels-of-a-string.java create mode 100644 leetcode/leetcode/0345-reverse-vowels-of-a-string/README.md create mode 100644 leetcode/leetcode/0347-top-k-frequent-elements/0347-top-k-frequent-elements.java create mode 100644 leetcode/leetcode/0347-top-k-frequent-elements/README.md create mode 100644 leetcode/leetcode/0350-intersection-of-two-arrays-ii/0350-intersection-of-two-arrays-ii.java create mode 100644 leetcode/leetcode/0350-intersection-of-two-arrays-ii/NOTES.md create mode 100644 leetcode/leetcode/0350-intersection-of-two-arrays-ii/README.md create mode 100644 leetcode/leetcode/0374-guess-number-higher-or-lower/0374-guess-number-higher-or-lower.java create mode 100644 leetcode/leetcode/0374-guess-number-higher-or-lower/README.md create mode 100644 leetcode/leetcode/0380-insert-delete-getrandom-o1/README.md create mode 100644 leetcode/leetcode/0386-lexicographical-numbers/0386-lexicographical-numbers.java create mode 100644 leetcode/leetcode/0386-lexicographical-numbers/README.md create mode 100644 leetcode/leetcode/0392-is-subsequence/0392-is-subsequence.java create mode 100644 leetcode/leetcode/0392-is-subsequence/NOTES.md create mode 100644 leetcode/leetcode/0392-is-subsequence/README.md create mode 100644 leetcode/leetcode/0402-remove-k-digits/0402-remove-k-digits.java create mode 100644 leetcode/leetcode/0402-remove-k-digits/README.md create mode 100644 leetcode/leetcode/0404-sum-of-left-leaves/0404-sum-of-left-leaves.java create mode 100644 leetcode/leetcode/0404-sum-of-left-leaves/README.md create mode 100644 leetcode/leetcode/0416-partition-equal-subset-sum/0416-partition-equal-subset-sum.java create mode 100644 leetcode/leetcode/0416-partition-equal-subset-sum/README.md create mode 100644 leetcode/leetcode/0424-longest-repeating-character-replacement/0424-longest-repeating-character-replacement.java create mode 100644 leetcode/leetcode/0424-longest-repeating-character-replacement/README.md create mode 100644 leetcode/leetcode/0435-non-overlapping-intervals/0435-non-overlapping-intervals.java create mode 100644 leetcode/leetcode/0435-non-overlapping-intervals/README.md create mode 100644 leetcode/leetcode/0440-k-th-smallest-in-lexicographical-order/NOTES.md create mode 100644 leetcode/leetcode/0440-k-th-smallest-in-lexicographical-order/README.md create mode 100644 leetcode/leetcode/0443-string-compression/0443-string-compression.java create mode 100644 leetcode/leetcode/0443-string-compression/NOTES.md create mode 100644 leetcode/leetcode/0443-string-compression/README.md create mode 100644 leetcode/leetcode/0451-sort-characters-by-frequency/0451-sort-characters-by-frequency.java create mode 100644 leetcode/leetcode/0451-sort-characters-by-frequency/README.md create mode 100644 leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/0452-minimum-number-of-arrows-to-burst-balloons.java create mode 100644 leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/NOTES.md create mode 100644 leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/README.md create mode 100644 leetcode/leetcode/0480-sliding-window-median/0480-sliding-window-median.java create mode 100644 leetcode/leetcode/0480-sliding-window-median/README.md create mode 100644 leetcode/leetcode/0485-max-consecutive-ones/0485-max-consecutive-ones.java create mode 100644 leetcode/leetcode/0485-max-consecutive-ones/README.md create mode 100644 leetcode/leetcode/0503-next-greater-element-ii/0503-next-greater-element-ii.java create mode 100644 leetcode/leetcode/0503-next-greater-element-ii/README.md create mode 100644 leetcode/leetcode/0509-fibonacci-number/NOTES.md create mode 100644 leetcode/leetcode/0509-fibonacci-number/README.md create mode 100644 leetcode/leetcode/0513-find-bottom-left-tree-value/0513-find-bottom-left-tree-value.java create mode 100644 leetcode/leetcode/0513-find-bottom-left-tree-value/README.md create mode 100644 leetcode/leetcode/0515-find-largest-value-in-each-tree-row/README.md create mode 100644 leetcode/leetcode/0516-longest-palindromic-subsequence/0516-longest-palindromic-subsequence.java create mode 100644 leetcode/leetcode/0516-longest-palindromic-subsequence/README.md create mode 100644 leetcode/leetcode/0525-contiguous-array/0525-contiguous-array.java create mode 100644 leetcode/leetcode/0525-contiguous-array/README.md create mode 100644 leetcode/leetcode/0539-minimum-time-difference/0539-minimum-time-difference.java create mode 100644 leetcode/leetcode/0539-minimum-time-difference/NOTES.md create mode 100644 leetcode/leetcode/0539-minimum-time-difference/README.md create mode 100644 leetcode/leetcode/0540-single-element-in-a-sorted-array/0540-single-element-in-a-sorted-array.java create mode 100644 leetcode/leetcode/0540-single-element-in-a-sorted-array/README.md create mode 100644 leetcode/leetcode/0543-diameter-of-binary-tree/0543-diameter-of-binary-tree.java create mode 100644 leetcode/leetcode/0543-diameter-of-binary-tree/README.md create mode 100644 leetcode/leetcode/0560-subarray-sum-equals-k/0560-subarray-sum-equals-k.java create mode 100644 leetcode/leetcode/0560-subarray-sum-equals-k/README.md create mode 100644 leetcode/leetcode/0584-find-customer-referee/0584-find-customer-referee.sql create mode 100644 leetcode/leetcode/0584-find-customer-referee/README.md create mode 100644 leetcode/leetcode/0605-can-place-flowers/0605-can-place-flowers.java create mode 100644 leetcode/leetcode/0605-can-place-flowers/NOTES.md create mode 100644 leetcode/leetcode/0605-can-place-flowers/README.md create mode 100644 leetcode/leetcode/0621-task-scheduler/0621-task-scheduler.java create mode 100644 leetcode/leetcode/0621-task-scheduler/NOTES.md create mode 100644 leetcode/leetcode/0621-task-scheduler/README.md create mode 100644 leetcode/leetcode/0637-average-of-levels-in-binary-tree/0637-average-of-levels-in-binary-tree.java create mode 100644 leetcode/leetcode/0637-average-of-levels-in-binary-tree/README.md create mode 100644 leetcode/leetcode/0643-maximum-average-subarray-i/0643-maximum-average-subarray-i.java create mode 100644 leetcode/leetcode/0643-maximum-average-subarray-i/NOTES.md create mode 100644 leetcode/leetcode/0643-maximum-average-subarray-i/README.md create mode 100644 leetcode/leetcode/0713-subarray-product-less-than-k/0713-subarray-product-less-than-k.java create mode 100644 leetcode/leetcode/0713-subarray-product-less-than-k/README.md create mode 100644 leetcode/leetcode/0724-find-pivot-index/0724-find-pivot-index.java create mode 100644 leetcode/leetcode/0724-find-pivot-index/NOTES.md create mode 100644 leetcode/leetcode/0724-find-pivot-index/README.md create mode 100644 leetcode/leetcode/0725-split-linked-list-in-parts/0725-split-linked-list-in-parts.java create mode 100644 leetcode/leetcode/0725-split-linked-list-in-parts/README.md create mode 100644 leetcode/leetcode/0735-asteroid-collision/0735-asteroid-collision.java create mode 100644 leetcode/leetcode/0735-asteroid-collision/README.md create mode 100644 leetcode/leetcode/0739-daily-temperatures/0739-daily-temperatures.java create mode 100644 leetcode/leetcode/0739-daily-temperatures/README.md create mode 100644 leetcode/leetcode/0763-partition-labels/0763-partition-labels.java create mode 100644 leetcode/leetcode/0763-partition-labels/NOTES.md create mode 100644 leetcode/leetcode/0763-partition-labels/README.md create mode 100644 leetcode/leetcode/0768-partition-labels/0768-partition-labels.java create mode 100644 leetcode/leetcode/0768-partition-labels/README.md create mode 100644 leetcode/leetcode/0783-search-in-a-binary-search-tree/0783-search-in-a-binary-search-tree.py create mode 100644 leetcode/leetcode/0783-search-in-a-binary-search-tree/README.md create mode 100644 leetcode/leetcode/0784-insert-into-a-binary-search-tree/0784-insert-into-a-binary-search-tree.java create mode 100644 leetcode/leetcode/0784-insert-into-a-binary-search-tree/0784-insert-into-a-binary-search-tree.py create mode 100644 leetcode/leetcode/0784-insert-into-a-binary-search-tree/README.md create mode 100644 leetcode/leetcode/0820-find-eventual-safe-states/0820-find-eventual-safe-states.java create mode 100644 leetcode/leetcode/0820-find-eventual-safe-states/README.md create mode 100644 leetcode/leetcode/0838-design-linked-list/0838-design-linked-list.java create mode 100644 leetcode/leetcode/0838-design-linked-list/README.md create mode 100644 leetcode/leetcode/0844-backspace-string-compare/0844-backspace-string-compare.java create mode 100644 leetcode/leetcode/0844-backspace-string-compare/NOTES.md create mode 100644 leetcode/leetcode/0844-backspace-string-compare/README.md create mode 100644 leetcode/leetcode/0872-leaf-similar-trees/0872-leaf-similar-trees.java create mode 100644 leetcode/leetcode/0872-leaf-similar-trees/NOTES.md create mode 100644 leetcode/leetcode/0872-leaf-similar-trees/README.md create mode 100644 leetcode/leetcode/0884-uncommon-words-from-two-sentences/0884-uncommon-words-from-two-sentences.java create mode 100644 leetcode/leetcode/0884-uncommon-words-from-two-sentences/NOTES.md create mode 100644 leetcode/leetcode/0884-uncommon-words-from-two-sentences/README.md create mode 100644 leetcode/leetcode/0894-all-possible-full-binary-trees/0894-all-possible-full-binary-trees.java create mode 100644 leetcode/leetcode/0894-all-possible-full-binary-trees/NOTES.md create mode 100644 leetcode/leetcode/0894-all-possible-full-binary-trees/README.md create mode 100644 leetcode/leetcode/0907-koko-eating-bananas/0907-koko-eating-bananas.java create mode 100644 leetcode/leetcode/0907-koko-eating-bananas/README.md create mode 100644 leetcode/leetcode/0908-middle-of-the-linked-list/0908-middle-of-the-linked-list.java create mode 100644 leetcode/leetcode/0908-middle-of-the-linked-list/README.md create mode 100644 leetcode/leetcode/0925-construct-binary-tree-from-preorder-and-postorder-traversal/0925-construct-binary-tree-from-preorder-and-postorder-traversal.java create mode 100644 leetcode/leetcode/0925-construct-binary-tree-from-preorder-and-postorder-traversal/README.md create mode 100644 leetcode/leetcode/0926-flip-string-to-monotone-increasing/0926-flip-string-to-monotone-increasing.java create mode 100644 leetcode/leetcode/0926-flip-string-to-monotone-increasing/NOTES.md create mode 100644 leetcode/leetcode/0926-flip-string-to-monotone-increasing/README.md create mode 100644 leetcode/leetcode/0937-online-stock-span/0937-online-stock-span.java create mode 100644 leetcode/leetcode/0937-online-stock-span/README.md create mode 100644 leetcode/leetcode/0944-delete-columns-to-make-sorted/0944-delete-columns-to-make-sorted.java create mode 100644 leetcode/leetcode/0944-delete-columns-to-make-sorted/NOTES.md create mode 100644 leetcode/leetcode/0944-delete-columns-to-make-sorted/README.md create mode 100644 leetcode/leetcode/0954-maximum-sum-circular-subarray/0954-maximum-sum-circular-subarray.java create mode 100644 leetcode/leetcode/0954-maximum-sum-circular-subarray/README.md create mode 100644 leetcode/leetcode/0966-binary-subarrays-with-sum/0966-binary-subarrays-with-sum.java create mode 100644 leetcode/leetcode/0966-binary-subarrays-with-sum/README.md create mode 100644 leetcode/leetcode/0967-minimum-falling-path-sum/0967-minimum-falling-path-sum.java create mode 100644 leetcode/leetcode/0967-minimum-falling-path-sum/README.md create mode 100644 leetcode/leetcode/0988-flip-equivalent-binary-trees/0988-flip-equivalent-binary-trees.java create mode 100644 leetcode/leetcode/0988-flip-equivalent-binary-trees/README.md create mode 100644 leetcode/leetcode/0997-find-the-town-judge/NOTES.md create mode 100644 leetcode/leetcode/0997-find-the-town-judge/README.md create mode 100644 leetcode/leetcode/1-two-sum/1-two-sum.java create mode 100644 leetcode/leetcode/1-two-sum/NOTES.md create mode 100644 leetcode/leetcode/1-two-sum/README.md create mode 100644 leetcode/leetcode/1004-max-consecutive-ones-iii/1004-max-consecutive-ones-iii.java create mode 100644 leetcode/leetcode/1004-max-consecutive-ones-iii/NOTES.md create mode 100644 leetcode/leetcode/1004-max-consecutive-ones-iii/README.md create mode 100644 leetcode/leetcode/1008-construct-binary-search-tree-from-preorder-traversal/1008-construct-binary-search-tree-from-preorder-traversal.java create mode 100644 leetcode/leetcode/1008-construct-binary-search-tree-from-preorder-traversal/NOTES.md create mode 100644 leetcode/leetcode/1008-construct-binary-search-tree-from-preorder-traversal/README.md create mode 100644 leetcode/leetcode/1009-complement-of-base-10-integer/1009-complement-of-base-10-integer.java create mode 100644 leetcode/leetcode/1009-complement-of-base-10-integer/NOTES.md create mode 100644 leetcode/leetcode/1009-complement-of-base-10-integer/README.md create mode 100644 leetcode/leetcode/101-symmetric-tree/101-symmetric-tree.java create mode 100644 leetcode/leetcode/101-symmetric-tree/NOTES.md create mode 100644 leetcode/leetcode/101-symmetric-tree/README.md create mode 100644 leetcode/leetcode/1014-k-closest-points-to-origin/1014-k-closest-points-to-origin.java create mode 100644 leetcode/leetcode/1014-k-closest-points-to-origin/README.md create mode 100644 leetcode/leetcode/1019-next-greater-node-in-linked-list/1019-next-greater-node-in-linked-list.java create mode 100644 leetcode/leetcode/1019-next-greater-node-in-linked-list/NOTES.md create mode 100644 leetcode/leetcode/1019-next-greater-node-in-linked-list/README.md create mode 100644 leetcode/leetcode/102-binary-tree-level-order-traversal/102-binary-tree-level-order-traversal.java create mode 100644 leetcode/leetcode/102-binary-tree-level-order-traversal/NOTES.md create mode 100644 leetcode/leetcode/102-binary-tree-level-order-traversal/README.md create mode 100644 leetcode/leetcode/1022-sum-of-root-to-leaf-binary-numbers/1022-sum-of-root-to-leaf-binary-numbers.java create mode 100644 leetcode/leetcode/1022-sum-of-root-to-leaf-binary-numbers/NOTES.md create mode 100644 leetcode/leetcode/1022-sum-of-root-to-leaf-binary-numbers/README.md create mode 100644 leetcode/leetcode/1026-maximum-difference-between-node-and-ancestor/1026-maximum-difference-between-node-and-ancestor.java create mode 100644 leetcode/leetcode/1026-maximum-difference-between-node-and-ancestor/NOTES.md create mode 100644 leetcode/leetcode/1026-maximum-difference-between-node-and-ancestor/README.md create mode 100644 leetcode/leetcode/1029-vertical-order-traversal-of-a-binary-tree/1029-vertical-order-traversal-of-a-binary-tree.java create mode 100644 leetcode/leetcode/1029-vertical-order-traversal-of-a-binary-tree/README.md create mode 100644 leetcode/leetcode/103-binary-tree-zigzag-level-order-traversal/103-binary-tree-zigzag-level-order-traversal.java create mode 100644 leetcode/leetcode/103-binary-tree-zigzag-level-order-traversal/NOTES.md create mode 100644 leetcode/leetcode/103-binary-tree-zigzag-level-order-traversal/README.md create mode 100644 leetcode/leetcode/1030-smallest-string-starting-from-leaf/1030-smallest-string-starting-from-leaf.java create mode 100644 leetcode/leetcode/1030-smallest-string-starting-from-leaf/README.md create mode 100644 leetcode/leetcode/1034-subarrays-with-k-different-integers/README.md create mode 100644 leetcode/leetcode/1038-binary-search-tree-to-greater-sum-tree/1038-binary-search-tree-to-greater-sum-tree.java create mode 100644 leetcode/leetcode/1038-binary-search-tree-to-greater-sum-tree/NOTES.md create mode 100644 leetcode/leetcode/1038-binary-search-tree-to-greater-sum-tree/README.md create mode 100644 leetcode/leetcode/104-maximum-depth-of-binary-tree/104-maximum-depth-of-binary-tree.java create mode 100644 leetcode/leetcode/104-maximum-depth-of-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/104-maximum-depth-of-binary-tree/README.md create mode 100644 leetcode/leetcode/105-construct-binary-tree-from-preorder-and-inorder-traversal/105-construct-binary-tree-from-preorder-and-inorder-traversal.java create mode 100644 leetcode/leetcode/105-construct-binary-tree-from-preorder-and-inorder-traversal/NOTES.md create mode 100644 leetcode/leetcode/105-construct-binary-tree-from-preorder-and-inorder-traversal/README.md create mode 100644 leetcode/leetcode/1050-construct-binary-search-tree-from-preorder-traversal/1050-construct-binary-search-tree-from-preorder-traversal.java create mode 100644 leetcode/leetcode/1050-construct-binary-search-tree-from-preorder-traversal/README.md create mode 100644 leetcode/leetcode/1056-capacity-to-ship-packages-within-d-days/1056-capacity-to-ship-packages-within-d-days.java create mode 100644 leetcode/leetcode/1056-capacity-to-ship-packages-within-d-days/README.md create mode 100644 leetcode/leetcode/106-construct-binary-tree-from-inorder-and-postorder-traversal/106-construct-binary-tree-from-inorder-and-postorder-traversal.java create mode 100644 leetcode/leetcode/106-construct-binary-tree-from-inorder-and-postorder-traversal/NOTES.md create mode 100644 leetcode/leetcode/106-construct-binary-tree-from-inorder-and-postorder-traversal/README.md create mode 100644 leetcode/leetcode/1061-lexicographically-smallest-equivalent-string/1061-lexicographically-smallest-equivalent-string.java create mode 100644 leetcode/leetcode/1061-lexicographically-smallest-equivalent-string/README.md create mode 100644 leetcode/leetcode/107-binary-tree-level-order-traversal-ii/107-binary-tree-level-order-traversal-ii.java create mode 100644 leetcode/leetcode/107-binary-tree-level-order-traversal-ii/NOTES.md create mode 100644 leetcode/leetcode/107-binary-tree-level-order-traversal-ii/README.md create mode 100644 leetcode/leetcode/1071-greatest-common-divisor-of-strings/1071-greatest-common-divisor-of-strings.java create mode 100644 leetcode/leetcode/1071-greatest-common-divisor-of-strings/NOTES.md create mode 100644 leetcode/leetcode/1071-greatest-common-divisor-of-strings/README.md create mode 100644 leetcode/leetcode/1081-smallest-subsequence-of-distinct-characters/1081-smallest-subsequence-of-distinct-characters.java create mode 100644 leetcode/leetcode/1081-smallest-subsequence-of-distinct-characters/NOTES.md create mode 100644 leetcode/leetcode/1081-smallest-subsequence-of-distinct-characters/README.md create mode 100644 leetcode/leetcode/1089-duplicate-zeros/1089-duplicate-zeros.java create mode 100644 leetcode/leetcode/1089-duplicate-zeros/README.md create mode 100644 leetcode/leetcode/1093-recover-a-tree-from-preorder-traversal/1093-recover-a-tree-from-preorder-traversal.java create mode 100644 leetcode/leetcode/1093-recover-a-tree-from-preorder-traversal/README.md create mode 100644 leetcode/leetcode/11-container-with-most-water/11-container-with-most-water.java create mode 100644 leetcode/leetcode/11-container-with-most-water/NOTES.md create mode 100644 leetcode/leetcode/11-container-with-most-water/README.md create mode 100644 leetcode/leetcode/1110-delete-nodes-and-return-forest/1110-delete-nodes-and-return-forest.java create mode 100644 leetcode/leetcode/1110-delete-nodes-and-return-forest/NOTES.md create mode 100644 leetcode/leetcode/1110-delete-nodes-and-return-forest/README.md create mode 100644 leetcode/leetcode/1122-relative-sort-array/1122-relative-sort-array.java create mode 100644 leetcode/leetcode/1122-relative-sort-array/NOTES.md create mode 100644 leetcode/leetcode/1122-relative-sort-array/README.md create mode 100644 leetcode/leetcode/1137-n-th-tribonacci-number/1137-n-th-tribonacci-number.java create mode 100644 leetcode/leetcode/1137-n-th-tribonacci-number/NOTES.md create mode 100644 leetcode/leetcode/1137-n-th-tribonacci-number/README.md create mode 100644 leetcode/leetcode/1143-longest-common-subsequence/1143-longest-common-subsequence.java create mode 100644 leetcode/leetcode/1143-longest-common-subsequence/NOTES.md create mode 100644 leetcode/leetcode/1143-longest-common-subsequence/README.md create mode 100644 leetcode/leetcode/1153-product-sales-analysis-i/README.md create mode 100644 leetcode/leetcode/116-populating-next-right-pointers-in-each-node/116-populating-next-right-pointers-in-each-node.java create mode 100644 leetcode/leetcode/116-populating-next-right-pointers-in-each-node/NOTES.md create mode 100644 leetcode/leetcode/116-populating-next-right-pointers-in-each-node/README.md create mode 100644 leetcode/leetcode/1160-find-words-that-can-be-formed-by-characters/1160-find-words-that-can-be-formed-by-characters.java create mode 100644 leetcode/leetcode/1160-find-words-that-can-be-formed-by-characters/NOTES.md create mode 100644 leetcode/leetcode/1160-find-words-that-can-be-formed-by-characters/README.md create mode 100644 leetcode/leetcode/1161-maximum-level-sum-of-a-binary-tree/1161-maximum-level-sum-of-a-binary-tree.java create mode 100644 leetcode/leetcode/1161-maximum-level-sum-of-a-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/1161-maximum-level-sum-of-a-binary-tree/README.md create mode 100644 leetcode/leetcode/117-populating-next-right-pointers-in-each-node-ii/117-populating-next-right-pointers-in-each-node-ii.java create mode 100644 leetcode/leetcode/117-populating-next-right-pointers-in-each-node-ii/NOTES.md create mode 100644 leetcode/leetcode/117-populating-next-right-pointers-in-each-node-ii/README.md create mode 100644 leetcode/leetcode/1170-shortest-common-supersequence/1170-shortest-common-supersequence.java create mode 100644 leetcode/leetcode/1170-shortest-common-supersequence/README.md create mode 100644 leetcode/leetcode/1171-remove-zero-sum-consecutive-nodes-from-linked-list/1171-remove-zero-sum-consecutive-nodes-from-linked-list.java create mode 100644 leetcode/leetcode/1171-remove-zero-sum-consecutive-nodes-from-linked-list/NOTES.md create mode 100644 leetcode/leetcode/1171-remove-zero-sum-consecutive-nodes-from-linked-list/README.md create mode 100644 leetcode/leetcode/118-pascals-triangle/118-pascals-triangle.java create mode 100644 leetcode/leetcode/118-pascals-triangle/NOTES.md create mode 100644 leetcode/leetcode/118-pascals-triangle/README.md create mode 100644 leetcode/leetcode/1190-reverse-substrings-between-each-pair-of-parentheses/1190-reverse-substrings-between-each-pair-of-parentheses.java create mode 100644 leetcode/leetcode/1207-unique-number-of-occurrences/1207-unique-number-of-occurrences.java create mode 100644 leetcode/leetcode/1207-unique-number-of-occurrences/NOTES.md create mode 100644 leetcode/leetcode/1207-unique-number-of-occurrences/README.md create mode 100644 leetcode/leetcode/121-best-time-to-buy-and-sell-stock/121-best-time-to-buy-and-sell-stock.java create mode 100644 leetcode/leetcode/121-best-time-to-buy-and-sell-stock/NOTES.md create mode 100644 leetcode/leetcode/121-best-time-to-buy-and-sell-stock/README.md create mode 100644 leetcode/leetcode/1224-minimum-falling-path-sum-ii/1224-minimum-falling-path-sum-ii.java create mode 100644 leetcode/leetcode/1224-minimum-falling-path-sum-ii/README.md create mode 100644 leetcode/leetcode/1249-minimum-remove-to-make-valid-parentheses/1249-minimum-remove-to-make-valid-parentheses.java create mode 100644 leetcode/leetcode/1249-minimum-remove-to-make-valid-parentheses/README.md create mode 100644 leetcode/leetcode/1250-longest-common-subsequence/1250-longest-common-subsequence.java create mode 100644 leetcode/leetcode/1250-longest-common-subsequence/README.md create mode 100644 leetcode/leetcode/1258-article-views-i/1258-article-views-i.sql create mode 100644 leetcode/leetcode/1258-article-views-i/README.md create mode 100644 leetcode/leetcode/1261-find-elements-in-a-contaminated-binary-tree/1261-find-elements-in-a-contaminated-binary-tree.java create mode 100644 leetcode/leetcode/1261-find-elements-in-a-contaminated-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/1261-find-elements-in-a-contaminated-binary-tree/README.md create mode 100644 leetcode/leetcode/1266-minimum-time-visiting-all-points/1266-minimum-time-visiting-all-points.java create mode 100644 leetcode/leetcode/1266-minimum-time-visiting-all-points/README.md create mode 100644 leetcode/leetcode/128-longest-consecutive-sequence/128-longest-consecutive-sequence.java create mode 100644 leetcode/leetcode/128-longest-consecutive-sequence/NOTES.md create mode 100644 leetcode/leetcode/1287-element-appearing-more-than-25-in-sorted-array/1287-element-appearing-more-than-25-in-sorted-array.java create mode 100644 leetcode/leetcode/1287-element-appearing-more-than-25-in-sorted-array/NOTES.md create mode 100644 leetcode/leetcode/1287-element-appearing-more-than-25-in-sorted-array/README.md create mode 100644 leetcode/leetcode/129-sum-root-to-leaf-numbers/129-sum-root-to-leaf-numbers.java create mode 100644 leetcode/leetcode/129-sum-root-to-leaf-numbers/NOTES.md create mode 100644 leetcode/leetcode/129-sum-root-to-leaf-numbers/README.md create mode 100644 leetcode/leetcode/1291-sequential-digits/1291-sequential-digits.java create mode 100644 leetcode/leetcode/1291-sequential-digits/NOTES.md create mode 100644 leetcode/leetcode/1291-sequential-digits/README.md create mode 100644 leetcode/leetcode/1296-divide-array-in-sets-of-k-consecutive-numbers/1296-divide-array-in-sets-of-k-consecutive-numbers.java create mode 100644 leetcode/leetcode/1296-divide-array-in-sets-of-k-consecutive-numbers/NOTES.md create mode 100644 leetcode/leetcode/1296-divide-array-in-sets-of-k-consecutive-numbers/README.md create mode 100644 leetcode/leetcode/1299-replace-elements-with-greatest-element-on-right-side/1299-replace-elements-with-greatest-element-on-right-side.java create mode 100644 leetcode/leetcode/1299-replace-elements-with-greatest-element-on-right-side/NOTES.md create mode 100644 leetcode/leetcode/1299-replace-elements-with-greatest-element-on-right-side/README.md create mode 100644 leetcode/leetcode/1302-deepest-leaves-sum/1302-deepest-leaves-sum.java create mode 100644 leetcode/leetcode/1302-deepest-leaves-sum/NOTES.md create mode 100644 leetcode/leetcode/1302-deepest-leaves-sum/README.md create mode 100644 leetcode/leetcode/1305-all-elements-in-two-binary-search-trees/1305-all-elements-in-two-binary-search-trees.java create mode 100644 leetcode/leetcode/1305-all-elements-in-two-binary-search-trees/NOTES.md create mode 100644 leetcode/leetcode/1305-all-elements-in-two-binary-search-trees/README.md create mode 100644 leetcode/leetcode/1310-xor-queries-of-a-subarray/1310-xor-queries-of-a-subarray.java create mode 100644 leetcode/leetcode/1310-xor-queries-of-a-subarray/README.md create mode 100644 leetcode/leetcode/1315-sum-of-nodes-with-even-valued-grandparent/1315-sum-of-nodes-with-even-valued-grandparent.java create mode 100644 leetcode/leetcode/1315-sum-of-nodes-with-even-valued-grandparent/NOTES.md create mode 100644 leetcode/leetcode/1331-rank-transform-of-an-array/1331-rank-transform-of-an-array.java create mode 100644 leetcode/leetcode/1331-rank-transform-of-an-array/NOTES.md create mode 100644 leetcode/leetcode/1331-rank-transform-of-an-array/README.md create mode 100644 leetcode/leetcode/1335-maximum-candies-allocated-to-k-children/1335-maximum-candies-allocated-to-k-children.java create mode 100644 leetcode/leetcode/1335-maximum-candies-allocated-to-k-children/README.md create mode 100644 leetcode/leetcode/134-gas-station/134-gas-station.java create mode 100644 leetcode/leetcode/134-gas-station/NOTES.md create mode 100644 leetcode/leetcode/134-gas-station/README.md create mode 100644 leetcode/leetcode/136-single-number/136-single-number.java create mode 100644 leetcode/leetcode/136-single-number/NOTES.md create mode 100644 leetcode/leetcode/136-single-number/README.md create mode 100644 leetcode/leetcode/1367-linked-list-in-binary-tree/1367-linked-list-in-binary-tree.java create mode 100644 leetcode/leetcode/1367-linked-list-in-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/1367-linked-list-in-binary-tree/README.md create mode 100644 leetcode/leetcode/1371-find-the-longest-substring-containing-vowels-in-even-counts/1371-find-the-longest-substring-containing-vowels-in-even-counts.java create mode 100644 leetcode/leetcode/1371-find-the-longest-substring-containing-vowels-in-even-counts/README.md create mode 100644 leetcode/leetcode/1373-maximum-sum-bst-in-binary-tree/1373-maximum-sum-bst-in-binary-tree.java create mode 100644 leetcode/leetcode/1373-maximum-sum-bst-in-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/1373-maximum-sum-bst-in-binary-tree/README.md create mode 100644 leetcode/leetcode/13745-606-153-find-minimum-in-rotated-sorted-array/13745-606-153-find-minimum-in-rotated-sorted-array.py create mode 100644 leetcode/leetcode/13745-606-153-find-minimum-in-rotated-sorted-array/README.md create mode 100644 leetcode/leetcode/138-copy-list-with-random-pointer/138-copy-list-with-random-pointer.java create mode 100644 leetcode/leetcode/138-copy-list-with-random-pointer/NOTES.md create mode 100644 leetcode/leetcode/138-copy-list-with-random-pointer/README.md create mode 100644 leetcode/leetcode/1387-find-elements-in-a-contaminated-binary-tree/1387-find-elements-in-a-contaminated-binary-tree.java create mode 100644 leetcode/leetcode/1387-find-elements-in-a-contaminated-binary-tree/README.md create mode 100644 leetcode/leetcode/1390-four-divisors/1390-four-divisors.java create mode 100644 leetcode/leetcode/1390-four-divisors/NOTES.md create mode 100644 leetcode/leetcode/1390-four-divisors/README.md create mode 100644 leetcode/leetcode/14-longest-common-prefix/14-longest-common-prefix.java create mode 100644 leetcode/leetcode/14-longest-common-prefix/NOTES.md create mode 100644 leetcode/leetcode/14-longest-common-prefix/README.md create mode 100644 leetcode/leetcode/141-linked-list-cycle/141-linked-list-cycle.java create mode 100644 leetcode/leetcode/141-linked-list-cycle/NOTES.md create mode 100644 leetcode/leetcode/1414-find-the-minimum-number-of-fibonacci-numbers-whose-sum-is-k/1414-find-the-minimum-number-of-fibonacci-numbers-whose-sum-is-k.java create mode 100644 leetcode/leetcode/1414-find-the-minimum-number-of-fibonacci-numbers-whose-sum-is-k/NOTES.md create mode 100644 leetcode/leetcode/142-linked-list-cycle-ii/142-linked-list-cycle-ii.java create mode 100644 leetcode/leetcode/142-linked-list-cycle-ii/NOTES.md create mode 100644 leetcode/leetcode/142-linked-list-cycle-ii/README.md create mode 100644 leetcode/leetcode/1421-find-numbers-with-even-number-of-digits/1421-find-numbers-with-even-number-of-digits.java create mode 100644 leetcode/leetcode/1421-find-numbers-with-even-number-of-digits/README.md create mode 100644 leetcode/leetcode/1431-kids-with-the-greatest-number-of-candies/1431-kids-with-the-greatest-number-of-candies.java create mode 100644 leetcode/leetcode/1431-kids-with-the-greatest-number-of-candies/NOTES.md create mode 100644 leetcode/leetcode/1431-kids-with-the-greatest-number-of-candies/README.md create mode 100644 leetcode/leetcode/1441-build-an-array-with-stack-operations/1441-build-an-array-with-stack-operations.java create mode 100644 leetcode/leetcode/1441-build-an-array-with-stack-operations/NOTES.md create mode 100644 leetcode/leetcode/1443-minimum-time-to-collect-all-apples-in-a-tree/1443-minimum-time-to-collect-all-apples-in-a-tree.java create mode 100644 leetcode/leetcode/1443-minimum-time-to-collect-all-apples-in-a-tree/NOTES.md create mode 100644 leetcode/leetcode/1443-minimum-time-to-collect-all-apples-in-a-tree/README.md create mode 100644 leetcode/leetcode/1448-count-good-nodes-in-binary-tree/1448-count-good-nodes-in-binary-tree.java create mode 100644 leetcode/leetcode/1448-count-good-nodes-in-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/1448-count-good-nodes-in-binary-tree/README.md create mode 100644 leetcode/leetcode/1451-rearrange-words-in-a-sentence/1451-rearrange-words-in-a-sentence.java create mode 100644 leetcode/leetcode/1451-rearrange-words-in-a-sentence/NOTES.md create mode 100644 leetcode/leetcode/1451-rearrange-words-in-a-sentence/README.md create mode 100644 leetcode/leetcode/1456-maximum-number-of-vowels-in-a-substring-of-given-length/1456-maximum-number-of-vowels-in-a-substring-of-given-length.java create mode 100644 leetcode/leetcode/1456-maximum-number-of-vowels-in-a-substring-of-given-length/NOTES.md create mode 100644 leetcode/leetcode/1456-maximum-number-of-vowels-in-a-substring-of-given-length/README.md create mode 100644 leetcode/leetcode/1460-number-of-substrings-containing-all-three-characters/1460-number-of-substrings-containing-all-three-characters.java create mode 100644 leetcode/leetcode/1460-number-of-substrings-containing-all-three-characters/README.md create mode 100644 leetcode/leetcode/147-insertion-sort-list/147-insertion-sort-list.java create mode 100644 leetcode/leetcode/147-insertion-sort-list/NOTES.md create mode 100644 leetcode/leetcode/147-insertion-sort-list/README.md create mode 100644 leetcode/leetcode/1476-subrectangle-queries/1476-subrectangle-queries.java create mode 100644 leetcode/leetcode/1476-subrectangle-queries/NOTES.md create mode 100644 leetcode/leetcode/1476-subrectangle-queries/README.md create mode 100644 leetcode/leetcode/148-sort-list/148-sort-list.java create mode 100644 leetcode/leetcode/148-sort-list/NOTES.md create mode 100644 leetcode/leetcode/148-sort-list/README.md create mode 100644 leetcode/leetcode/1480-running-sum-of-1d-array/1480-running-sum-of-1d-array.java create mode 100644 leetcode/leetcode/1480-running-sum-of-1d-array/NOTES.md create mode 100644 leetcode/leetcode/1480-running-sum-of-1d-array/README.md create mode 100644 leetcode/leetcode/1491-average-salary-excluding-the-minimum-and-maximum-salary/1491-average-salary-excluding-the-minimum-and-maximum-salary.java create mode 100644 leetcode/leetcode/1491-average-salary-excluding-the-minimum-and-maximum-salary/NOTES.md create mode 100644 leetcode/leetcode/1491-average-salary-excluding-the-minimum-and-maximum-salary/README.md create mode 100644 leetcode/leetcode/1493-longest-subarray-of-1s-after-deleting-one-element/1493-longest-subarray-of-1s-after-deleting-one-element.java create mode 100644 leetcode/leetcode/1493-longest-subarray-of-1s-after-deleting-one-element/NOTES.md create mode 100644 leetcode/leetcode/1493-longest-subarray-of-1s-after-deleting-one-element/README.md create mode 100644 leetcode/leetcode/1497-check-if-array-pairs-are-divisible-by-k/1497-check-if-array-pairs-are-divisible-by-k.java create mode 100644 leetcode/leetcode/1497-check-if-array-pairs-are-divisible-by-k/NOTES.md create mode 100644 leetcode/leetcode/1497-check-if-array-pairs-are-divisible-by-k/README.md create mode 100644 leetcode/leetcode/150-evaluate-reverse-polish-notation/150-evaluate-reverse-polish-notation.java create mode 100644 leetcode/leetcode/150-evaluate-reverse-polish-notation/NOTES.md create mode 100644 leetcode/leetcode/150-evaluate-reverse-polish-notation/README.md create mode 100644 leetcode/leetcode/1508-range-sum-of-sorted-subarray-sums/1508-range-sum-of-sorted-subarray-sums.java create mode 100644 leetcode/leetcode/1508-range-sum-of-sorted-subarray-sums/NOTES.md create mode 100644 leetcode/leetcode/1508-range-sum-of-sorted-subarray-sums/README.md create mode 100644 leetcode/leetcode/1509-minimum-difference-between-largest-and-smallest-value-in-three-moves/1509-minimum-difference-between-largest-and-smallest-value-in-three-moves.java create mode 100644 leetcode/leetcode/1509-minimum-difference-between-largest-and-smallest-value-in-three-moves/NOTES.md create mode 100644 leetcode/leetcode/1509-replace-employee-id-with-the-unique-identifier/1509-replace-employee-id-with-the-unique-identifier.sql create mode 100644 leetcode/leetcode/1509-replace-employee-id-with-the-unique-identifier/README.md create mode 100644 leetcode/leetcode/1518-water-bottles/1518-water-bottles.java create mode 100644 leetcode/leetcode/1518-water-bottles/NOTES.md create mode 100644 leetcode/leetcode/1518-water-bottles/README.md create mode 100644 leetcode/leetcode/1519-number-of-nodes-in-the-sub-tree-with-the-same-label/1519-number-of-nodes-in-the-sub-tree-with-the-same-label.java create mode 100644 leetcode/leetcode/1519-number-of-nodes-in-the-sub-tree-with-the-same-label/NOTES.md create mode 100644 leetcode/leetcode/155-min-stack/155-min-stack.java create mode 100644 leetcode/leetcode/155-min-stack/NOTES.md create mode 100644 leetcode/leetcode/155-min-stack/README.md create mode 100644 leetcode/leetcode/1550-three-consecutive-odds/1550-three-consecutive-odds.java create mode 100644 leetcode/leetcode/1550-three-consecutive-odds/NOTES.md create mode 100644 leetcode/leetcode/1550-three-consecutive-odds/README.md create mode 100644 leetcode/leetcode/1582-special-positions-in-a-binary-matrix/1582-special-positions-in-a-binary-matrix.java create mode 100644 leetcode/leetcode/1582-special-positions-in-a-binary-matrix/NOTES.md create mode 100644 leetcode/leetcode/1582-special-positions-in-a-binary-matrix/README.md create mode 100644 leetcode/leetcode/1598-crawler-log-folder/1598-crawler-log-folder.java create mode 100644 leetcode/leetcode/1598-crawler-log-folder/NOTES.md create mode 100644 leetcode/leetcode/1598-crawler-log-folder/README.md create mode 100644 leetcode/leetcode/160-intersection-of-two-linked-lists/160-intersection-of-two-linked-lists.java create mode 100644 leetcode/leetcode/160-intersection-of-two-linked-lists/NOTES.md create mode 100644 leetcode/leetcode/1609-even-odd-tree/1609-even-odd-tree.java create mode 100644 leetcode/leetcode/1609-even-odd-tree/NOTES.md create mode 100644 leetcode/leetcode/1609-even-odd-tree/README.md create mode 100644 leetcode/leetcode/162-find-peak-element/162-find-peak-element.java create mode 100644 leetcode/leetcode/162-find-peak-element/NOTES.md create mode 100644 leetcode/leetcode/162-find-peak-element/README.md create mode 100644 leetcode/leetcode/1631-number-of-sub-arrays-with-odd-sum/1631-number-of-sub-arrays-with-odd-sum.java create mode 100644 leetcode/leetcode/1631-number-of-sub-arrays-with-odd-sum/README.md create mode 100644 leetcode/leetcode/1642-water-bottles/1642-water-bottles.java create mode 100644 leetcode/leetcode/1642-water-bottles/README.md create mode 100644 leetcode/leetcode/1652-minimum-suffix-flips/1652-minimum-suffix-flips.py create mode 100644 leetcode/leetcode/1652-minimum-suffix-flips/README.md create mode 100644 leetcode/leetcode/1662-check-if-two-string-arrays-are-equivalent/1662-check-if-two-string-arrays-are-equivalent.java create mode 100644 leetcode/leetcode/1662-check-if-two-string-arrays-are-equivalent/NOTES.md create mode 100644 leetcode/leetcode/1662-check-if-two-string-arrays-are-equivalent/README.md create mode 100644 leetcode/leetcode/167-two-sum-ii-input-array-is-sorted/167-two-sum-ii-input-array-is-sorted.java create mode 100644 leetcode/leetcode/167-two-sum-ii-input-array-is-sorted/NOTES.md create mode 100644 leetcode/leetcode/167-two-sum-ii-input-array-is-sorted/README.md create mode 100644 leetcode/leetcode/1672-richest-customer-wealth/1672-richest-customer-wealth.java create mode 100644 leetcode/leetcode/1672-richest-customer-wealth/NOTES.md create mode 100644 leetcode/leetcode/1672-richest-customer-wealth/README.md create mode 100644 leetcode/leetcode/1679-max-number-of-k-sum-pairs/1679-max-number-of-k-sum-pairs.java create mode 100644 leetcode/leetcode/1679-max-number-of-k-sum-pairs/NOTES.md create mode 100644 leetcode/leetcode/1679-max-number-of-k-sum-pairs/README.md create mode 100644 leetcode/leetcode/1684-count-the-number-of-consistent-strings/1684-count-the-number-of-consistent-strings.java create mode 100644 leetcode/leetcode/1684-count-the-number-of-consistent-strings/NOTES.md create mode 100644 leetcode/leetcode/1684-count-the-number-of-consistent-strings/README.md create mode 100644 leetcode/leetcode/1689-partitioning-into-minimum-number-of-deci-binary-numbers/1689-partitioning-into-minimum-number-of-deci-binary-numbers.java create mode 100644 leetcode/leetcode/1689-partitioning-into-minimum-number-of-deci-binary-numbers/NOTES.md create mode 100644 leetcode/leetcode/1689-partitioning-into-minimum-number-of-deci-binary-numbers/README.md create mode 100644 leetcode/leetcode/169-majority-element/169-majority-element.java create mode 100644 leetcode/leetcode/169-majority-element/NOTES.md create mode 100644 leetcode/leetcode/169-majority-element/README.md create mode 100644 leetcode/leetcode/17-letter-combinations-of-a-phone-number/17-letter-combinations-of-a-phone-number.java create mode 100644 leetcode/leetcode/17-letter-combinations-of-a-phone-number/NOTES.md create mode 100644 leetcode/leetcode/17-letter-combinations-of-a-phone-number/README.md create mode 100644 leetcode/leetcode/1701-average-waiting-time/1701-average-waiting-time.java create mode 100644 leetcode/leetcode/1701-average-waiting-time/NOTES.md create mode 100644 leetcode/leetcode/1701-average-waiting-time/README.md create mode 100644 leetcode/leetcode/1710-maximum-units-on-a-truck/1710-maximum-units-on-a-truck.java create mode 100644 leetcode/leetcode/1710-maximum-units-on-a-truck/NOTES.md create mode 100644 leetcode/leetcode/1710-maximum-units-on-a-truck/README.md create mode 100644 leetcode/leetcode/1717-maximum-score-from-removing-substrings/1717-maximum-score-from-removing-substrings.java create mode 100644 leetcode/leetcode/1717-maximum-score-from-removing-substrings/README.md create mode 100644 leetcode/leetcode/172-factorial-trailing-zeroes/172-factorial-trailing-zeroes.java create mode 100644 leetcode/leetcode/172-factorial-trailing-zeroes/NOTES.md create mode 100644 leetcode/leetcode/172-factorial-trailing-zeroes/README.md create mode 100644 leetcode/leetcode/1721-swapping-nodes-in-a-linked-list/1721-swapping-nodes-in-a-linked-list.java create mode 100644 leetcode/leetcode/1721-swapping-nodes-in-a-linked-list/NOTES.md create mode 100644 leetcode/leetcode/1721-swapping-nodes-in-a-linked-list/README.md create mode 100644 leetcode/leetcode/1724-customer-who-visited-but-did-not-make-any-transactions/1724-customer-who-visited-but-did-not-make-any-transactions.sql create mode 100644 leetcode/leetcode/1724-customer-who-visited-but-did-not-make-any-transactions/README.md create mode 100644 leetcode/leetcode/173-binary-search-tree-iterator/173-binary-search-tree-iterator.java create mode 100644 leetcode/leetcode/173-binary-search-tree-iterator/NOTES.md create mode 100644 leetcode/leetcode/1732-find-the-highest-altitude/1732-find-the-highest-altitude.java create mode 100644 leetcode/leetcode/1732-find-the-highest-altitude/NOTES.md create mode 100644 leetcode/leetcode/1732-find-the-highest-altitude/README.md create mode 100644 leetcode/leetcode/1768-merge-strings-alternately/1768-merge-strings-alternately.java create mode 100644 leetcode/leetcode/1768-merge-strings-alternately/NOTES.md create mode 100644 leetcode/leetcode/1768-merge-strings-alternately/README.md create mode 100644 leetcode/leetcode/1791-find-center-of-star-graph/1791-find-center-of-star-graph.java create mode 100644 leetcode/leetcode/1791-find-center-of-star-graph/README.md create mode 100644 leetcode/leetcode/1817-finding-the-users-active-minutes/1817-finding-the-users-active-minutes.java create mode 100644 leetcode/leetcode/1817-finding-the-users-active-minutes/NOTES.md create mode 100644 leetcode/leetcode/1817-finding-the-users-active-minutes/README.md create mode 100644 leetcode/leetcode/182-duplicate-emails/182-duplicate-emails.sql create mode 100644 leetcode/leetcode/182-duplicate-emails/NOTES.md create mode 100644 leetcode/leetcode/182-duplicate-emails/README.md create mode 100644 leetcode/leetcode/1822-sign-of-the-product-of-an-array/1822-sign-of-the-product-of-an-array.java create mode 100644 leetcode/leetcode/1822-sign-of-the-product-of-an-array/NOTES.md create mode 100644 leetcode/leetcode/1822-sign-of-the-product-of-an-array/README.md create mode 100644 leetcode/leetcode/1823-find-the-winner-of-the-circular-game/1823-find-the-winner-of-the-circular-game.java create mode 100644 leetcode/leetcode/1823-find-the-winner-of-the-circular-game/NOTES.md create mode 100644 leetcode/leetcode/1823-find-the-winner-of-the-circular-game/README.md create mode 100644 leetcode/leetcode/1827-invalid-tweets/1827-invalid-tweets.sql create mode 100644 leetcode/leetcode/1827-invalid-tweets/README.md create mode 100644 leetcode/leetcode/1833-maximum-ice-cream-bars/1833-maximum-ice-cream-bars.java create mode 100644 leetcode/leetcode/1833-maximum-ice-cream-bars/NOTES.md create mode 100644 leetcode/leetcode/1833-maximum-ice-cream-bars/README.md create mode 100644 leetcode/leetcode/1845-seat-reservation-manager/1845-seat-reservation-manager.java create mode 100644 leetcode/leetcode/1845-seat-reservation-manager/NOTES.md create mode 100644 leetcode/leetcode/1845-seat-reservation-manager/README.md create mode 100644 leetcode/leetcode/1846-maximum-element-after-decreasing-and-rearranging/1846-maximum-element-after-decreasing-and-rearranging.java create mode 100644 leetcode/leetcode/1846-maximum-element-after-decreasing-and-rearranging/README.md create mode 100644 leetcode/leetcode/1849-maximum-absolute-sum-of-any-subarray/1849-maximum-absolute-sum-of-any-subarray.java create mode 100644 leetcode/leetcode/1849-maximum-absolute-sum-of-any-subarray/README.md create mode 100644 leetcode/leetcode/1889-check-if-number-is-a-sum-of-powers-of-three/1889-check-if-number-is-a-sum-of-powers-of-three.java create mode 100644 leetcode/leetcode/1889-check-if-number-is-a-sum-of-powers-of-three/README.md create mode 100644 leetcode/leetcode/19-remove-nth-node-from-end-of-list/19-remove-nth-node-from-end-of-list.java create mode 100644 leetcode/leetcode/19-remove-nth-node-from-end-of-list/NOTES.md create mode 100644 leetcode/leetcode/1908-recyclable-and-low-fat-products/1908-recyclable-and-low-fat-products.sql create mode 100644 leetcode/leetcode/1908-recyclable-and-low-fat-products/README.md create mode 100644 leetcode/leetcode/1920-build-array-from-permutation/1920-build-array-from-permutation.py create mode 100644 leetcode/leetcode/1920-build-array-from-permutation/README.md create mode 100644 leetcode/leetcode/1945-sum-of-digits-of-string-after-convert/1945-sum-of-digits-of-string-after-convert.java create mode 100644 leetcode/leetcode/1945-sum-of-digits-of-string-after-convert/README.md create mode 100644 leetcode/leetcode/1979-find-greatest-common-divisor-of-array/1979-find-greatest-common-divisor-of-array.java create mode 100644 leetcode/leetcode/1979-find-greatest-common-divisor-of-array/NOTES.md create mode 100644 leetcode/leetcode/1979-find-greatest-common-divisor-of-array/README.md create mode 100644 leetcode/leetcode/198-house-robber/198-house-robber.java create mode 100644 leetcode/leetcode/198-house-robber/NOTES.md create mode 100644 leetcode/leetcode/198-house-robber/README.md create mode 100644 leetcode/leetcode/1983-maximum-population-year/1983-maximum-population-year.java create mode 100644 leetcode/leetcode/1983-maximum-population-year/README.md create mode 100644 leetcode/leetcode/199-binary-tree-right-side-view/199-binary-tree-right-side-view.java create mode 100644 leetcode/leetcode/199-binary-tree-right-side-view/NOTES.md create mode 100644 leetcode/leetcode/199-binary-tree-right-side-view/README.md create mode 100644 leetcode/leetcode/1991-find-the-middle-index-in-array/1991-find-the-middle-index-in-array.java create mode 100644 leetcode/leetcode/1991-find-the-middle-index-in-array/NOTES.md create mode 100644 leetcode/leetcode/1991-find-the-middle-index-in-array/README.md create mode 100644 leetcode/leetcode/2-add-two-numbers/2-add-two-numbers.java create mode 100644 leetcode/leetcode/2-add-two-numbers/NOTES.md create mode 100644 leetcode/leetcode/20-valid-parentheses/20-valid-parentheses.java create mode 100644 leetcode/leetcode/20-valid-parentheses/NOTES.md create mode 100644 leetcode/leetcode/20-valid-parentheses/README.md create mode 100644 leetcode/leetcode/2000-reverse-prefix-of-word/2000-reverse-prefix-of-word.java create mode 100644 leetcode/leetcode/2000-reverse-prefix-of-word/NOTES.md create mode 100644 leetcode/leetcode/2000-reverse-prefix-of-word/README.md create mode 100644 leetcode/leetcode/202-happy-number/202-happy-number.java create mode 100644 leetcode/leetcode/202-happy-number/NOTES.md create mode 100644 leetcode/leetcode/2021-remove-all-occurrences-of-a-substring/2021-remove-all-occurrences-of-a-substring.java create mode 100644 leetcode/leetcode/2021-remove-all-occurrences-of-a-substring/README.md create mode 100644 leetcode/leetcode/2048-build-array-from-permutation/2048-build-array-from-permutation.java create mode 100644 leetcode/leetcode/2048-build-array-from-permutation/README.md create mode 100644 leetcode/leetcode/2058-find-the-minimum-and-maximum-number-of-nodes-between-critical-points/2058-find-the-minimum-and-maximum-number-of-nodes-between-critical-points.java create mode 100644 leetcode/leetcode/2058-find-the-minimum-and-maximum-number-of-nodes-between-critical-points/README.md create mode 100644 leetcode/leetcode/2085-count-common-words-with-one-occurrence/2085-count-common-words-with-one-occurrence.java create mode 100644 leetcode/leetcode/2085-count-common-words-with-one-occurrence/README.md create mode 100644 leetcode/leetcode/2089-find-target-indices-after-sorting-array/2089-find-target-indices-after-sorting-array.java create mode 100644 leetcode/leetcode/2089-find-target-indices-after-sorting-array/NOTES.md create mode 100644 leetcode/leetcode/2090-number-of-ways-to-arrive-at-destination/2090-number-of-ways-to-arrive-at-destination.java create mode 100644 leetcode/leetcode/2090-number-of-ways-to-arrive-at-destination/README.md create mode 100644 leetcode/leetcode/2091-removing-minimum-and-maximum-from-array/2091-removing-minimum-and-maximum-from-array.java create mode 100644 leetcode/leetcode/2091-removing-minimum-and-maximum-from-array/NOTES.md create mode 100644 leetcode/leetcode/2091-removing-minimum-and-maximum-from-array/README.md create mode 100644 leetcode/leetcode/21-merge-two-sorted-lists/21-merge-two-sorted-lists.java create mode 100644 leetcode/leetcode/21-merge-two-sorted-lists/NOTES.md create mode 100644 leetcode/leetcode/2107-find-unique-binary-string/2107-find-unique-binary-string.java create mode 100644 leetcode/leetcode/2107-find-unique-binary-string/README.md create mode 100644 leetcode/leetcode/2131-longest-palindrome-by-concatenating-two-letter-words/2131-longest-palindrome-by-concatenating-two-letter-words.java create mode 100644 leetcode/leetcode/2131-longest-palindrome-by-concatenating-two-letter-words/NOTES.md create mode 100644 leetcode/leetcode/2131-longest-palindrome-by-concatenating-two-letter-words/README.md create mode 100644 leetcode/leetcode/2133-check-if-every-row-and-column-contains-all-numbers/2133-check-if-every-row-and-column-contains-all-numbers.java create mode 100644 leetcode/leetcode/2133-check-if-every-row-and-column-contains-all-numbers/NOTES.md create mode 100644 leetcode/leetcode/2133-check-if-every-row-and-column-contains-all-numbers/README.md create mode 100644 leetcode/leetcode/2138-divide-a-string-into-groups-of-size-k/2138-divide-a-string-into-groups-of-size-k.java create mode 100644 leetcode/leetcode/2138-divide-a-string-into-groups-of-size-k/README.md create mode 100644 leetcode/leetcode/2139-minimum-moves-to-reach-target-score/2139-minimum-moves-to-reach-target-score.java create mode 100644 leetcode/leetcode/2139-minimum-moves-to-reach-target-score/NOTES.md create mode 100644 leetcode/leetcode/2139-minimum-moves-to-reach-target-score/README.md create mode 100644 leetcode/leetcode/2148-count-elements-with-strictly-smaller-and-greater-elements/2148-count-elements-with-strictly-smaller-and-greater-elements.java create mode 100644 leetcode/leetcode/2148-count-elements-with-strictly-smaller-and-greater-elements/NOTES.md create mode 100644 leetcode/leetcode/2148-count-elements-with-strictly-smaller-and-greater-elements/README.md create mode 100644 leetcode/leetcode/2149-rearrange-array-elements-by-sign/2149-rearrange-array-elements-by-sign.java create mode 100644 leetcode/leetcode/2149-rearrange-array-elements-by-sign/NOTES.md create mode 100644 leetcode/leetcode/2149-rearrange-array-elements-by-sign/README.md create mode 100644 leetcode/leetcode/215-kth-largest-element-in-an-array/215-kth-largest-element-in-an-array.java create mode 100644 leetcode/leetcode/215-kth-largest-element-in-an-array/NOTES.md create mode 100644 leetcode/leetcode/215-kth-largest-element-in-an-array/README.md create mode 100644 leetcode/leetcode/2150-find-all-lonely-numbers-in-the-array/2150-find-all-lonely-numbers-in-the-array.java create mode 100644 leetcode/leetcode/2150-find-all-lonely-numbers-in-the-array/NOTES.md create mode 100644 leetcode/leetcode/2150-find-all-lonely-numbers-in-the-array/README.md create mode 100644 leetcode/leetcode/2154-keep-multiplying-found-values-by-two/2154-keep-multiplying-found-values-by-two.java create mode 100644 leetcode/leetcode/2154-keep-multiplying-found-values-by-two/README.md create mode 100644 leetcode/leetcode/2160-minimum-operations-to-make-a-uni-value-grid/2160-minimum-operations-to-make-a-uni-value-grid.java create mode 100644 leetcode/leetcode/2160-minimum-operations-to-make-a-uni-value-grid/README.md create mode 100644 leetcode/leetcode/2160-minimum-sum-of-four-digit-number-after-splitting-digits/2160-minimum-sum-of-four-digit-number-after-splitting-digits.java create mode 100644 leetcode/leetcode/2160-minimum-sum-of-four-digit-number-after-splitting-digits/NOTES.md create mode 100644 leetcode/leetcode/2160-minimum-sum-of-four-digit-number-after-splitting-digits/README.md create mode 100644 leetcode/leetcode/2161-partition-array-according-to-given-pivot/2161-partition-array-according-to-given-pivot.java create mode 100644 leetcode/leetcode/2161-partition-array-according-to-given-pivot/README.md create mode 100644 leetcode/leetcode/2164-sort-even-and-odd-indices-independently/2164-sort-even-and-odd-indices-independently.java create mode 100644 leetcode/leetcode/2164-sort-even-and-odd-indices-independently/NOTES.md create mode 100644 leetcode/leetcode/2164-sort-even-and-odd-indices-independently/README.md create mode 100644 leetcode/leetcode/2165-smallest-value-of-the-rearranged-number/2165-smallest-value-of-the-rearranged-number.java create mode 100644 leetcode/leetcode/2165-smallest-value-of-the-rearranged-number/NOTES.md create mode 100644 leetcode/leetcode/2165-smallest-value-of-the-rearranged-number/README.md create mode 100644 leetcode/leetcode/2166-design-bitset/2166-design-bitset.java create mode 100644 leetcode/leetcode/2166-design-bitset/NOTES.md create mode 100644 leetcode/leetcode/2166-design-bitset/README.md create mode 100644 leetcode/leetcode/2174-next-greater-numerically-balanced-number/2174-next-greater-numerically-balanced-number.java create mode 100644 leetcode/leetcode/2174-next-greater-numerically-balanced-number/README.md create mode 100644 leetcode/leetcode/2177-find-three-consecutive-integers-that-sum-to-a-given-number/2177-find-three-consecutive-integers-that-sum-to-a-given-number.java create mode 100644 leetcode/leetcode/2177-find-three-consecutive-integers-that-sum-to-a-given-number/NOTES.md create mode 100644 leetcode/leetcode/2177-find-three-consecutive-integers-that-sum-to-a-given-number/README.md create mode 100644 leetcode/leetcode/2180-count-integers-with-even-digit-sum/2180-count-integers-with-even-digit-sum.java create mode 100644 leetcode/leetcode/2180-count-integers-with-even-digit-sum/README.md create mode 100644 leetcode/leetcode/2181-merge-nodes-in-between-zeros/2181-merge-nodes-in-between-zeros.java create mode 100644 leetcode/leetcode/2181-merge-nodes-in-between-zeros/NOTES.md create mode 100644 leetcode/leetcode/2181-merge-nodes-in-between-zeros/README.md create mode 100644 leetcode/leetcode/2183-count-array-pairs-divisible-by-k/2183-count-array-pairs-divisible-by-k.java create mode 100644 leetcode/leetcode/2183-count-array-pairs-divisible-by-k/NOTES.md create mode 100644 leetcode/leetcode/2183-count-array-pairs-divisible-by-k/README.md create mode 100644 leetcode/leetcode/2190-most-frequent-number-following-key-in-an-array/2190-most-frequent-number-following-key-in-an-array.java create mode 100644 leetcode/leetcode/2190-most-frequent-number-following-key-in-an-array/README.md create mode 100644 leetcode/leetcode/2215-find-the-difference-of-two-arrays/2215-find-the-difference-of-two-arrays.java create mode 100644 leetcode/leetcode/2215-find-the-difference-of-two-arrays/NOTES.md create mode 100644 leetcode/leetcode/2215-find-the-difference-of-two-arrays/README.md create mode 100644 leetcode/leetcode/2216-delete-the-middle-node-of-a-linked-list/2216-delete-the-middle-node-of-a-linked-list.java create mode 100644 leetcode/leetcode/2216-delete-the-middle-node-of-a-linked-list/README.md create mode 100644 leetcode/leetcode/2220-find-all-possible-recipes-from-given-supplies/2220-find-all-possible-recipes-from-given-supplies.java create mode 100644 leetcode/leetcode/2220-find-all-possible-recipes-from-given-supplies/README.md create mode 100644 leetcode/leetcode/2220-minimum-bit-flips-to-convert-number/2220-minimum-bit-flips-to-convert-number.java create mode 100644 leetcode/leetcode/2220-minimum-bit-flips-to-convert-number/README.md create mode 100644 leetcode/leetcode/2244-minimum-rounds-to-complete-all-tasks/2244-minimum-rounds-to-complete-all-tasks.java create mode 100644 leetcode/leetcode/2244-minimum-rounds-to-complete-all-tasks/NOTES.md create mode 100644 leetcode/leetcode/2244-minimum-rounds-to-complete-all-tasks/README.md create mode 100644 leetcode/leetcode/2246-longest-path-with-different-adjacent-characters/2246-longest-path-with-different-adjacent-characters.java create mode 100644 leetcode/leetcode/2246-longest-path-with-different-adjacent-characters/README.md create mode 100644 leetcode/leetcode/225-implement-stack-using-queues/225-implement-stack-using-queues.java create mode 100644 leetcode/leetcode/225-implement-stack-using-queues/NOTES.md create mode 100644 leetcode/leetcode/225-implement-stack-using-queues/README.md create mode 100644 leetcode/leetcode/2255-minimum-swaps-to-group-all-1s-together-ii/2255-minimum-swaps-to-group-all-1s-together-ii.java create mode 100644 leetcode/leetcode/2255-minimum-swaps-to-group-all-1s-together-ii/README.md create mode 100644 leetcode/leetcode/2260-divide-a-string-into-groups-of-size-k/2260-divide-a-string-into-groups-of-size-k.java create mode 100644 leetcode/leetcode/2260-divide-a-string-into-groups-of-size-k/README.md create mode 100644 leetcode/leetcode/2264-largest-3-same-digit-number-in-string/2264-largest-3-same-digit-number-in-string.java create mode 100644 leetcode/leetcode/2264-largest-3-same-digit-number-in-string/NOTES.md create mode 100644 leetcode/leetcode/2264-largest-3-same-digit-number-in-string/README.md create mode 100644 leetcode/leetcode/2265-partition-array-according-to-given-pivot/2265-partition-array-according-to-given-pivot.java create mode 100644 leetcode/leetcode/2265-partition-array-according-to-given-pivot/README.md create mode 100644 leetcode/leetcode/228-summary-ranges/228-summary-ranges.java create mode 100644 leetcode/leetcode/228-summary-ranges/NOTES.md create mode 100644 leetcode/leetcode/228-summary-ranges/README.md create mode 100644 leetcode/leetcode/23-merge-k-sorted-lists/23-merge-k-sorted-lists.java create mode 100644 leetcode/leetcode/23-merge-k-sorted-lists/NOTES.md create mode 100644 leetcode/leetcode/23-merge-k-sorted-lists/README.md create mode 100644 leetcode/leetcode/230-kth-smallest-element-in-a-bst/230-kth-smallest-element-in-a-bst.java create mode 100644 leetcode/leetcode/230-kth-smallest-element-in-a-bst/NOTES.md create mode 100644 leetcode/leetcode/2307-replace-non-coprime-numbers-in-array/2307-replace-non-coprime-numbers-in-array.py create mode 100644 leetcode/leetcode/2307-replace-non-coprime-numbers-in-array/README.md create mode 100644 leetcode/leetcode/2308-divide-array-into-equal-pairs/2308-divide-array-into-equal-pairs.java create mode 100644 leetcode/leetcode/2308-divide-array-into-equal-pairs/README.md create mode 100644 leetcode/leetcode/232-implement-queue-using-stacks/232-implement-queue-using-stacks.java create mode 100644 leetcode/leetcode/232-implement-queue-using-stacks/NOTES.md create mode 100644 leetcode/leetcode/232-implement-queue-using-stacks/README.md create mode 100644 leetcode/leetcode/2324-find-triangular-sum-of-an-array/2324-find-triangular-sum-of-an-array.java create mode 100644 leetcode/leetcode/2324-find-triangular-sum-of-an-array/README.md create mode 100644 leetcode/leetcode/234-palindrome-linked-list/README.md create mode 100644 leetcode/leetcode/2352-equal-row-and-column-pairs/2352-equal-row-and-column-pairs.java create mode 100644 leetcode/leetcode/2352-equal-row-and-column-pairs/NOTES.md create mode 100644 leetcode/leetcode/236-lowest-common-ancestor-of-a-binary-tree/236-lowest-common-ancestor-of-a-binary-tree.java create mode 100644 leetcode/leetcode/236-lowest-common-ancestor-of-a-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/236-lowest-common-ancestor-of-a-binary-tree/README.md create mode 100644 leetcode/leetcode/238-product-of-array-except-self/238-product-of-array-except-self.java create mode 100644 leetcode/leetcode/238-product-of-array-except-self/NOTES.md create mode 100644 leetcode/leetcode/238-product-of-array-except-self/README.md create mode 100644 leetcode/leetcode/2390-removing-stars-from-a-string/2390-removing-stars-from-a-string.java create mode 100644 leetcode/leetcode/2390-removing-stars-from-a-string/NOTES.md create mode 100644 leetcode/leetcode/2390-removing-stars-from-a-string/README.md create mode 100644 leetcode/leetcode/2394-count-subarrays-with-score-less-than-k/2394-count-subarrays-with-score-less-than-k.java create mode 100644 leetcode/leetcode/2394-count-subarrays-with-score-less-than-k/README.md create mode 100644 leetcode/leetcode/24-swap-nodes-in-pairs/24-swap-nodes-in-pairs.java create mode 100644 leetcode/leetcode/24-swap-nodes-in-pairs/README.md create mode 100644 leetcode/leetcode/240-search-a-2d-matrix-ii/240-search-a-2d-matrix-ii.java create mode 100644 leetcode/leetcode/240-search-a-2d-matrix-ii/NOTES.md create mode 100644 leetcode/leetcode/240-search-a-2d-matrix-ii/README.md create mode 100644 leetcode/leetcode/2405-optimal-partition-of-string/2405-optimal-partition-of-string.java create mode 100644 leetcode/leetcode/2405-optimal-partition-of-string/NOTES.md create mode 100644 leetcode/leetcode/2405-optimal-partition-of-string/README.md create mode 100644 leetcode/leetcode/2419-longest-subarray-with-maximum-bitwise-and/2419-longest-subarray-with-maximum-bitwise-and.java create mode 100644 leetcode/leetcode/2419-longest-subarray-with-maximum-bitwise-and/NOTES.md create mode 100644 leetcode/leetcode/2419-longest-subarray-with-maximum-bitwise-and/README.md create mode 100644 leetcode/leetcode/2421-number-of-good-paths/2421-number-of-good-paths.java create mode 100644 leetcode/leetcode/2421-number-of-good-paths/README.md create mode 100644 leetcode/leetcode/2427-first-letter-to-appear-twice/2427-first-letter-to-appear-twice.java create mode 100644 leetcode/leetcode/2427-first-letter-to-appear-twice/README.md create mode 100644 leetcode/leetcode/2429-design-a-food-rating-system/2429-design-a-food-rating-system.java create mode 100644 leetcode/leetcode/2429-design-a-food-rating-system/README.md create mode 100644 leetcode/leetcode/2448-count-number-of-bad-pairs/2448-count-number-of-bad-pairs.java create mode 100644 leetcode/leetcode/2448-count-number-of-bad-pairs/README.md create mode 100644 leetcode/leetcode/2461-amount-of-time-for-binary-tree-to-be-infected/2461-amount-of-time-for-binary-tree-to-be-infected.java create mode 100644 leetcode/leetcode/2461-amount-of-time-for-binary-tree-to-be-infected/README.md create mode 100644 leetcode/leetcode/2463-minimum-recolors-to-get-k-consecutive-black-blocks/2463-minimum-recolors-to-get-k-consecutive-black-blocks.java create mode 100644 leetcode/leetcode/2463-minimum-recolors-to-get-k-consecutive-black-blocks/README.md create mode 100644 leetcode/leetcode/2471-minimum-number-of-operations-to-sort-a-binary-tree-by-level/2471-minimum-number-of-operations-to-sort-a-binary-tree-by-level.java create mode 100644 leetcode/leetcode/2471-minimum-number-of-operations-to-sort-a-binary-tree-by-level/README.md create mode 100644 leetcode/leetcode/2478-longest-nice-subarray/2478-longest-nice-subarray.java create mode 100644 leetcode/leetcode/2478-longest-nice-subarray/README.md create mode 100644 leetcode/leetcode/2482-difference-between-ones-and-zeros-in-row-and-column/2482-difference-between-ones-and-zeros-in-row-and-column.java create mode 100644 leetcode/leetcode/2482-difference-between-ones-and-zeros-in-row-and-column/NOTES.md create mode 100644 leetcode/leetcode/2482-difference-between-ones-and-zeros-in-row-and-column/README.md create mode 100644 leetcode/leetcode/2487-remove-nodes-from-linked-list/2487-remove-nodes-from-linked-list.java create mode 100644 leetcode/leetcode/2487-remove-nodes-from-linked-list/NOTES.md create mode 100644 leetcode/leetcode/2487-remove-nodes-from-linked-list/README.md create mode 100644 leetcode/leetcode/2493-reverse-odd-levels-of-binary-tree/2493-reverse-odd-levels-of-binary-tree.java create mode 100644 leetcode/leetcode/2493-reverse-odd-levels-of-binary-tree/README.md create mode 100644 leetcode/leetcode/2551-apply-operations-to-an-array/2551-apply-operations-to-an-array.java create mode 100644 leetcode/leetcode/2551-apply-operations-to-an-array/README.md create mode 100644 leetcode/leetcode/2564-most-profitable-path-in-a-tree/2564-most-profitable-path-in-a-tree.java create mode 100644 leetcode/leetcode/2564-most-profitable-path-in-a-tree/README.md create mode 100644 leetcode/leetcode/258-add-digits/258-add-digits.java create mode 100644 leetcode/leetcode/258-add-digits/README.md create mode 100644 leetcode/leetcode/2582-pass-the-pillow/2582-pass-the-pillow.java create mode 100644 leetcode/leetcode/2582-pass-the-pillow/NOTES.md create mode 100644 leetcode/leetcode/2582-pass-the-pillow/README.md create mode 100644 leetcode/leetcode/2588-maximum-number-of-points-from-grid-queries/2588-maximum-number-of-points-from-grid-queries.java create mode 100644 leetcode/leetcode/2588-maximum-number-of-points-from-grid-queries/README.md create mode 100644 leetcode/leetcode/2610-closest-prime-numbers-in-range/2610-closest-prime-numbers-in-range.java create mode 100644 leetcode/leetcode/2610-closest-prime-numbers-in-range/README.md create mode 100644 leetcode/leetcode/2614-maximum-count-of-positive-integer-and-negative-integer/2614-maximum-count-of-positive-integer-and-negative-integer.java create mode 100644 leetcode/leetcode/2614-maximum-count-of-positive-integer-and-negative-integer/README.md create mode 100644 leetcode/leetcode/263-ugly-number/263-ugly-number.java create mode 100644 leetcode/leetcode/263-ugly-number/NOTES.md create mode 100644 leetcode/leetcode/263-ugly-number/README.md create mode 100644 leetcode/leetcode/2649-count-total-number-of-colored-cells/2649-count-total-number-of-colored-cells.java create mode 100644 leetcode/leetcode/2649-count-total-number-of-colored-cells/README.md create mode 100644 leetcode/leetcode/2665-minimum-time-to-repair-cars/2665-minimum-time-to-repair-cars.java create mode 100644 leetcode/leetcode/2665-minimum-time-to-repair-cars/README.md create mode 100644 leetcode/leetcode/2681-put-marbles-in-bags/2681-put-marbles-in-bags.java create mode 100644 leetcode/leetcode/2681-put-marbles-in-bags/README.md create mode 100644 leetcode/leetcode/2690-house-robber-iv/2690-house-robber-iv.java create mode 100644 leetcode/leetcode/2690-house-robber-iv/README.md create mode 100644 leetcode/leetcode/2707-extra-characters-in-a-string/2707-extra-characters-in-a-string.java create mode 100644 leetcode/leetcode/2707-extra-characters-in-a-string/README.md create mode 100644 leetcode/leetcode/2707-merge-two-2d-arrays-by-summing-values/2707-merge-two-2d-arrays-by-summing-values.java create mode 100644 leetcode/leetcode/2707-merge-two-2d-arrays-by-summing-values/README.md create mode 100644 leetcode/leetcode/2751-robot-collisions/2751-robot-collisions.java create mode 100644 leetcode/leetcode/2751-robot-collisions/NOTES.md create mode 100644 leetcode/leetcode/279-perfect-squares/279-perfect-squares.java create mode 100644 leetcode/leetcode/279-perfect-squares/NOTES.md create mode 100644 leetcode/leetcode/2793-count-the-number-of-complete-components/2793-count-the-number-of-complete-components.java create mode 100644 leetcode/leetcode/2793-count-the-number-of-complete-components/README.md create mode 100644 leetcode/leetcode/2807-insert-greatest-common-divisors-in-linked-list/2807-insert-greatest-common-divisors-in-linked-list.java create mode 100644 leetcode/leetcode/2807-insert-greatest-common-divisors-in-linked-list/README.md create mode 100644 leetcode/leetcode/284-peeking-iterator/284-peeking-iterator.java create mode 100644 leetcode/leetcode/284-peeking-iterator/NOTES.md create mode 100644 leetcode/leetcode/284-peeking-iterator/README.md create mode 100644 leetcode/leetcode/2869-minimum-operations-to-collect-elements/2869-minimum-operations-to-collect-elements.java create mode 100644 leetcode/leetcode/2869-minimum-operations-to-collect-elements/NOTES.md create mode 100644 leetcode/leetcode/2869-minimum-operations-to-collect-elements/README.md create mode 100644 leetcode/leetcode/287-find-the-duplicate-number/287-find-the-duplicate-number.java create mode 100644 leetcode/leetcode/287-find-the-duplicate-number/NOTES.md create mode 100644 leetcode/leetcode/287-find-the-duplicate-number/README.md create mode 100644 leetcode/leetcode/2887-sort-vowels-in-a-string/2887-sort-vowels-in-a-string.py create mode 100644 leetcode/leetcode/2887-sort-vowels-in-a-string/README.md create mode 100644 leetcode/leetcode/2888-minimum-index-of-a-valid-split/2888-minimum-index-of-a-valid-split.java create mode 100644 leetcode/leetcode/2888-minimum-index-of-a-valid-split/README.md create mode 100644 leetcode/leetcode/290-word-pattern/290-word-pattern.java create mode 100644 leetcode/leetcode/290-word-pattern/NOTES.md create mode 100644 leetcode/leetcode/290-word-pattern/README.md create mode 100644 leetcode/leetcode/295-find-median-from-data-stream/295-find-median-from-data-stream.java create mode 100644 leetcode/leetcode/295-find-median-from-data-stream/NOTES.md create mode 100644 leetcode/leetcode/297-serialize-and-deserialize-binary-tree/297-serialize-and-deserialize-binary-tree.java create mode 100644 leetcode/leetcode/297-serialize-and-deserialize-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/297-serialize-and-deserialize-binary-tree/README.md create mode 100644 leetcode/leetcode/300-longest-increasing-subsequence/300-longest-increasing-subsequence.java create mode 100644 leetcode/leetcode/300-longest-increasing-subsequence/NOTES.md create mode 100644 leetcode/leetcode/300-longest-increasing-subsequence/README.md create mode 100644 leetcode/leetcode/3001-apply-operations-to-maximize-score/3001-apply-operations-to-maximize-score.java create mode 100644 leetcode/leetcode/3001-apply-operations-to-maximize-score/README.md create mode 100644 leetcode/leetcode/3075-maximize-happiness-of-selected-children/3075-maximize-happiness-of-selected-children.java create mode 100644 leetcode/leetcode/3075-maximize-happiness-of-selected-children/NOTES.md create mode 100644 leetcode/leetcode/3075-maximize-happiness-of-selected-children/README.md create mode 100644 leetcode/leetcode/316-remove-duplicate-letters/316-remove-duplicate-letters.java create mode 100644 leetcode/leetcode/316-remove-duplicate-letters/NOTES.md create mode 100644 leetcode/leetcode/316-remove-duplicate-letters/README.md create mode 100644 leetcode/leetcode/3172-divisible-and-non-divisible-sums-difference/3172-divisible-and-non-divisible-sums-difference.java create mode 100644 leetcode/leetcode/3172-divisible-and-non-divisible-sums-difference/README.md create mode 100644 leetcode/leetcode/3201-distribute-candies-among-children-ii/3201-distribute-candies-among-children-ii.java create mode 100644 leetcode/leetcode/3201-distribute-candies-among-children-ii/README.md create mode 100644 leetcode/leetcode/3213-count-subarrays-where-max-element-appears-at-least-k-times/3213-count-subarrays-where-max-element-appears-at-least-k-times.java create mode 100644 leetcode/leetcode/3213-count-subarrays-where-max-element-appears-at-least-k-times/README.md create mode 100644 leetcode/leetcode/3227-find-missing-and-repeated-values/3227-find-missing-and-repeated-values.java create mode 100644 leetcode/leetcode/3227-find-missing-and-repeated-values/README.md create mode 100644 leetcode/leetcode/3242-count-elements-with-maximum-frequency/3242-count-elements-with-maximum-frequency.java create mode 100644 leetcode/leetcode/3242-count-elements-with-maximum-frequency/README.md create mode 100644 leetcode/leetcode/328-odd-even-linked-list/328-odd-even-linked-list.java create mode 100644 leetcode/leetcode/328-odd-even-linked-list/NOTES.md create mode 100644 leetcode/leetcode/33-search-in-rotated-sorted-array/33-search-in-rotated-sorted-array.java create mode 100644 leetcode/leetcode/3332-minimum-operations-to-exceed-threshold-value-ii/3332-minimum-operations-to-exceed-threshold-value-ii.java create mode 100644 leetcode/leetcode/3332-minimum-operations-to-exceed-threshold-value-ii/README.md create mode 100644 leetcode/leetcode/3348-minimum-cost-walk-in-weighted-graph/3348-minimum-cost-walk-in-weighted-graph.java create mode 100644 leetcode/leetcode/3348-minimum-cost-walk-in-weighted-graph/README.md create mode 100644 leetcode/leetcode/3372-longest-strictly-increasing-or-strictly-decreasing-subarray/3372-longest-strictly-increasing-or-strictly-decreasing-subarray.java create mode 100644 leetcode/leetcode/3372-longest-strictly-increasing-or-strictly-decreasing-subarray/README.md create mode 100644 leetcode/leetcode/338-counting-bits/338-counting-bits.java create mode 100644 leetcode/leetcode/338-counting-bits/NOTES.md create mode 100644 leetcode/leetcode/338-counting-bits/README.md create mode 100644 leetcode/leetcode/3398-make-a-square-with-the-same-color/3398-make-a-square-with-the-same-color.java create mode 100644 leetcode/leetcode/3398-make-a-square-with-the-same-color/README.md create mode 100644 leetcode/leetcode/34-find-first-and-last-position-of-element-in-sorted-array/34-find-first-and-last-position-of-element-in-sorted-array.java create mode 100644 leetcode/leetcode/34-find-first-and-last-position-of-element-in-sorted-array/NOTES.md create mode 100644 leetcode/leetcode/34-find-first-and-last-position-of-element-in-sorted-array/README.md create mode 100644 leetcode/leetcode/3430-count-days-without-meetings/3430-count-days-without-meetings.java create mode 100644 leetcode/leetcode/3430-count-days-without-meetings/README.md create mode 100644 leetcode/leetcode/344-reverse-string/344-reverse-string.java create mode 100644 leetcode/leetcode/344-reverse-string/README.md create mode 100644 leetcode/leetcode/3447-clear-digits/3447-clear-digits.java create mode 100644 leetcode/leetcode/3447-clear-digits/README.md create mode 100644 leetcode/leetcode/347-top-k-frequent-elements/347-top-k-frequent-elements.java create mode 100644 leetcode/leetcode/347-top-k-frequent-elements/NOTES.md create mode 100644 leetcode/leetcode/347-top-k-frequent-elements/README.md create mode 100644 leetcode/leetcode/3475-minimum-operations-to-make-binary-array-elements-equal-to-one-i/3475-minimum-operations-to-make-binary-array-elements-equal-to-one-i.java create mode 100644 leetcode/leetcode/3475-minimum-operations-to-make-binary-array-elements-equal-to-one-i/README.md create mode 100644 leetcode/leetcode/3483-alternating-groups-ii/3483-alternating-groups-ii.java create mode 100644 leetcode/leetcode/3483-alternating-groups-ii/README.md create mode 100644 leetcode/leetcode/350-intersection-of-two-arrays-ii/350-intersection-of-two-arrays-ii.java create mode 100644 leetcode/leetcode/350-intersection-of-two-arrays-ii/NOTES.md create mode 100644 leetcode/leetcode/350-intersection-of-two-arrays-ii/README.md create mode 100644 leetcode/leetcode/3501-delete-nodes-from-linked-list-present-in-array/3501-delete-nodes-from-linked-list-present-in-array.java create mode 100644 leetcode/leetcode/3501-delete-nodes-from-linked-list-present-in-array/README.md create mode 100644 leetcode/leetcode/3541-report-spam-message/3541-report-spam-message.java create mode 100644 leetcode/leetcode/3541-report-spam-message/README.md create mode 100644 leetcode/leetcode/3569-count-of-substrings-containing-every-vowel-and-k-consonants-ii/3569-count-of-substrings-containing-every-vowel-and-k-consonants-ii.java create mode 100644 leetcode/leetcode/3569-count-of-substrings-containing-every-vowel-and-k-consonants-ii/README.md create mode 100644 leetcode/leetcode/36-valid-sudoku/36-valid-sudoku.java create mode 100644 leetcode/leetcode/36-valid-sudoku/NOTES.md create mode 100644 leetcode/leetcode/36-valid-sudoku/README.md create mode 100644 leetcode/leetcode/3643-zero-array-transformation-ii/3643-zero-array-transformation-ii.java create mode 100644 leetcode/leetcode/3643-zero-array-transformation-ii/README.md create mode 100644 leetcode/leetcode/3657-check-if-grid-can-be-cut-into-sections/3657-check-if-grid-can-be-cut-into-sections.java create mode 100644 leetcode/leetcode/3657-check-if-grid-can-be-cut-into-sections/README.md create mode 100644 leetcode/leetcode/3685-count-subarrays-of-length-three-with-a-condition/README.md create mode 100644 leetcode/leetcode/371-sum-of-two-integers/371-sum-of-two-integers.java create mode 100644 leetcode/leetcode/371-sum-of-two-integers/NOTES.md create mode 100644 leetcode/leetcode/371-sum-of-two-integers/README.md create mode 100644 leetcode/leetcode/380-insert-delete-getrandom-o1/380-insert-delete-getrandom-o1.java create mode 100644 leetcode/leetcode/380-insert-delete-getrandom-o1/NOTES.md create mode 100644 leetcode/leetcode/380-insert-delete-getrandom-o1/README.md create mode 100644 leetcode/leetcode/382-linked-list-random-node/382-linked-list-random-node.java create mode 100644 leetcode/leetcode/382-linked-list-random-node/NOTES.md create mode 100644 leetcode/leetcode/382-linked-list-random-node/README.md create mode 100644 leetcode/leetcode/387-first-unique-character-in-a-string/387-first-unique-character-in-a-string.java create mode 100644 leetcode/leetcode/387-first-unique-character-in-a-string/NOTES.md create mode 100644 leetcode/leetcode/387-first-unique-character-in-a-string/README.md create mode 100644 leetcode/leetcode/389-find-the-difference/389-find-the-difference.java create mode 100644 leetcode/leetcode/389-find-the-difference/NOTES.md create mode 100644 leetcode/leetcode/389-find-the-difference/README.md create mode 100644 leetcode/leetcode/39-combination-sum/39-combination-sum.java create mode 100644 leetcode/leetcode/39-combination-sum/NOTES.md create mode 100644 leetcode/leetcode/39-combination-sum/README.md create mode 100644 leetcode/leetcode/392-is-subsequence/392-is-subsequence.java create mode 100644 leetcode/leetcode/392-is-subsequence/NOTES.md create mode 100644 leetcode/leetcode/392-is-subsequence/README.md create mode 100644 leetcode/leetcode/397-integer-replacement/397-integer-replacement.java create mode 100644 leetcode/leetcode/397-integer-replacement/NOTES.md create mode 100644 leetcode/leetcode/397-integer-replacement/README.md create mode 100644 leetcode/leetcode/398-random-pick-index/398-random-pick-index.java create mode 100644 leetcode/leetcode/398-random-pick-index/NOTES.md create mode 100644 leetcode/leetcode/398-random-pick-index/README.md create mode 100644 leetcode/leetcode/400-nth-digit/400-nth-digit.java create mode 100644 leetcode/leetcode/400-nth-digit/NOTES.md create mode 100644 leetcode/leetcode/400-nth-digit/README.md create mode 100644 leetcode/leetcode/413-arithmetic-slices/413-arithmetic-slices.java create mode 100644 leetcode/leetcode/413-arithmetic-slices/NOTES.md create mode 100644 leetcode/leetcode/413-arithmetic-slices/README.md create mode 100644 leetcode/leetcode/416-partition-equal-subset-sum/416-partition-equal-subset-sum.java create mode 100644 leetcode/leetcode/416-partition-equal-subset-sum/NOTES.md create mode 100644 leetcode/leetcode/416-partition-equal-subset-sum/README.md create mode 100644 leetcode/leetcode/42-trapping-rain-water/42-trapping-rain-water.java create mode 100644 leetcode/leetcode/42-trapping-rain-water/NOTES.md create mode 100644 leetcode/leetcode/42-trapping-rain-water/README.md create mode 100644 leetcode/leetcode/429-n-ary-tree-level-order-traversal/429-n-ary-tree-level-order-traversal.java create mode 100644 leetcode/leetcode/429-n-ary-tree-level-order-traversal/NOTES.md create mode 100644 leetcode/leetcode/429-n-ary-tree-level-order-traversal/README.md create mode 100644 leetcode/leetcode/438-find-all-anagrams-in-a-string/438-find-all-anagrams-in-a-string.java create mode 100644 leetcode/leetcode/438-find-all-anagrams-in-a-string/NOTES.md create mode 100644 leetcode/leetcode/438-find-all-anagrams-in-a-string/README.md create mode 100644 leetcode/leetcode/449-serialize-and-deserialize-bst/449-serialize-and-deserialize-bst.java create mode 100644 leetcode/leetcode/449-serialize-and-deserialize-bst/NOTES.md create mode 100644 leetcode/leetcode/449-serialize-and-deserialize-bst/README.md create mode 100644 leetcode/leetcode/45-jump-game-ii/45-jump-game-ii.java create mode 100644 leetcode/leetcode/45-jump-game-ii/NOTES.md create mode 100644 leetcode/leetcode/45-jump-game-ii/README.md create mode 100644 leetcode/leetcode/450-delete-node-in-a-bst/450-delete-node-in-a-bst.java create mode 100644 leetcode/leetcode/450-delete-node-in-a-bst/NOTES.md create mode 100644 leetcode/leetcode/450-delete-node-in-a-bst/README.md create mode 100644 leetcode/leetcode/451-sort-characters-by-frequency/451-sort-characters-by-frequency.java create mode 100644 leetcode/leetcode/451-sort-characters-by-frequency/NOTES.md create mode 100644 leetcode/leetcode/452-minimum-number-of-arrows-to-burst-balloons/452-minimum-number-of-arrows-to-burst-balloons.java create mode 100644 leetcode/leetcode/452-minimum-number-of-arrows-to-burst-balloons/NOTES.md create mode 100644 leetcode/leetcode/452-minimum-number-of-arrows-to-burst-balloons/README.md create mode 100644 leetcode/leetcode/46-permutations/46-permutations.java create mode 100644 leetcode/leetcode/46-permutations/NOTES.md create mode 100644 leetcode/leetcode/46-permutations/README.md create mode 100644 leetcode/leetcode/462-minimum-moves-to-equal-array-elements-ii/462-minimum-moves-to-equal-array-elements-ii.java create mode 100644 leetcode/leetcode/462-minimum-moves-to-equal-array-elements-ii/NOTES.md create mode 100644 leetcode/leetcode/462-minimum-moves-to-equal-array-elements-ii/README.md create mode 100644 leetcode/leetcode/470-implement-rand10-using-rand7/470-implement-rand10-using-rand7.java create mode 100644 leetcode/leetcode/470-implement-rand10-using-rand7/NOTES.md create mode 100644 leetcode/leetcode/470-implement-rand10-using-rand7/README.md create mode 100644 leetcode/leetcode/48-rotate-image/48-rotate-image.java create mode 100644 leetcode/leetcode/48-rotate-image/NOTES.md create mode 100644 leetcode/leetcode/48-rotate-image/README.md create mode 100644 leetcode/leetcode/494-target-sum/494-target-sum.java create mode 100644 leetcode/leetcode/494-target-sum/NOTES.md create mode 100644 leetcode/leetcode/494-target-sum/README.md create mode 100644 leetcode/leetcode/496-next-greater-element-i/496-next-greater-element-i.java create mode 100644 leetcode/leetcode/496-next-greater-element-i/NOTES.md create mode 100644 leetcode/leetcode/496-next-greater-element-i/README.md create mode 100644 leetcode/leetcode/509-fibonacci-number/509-fibonacci-number.java create mode 100644 leetcode/leetcode/509-fibonacci-number/NOTES.md create mode 100644 leetcode/leetcode/509-fibonacci-number/README.md create mode 100644 leetcode/leetcode/511-game-play-analysis-i/511-game-play-analysis-i.sql create mode 100644 leetcode/leetcode/511-game-play-analysis-i/NOTES.md create mode 100644 leetcode/leetcode/511-game-play-analysis-i/README.md create mode 100644 leetcode/leetcode/515-find-largest-value-in-each-tree-row/515-find-largest-value-in-each-tree-row.java create mode 100644 leetcode/leetcode/515-find-largest-value-in-each-tree-row/NOTES.md create mode 100644 leetcode/leetcode/515-find-largest-value-in-each-tree-row/README.md create mode 100644 leetcode/leetcode/520-detect-capital/520-detect-capital.java create mode 100644 leetcode/leetcode/520-detect-capital/NOTES.md create mode 100644 leetcode/leetcode/525-contiguous-array/525-contiguous-array.java create mode 100644 leetcode/leetcode/525-contiguous-array/NOTES.md create mode 100644 leetcode/leetcode/525-contiguous-array/README.md create mode 100644 leetcode/leetcode/532-k-diff-pairs-in-an-array/532-k-diff-pairs-in-an-array.java create mode 100644 leetcode/leetcode/532-k-diff-pairs-in-an-array/NOTES.md create mode 100644 leetcode/leetcode/532-k-diff-pairs-in-an-array/README.md create mode 100644 leetcode/leetcode/538-convert-bst-to-greater-tree/538-convert-bst-to-greater-tree.java create mode 100644 leetcode/leetcode/538-convert-bst-to-greater-tree/NOTES.md create mode 100644 leetcode/leetcode/538-convert-bst-to-greater-tree/README.md create mode 100644 leetcode/leetcode/54-spiral-matrix/54-spiral-matrix.java create mode 100644 leetcode/leetcode/54-spiral-matrix/NOTES.md create mode 100644 leetcode/leetcode/54-spiral-matrix/README.md create mode 100644 leetcode/leetcode/540-single-element-in-a-sorted-array/540-single-element-in-a-sorted-array.java create mode 100644 leetcode/leetcode/540-single-element-in-a-sorted-array/NOTES.md create mode 100644 leetcode/leetcode/55-jump-game/55-jump-game.java create mode 100644 leetcode/leetcode/55-jump-game/NOTES.md create mode 100644 leetcode/leetcode/55-jump-game/README.md create mode 100644 leetcode/leetcode/560-subarray-sum-equals-k/560-subarray-sum-equals-k.java create mode 100644 leetcode/leetcode/560-subarray-sum-equals-k/NOTES.md create mode 100644 leetcode/leetcode/560-subarray-sum-equals-k/README.md create mode 100644 leetcode/leetcode/567-permutation-in-string/567-permutation-in-string.java create mode 100644 leetcode/leetcode/567-permutation-in-string/NOTES.md create mode 100644 leetcode/leetcode/567-permutation-in-string/README.md create mode 100644 leetcode/leetcode/575-distribute-candies/575-distribute-candies.java create mode 100644 leetcode/leetcode/575-distribute-candies/NOTES.md create mode 100644 leetcode/leetcode/575-distribute-candies/README.md create mode 100644 leetcode/leetcode/59-spiral-matrix-ii/59-spiral-matrix-ii.java create mode 100644 leetcode/leetcode/59-spiral-matrix-ii/NOTES.md create mode 100644 leetcode/leetcode/59-spiral-matrix-ii/README.md create mode 100644 leetcode/leetcode/595-big-countries/595-big-countries.sql create mode 100644 leetcode/leetcode/595-big-countries/NOTES.md create mode 100644 leetcode/leetcode/595-big-countries/README.md create mode 100644 leetcode/leetcode/596-classes-more-than-5-students/596-classes-more-than-5-students.sql create mode 100644 leetcode/leetcode/596-classes-more-than-5-students/NOTES.md create mode 100644 leetcode/leetcode/596-classes-more-than-5-students/README.md create mode 100644 leetcode/leetcode/605-can-place-flowers/605-can-place-flowers.java create mode 100644 leetcode/leetcode/605-can-place-flowers/NOTES.md create mode 100644 leetcode/leetcode/605-can-place-flowers/README.md create mode 100644 leetcode/leetcode/606-construct-string-from-binary-tree/606-construct-string-from-binary-tree.java create mode 100644 leetcode/leetcode/606-construct-string-from-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/606-construct-string-from-binary-tree/README.md create mode 100644 leetcode/leetcode/61-rotate-list/61-rotate-list.java create mode 100644 leetcode/leetcode/61-rotate-list/NOTES.md create mode 100644 leetcode/leetcode/62-unique-paths/62-unique-paths.java create mode 100644 leetcode/leetcode/62-unique-paths/NOTES.md create mode 100644 leetcode/leetcode/62-unique-paths/README.md create mode 100644 leetcode/leetcode/623-add-one-row-to-tree/623-add-one-row-to-tree.java create mode 100644 leetcode/leetcode/623-add-one-row-to-tree/NOTES.md create mode 100644 leetcode/leetcode/623-add-one-row-to-tree/README.md create mode 100644 leetcode/leetcode/63-unique-paths-ii/63-unique-paths-ii.java create mode 100644 leetcode/leetcode/63-unique-paths-ii/NOTES.md create mode 100644 leetcode/leetcode/63-unique-paths-ii/README.md create mode 100644 leetcode/leetcode/637-average-of-levels-in-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/637-average-of-levels-in-binary-tree/README.md create mode 100644 leetcode/leetcode/64-minimum-path-sum/64-minimum-path-sum.java create mode 100644 leetcode/leetcode/64-minimum-path-sum/NOTES.md create mode 100644 leetcode/leetcode/64-minimum-path-sum/README.md create mode 100644 leetcode/leetcode/645-set-mismatch/645-set-mismatch.java create mode 100644 leetcode/leetcode/645-set-mismatch/README.md create mode 100644 leetcode/leetcode/662-maximum-width-of-binary-tree/662-maximum-width-of-binary-tree.java create mode 100644 leetcode/leetcode/662-maximum-width-of-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/662-maximum-width-of-binary-tree/README.md create mode 100644 leetcode/leetcode/669-trim-a-binary-search-tree/669-trim-a-binary-search-tree.java create mode 100644 leetcode/leetcode/669-trim-a-binary-search-tree/NOTES.md create mode 100644 leetcode/leetcode/669-trim-a-binary-search-tree/README.md create mode 100644 leetcode/leetcode/67-add-binary/67-add-binary.java create mode 100644 leetcode/leetcode/67-add-binary/README.md create mode 100644 leetcode/leetcode/671-second-minimum-node-in-a-binary-tree/671-second-minimum-node-in-a-binary-tree.java create mode 100644 leetcode/leetcode/671-second-minimum-node-in-a-binary-tree/NOTES.md create mode 100644 leetcode/leetcode/671-second-minimum-node-in-a-binary-tree/README.md create mode 100644 leetcode/leetcode/695-max-area-of-island/695-max-area-of-island.java create mode 100644 leetcode/leetcode/695-max-area-of-island/NOTES.md create mode 100644 leetcode/leetcode/695-max-area-of-island/README.md create mode 100644 leetcode/leetcode/70-climbing-stairs/70-climbing-stairs.java create mode 100644 leetcode/leetcode/70-climbing-stairs/README.md create mode 100644 leetcode/leetcode/700-search-in-a-binary-search-tree/700-search-in-a-binary-search-tree.java create mode 100644 leetcode/leetcode/700-search-in-a-binary-search-tree/NOTES.md create mode 100644 leetcode/leetcode/700-search-in-a-binary-search-tree/README.md create mode 100644 leetcode/leetcode/701-insert-into-a-binary-search-tree/701-insert-into-a-binary-search-tree.java create mode 100644 leetcode/leetcode/701-insert-into-a-binary-search-tree/NOTES.md create mode 100644 leetcode/leetcode/701-insert-into-a-binary-search-tree/README.md create mode 100644 leetcode/leetcode/704-binary-search/704-binary-search.java create mode 100644 leetcode/leetcode/704-binary-search/NOTES.md create mode 100644 leetcode/leetcode/704-binary-search/README.md create mode 100644 leetcode/leetcode/709-to-lower-case/709-to-lower-case.java create mode 100644 leetcode/leetcode/709-to-lower-case/NOTES.md create mode 100644 leetcode/leetcode/709-to-lower-case/README.md create mode 100644 leetcode/leetcode/72-edit-distance/72-edit-distance.java create mode 100644 leetcode/leetcode/72-edit-distance/NOTES.md create mode 100644 leetcode/leetcode/72-edit-distance/README.md create mode 100644 leetcode/leetcode/73-set-matrix-zeroes/73-set-matrix-zeroes.java create mode 100644 leetcode/leetcode/73-set-matrix-zeroes/NOTES.md create mode 100644 leetcode/leetcode/73-set-matrix-zeroes/README.md create mode 100644 leetcode/leetcode/735-asteroid-collision/735-asteroid-collision.java create mode 100644 leetcode/leetcode/735-asteroid-collision/NOTES.md create mode 100644 leetcode/leetcode/739-daily-temperatures/739-daily-temperatures.java create mode 100644 leetcode/leetcode/739-daily-temperatures/NOTES.md create mode 100644 leetcode/leetcode/739-daily-temperatures/README.md create mode 100644 leetcode/leetcode/74-search-a-2d-matrix/74-search-a-2d-matrix.java create mode 100644 leetcode/leetcode/74-search-a-2d-matrix/NOTES.md create mode 100644 leetcode/leetcode/74-search-a-2d-matrix/README.md create mode 100644 leetcode/leetcode/740-delete-and-earn/740-delete-and-earn.java create mode 100644 leetcode/leetcode/740-delete-and-earn/README.md create mode 100644 leetcode/leetcode/746-min-cost-climbing-stairs/746-min-cost-climbing-stairs.java create mode 100644 leetcode/leetcode/746-min-cost-climbing-stairs/NOTES.md create mode 100644 leetcode/leetcode/746-min-cost-climbing-stairs/README.md create mode 100644 leetcode/leetcode/747-largest-number-at-least-twice-of-others/747-largest-number-at-least-twice-of-others.java create mode 100644 leetcode/leetcode/747-largest-number-at-least-twice-of-others/NOTES.md create mode 100644 leetcode/leetcode/747-largest-number-at-least-twice-of-others/README.md create mode 100644 leetcode/leetcode/75-sort-colors/75-sort-colors.java create mode 100644 leetcode/leetcode/75-sort-colors/NOTES.md create mode 100644 leetcode/leetcode/75-sort-colors/README.md create mode 100644 leetcode/leetcode/78-subsets/78-subsets.java create mode 100644 leetcode/leetcode/78-subsets/NOTES.md create mode 100644 leetcode/leetcode/78-subsets/README.md create mode 100644 leetcode/leetcode/79-word-search/79-word-search.java create mode 100644 leetcode/leetcode/79-word-search/NOTES.md create mode 100644 leetcode/leetcode/79-word-search/README.md create mode 100644 leetcode/leetcode/799-champagne-tower/799-champagne-tower.java create mode 100644 leetcode/leetcode/799-champagne-tower/NOTES.md create mode 100644 leetcode/leetcode/799-champagne-tower/README.md create mode 100644 leetcode/leetcode/8-string-to-integer-atoi/8-string-to-integer-atoi.java create mode 100644 leetcode/leetcode/8-string-to-integer-atoi/NOTES.md create mode 100644 leetcode/leetcode/8-string-to-integer-atoi/README.md create mode 100644 leetcode/leetcode/807-max-increase-to-keep-city-skyline/807-max-increase-to-keep-city-skyline.java create mode 100644 leetcode/leetcode/807-max-increase-to-keep-city-skyline/NOTES.md create mode 100644 leetcode/leetcode/807-max-increase-to-keep-city-skyline/README.md create mode 100644 leetcode/leetcode/814-binary-tree-pruning/814-binary-tree-pruning.c create mode 100644 leetcode/leetcode/814-binary-tree-pruning/814-binary-tree-pruning.java create mode 100644 leetcode/leetcode/814-binary-tree-pruning/NOTES.md create mode 100644 leetcode/leetcode/814-binary-tree-pruning/README.md create mode 100644 leetcode/leetcode/82-remove-duplicates-from-sorted-list-ii/82-remove-duplicates-from-sorted-list-ii.java create mode 100644 leetcode/leetcode/82-remove-duplicates-from-sorted-list-ii/NOTES.md create mode 100644 leetcode/leetcode/82-remove-duplicates-from-sorted-list-ii/README.md create mode 100644 leetcode/leetcode/846-hand-of-straights/846-hand-of-straights.java create mode 100644 leetcode/leetcode/846-hand-of-straights/NOTES.md create mode 100644 leetcode/leetcode/846-hand-of-straights/README.md create mode 100644 leetcode/leetcode/849-maximize-distance-to-closest-person/849-maximize-distance-to-closest-person.java create mode 100644 leetcode/leetcode/849-maximize-distance-to-closest-person/NOTES.md create mode 100644 leetcode/leetcode/849-maximize-distance-to-closest-person/README.md create mode 100644 leetcode/leetcode/852-peak-index-in-a-mountain-array/852-peak-index-in-a-mountain-array.java create mode 100644 leetcode/leetcode/852-peak-index-in-a-mountain-array/NOTES.md create mode 100644 leetcode/leetcode/852-peak-index-in-a-mountain-array/README.md create mode 100644 leetcode/leetcode/867-transpose-matrix/867-transpose-matrix.java create mode 100644 leetcode/leetcode/867-transpose-matrix/NOTES.md create mode 100644 leetcode/leetcode/867-transpose-matrix/README.md create mode 100644 leetcode/leetcode/875-koko-eating-bananas/875-koko-eating-bananas.java create mode 100644 leetcode/leetcode/875-koko-eating-bananas/NOTES.md create mode 100644 leetcode/leetcode/875-koko-eating-bananas/README.md create mode 100644 leetcode/leetcode/88-merge-sorted-array/88-merge-sorted-array.java create mode 100644 leetcode/leetcode/88-merge-sorted-array/NOTES.md create mode 100644 leetcode/leetcode/88-merge-sorted-array/README.md create mode 100644 leetcode/leetcode/889-construct-binary-tree-from-preorder-and-postorder-traversal/889-construct-binary-tree-from-preorder-and-postorder-traversal.java create mode 100644 leetcode/leetcode/889-construct-binary-tree-from-preorder-and-postorder-traversal/NOTES.md create mode 100644 leetcode/leetcode/889-construct-binary-tree-from-preorder-and-postorder-traversal/README.md create mode 100644 leetcode/leetcode/890-find-and-replace-pattern/890-find-and-replace-pattern.java create mode 100644 leetcode/leetcode/890-find-and-replace-pattern/NOTES.md create mode 100644 leetcode/leetcode/890-find-and-replace-pattern/README.md create mode 100644 leetcode/leetcode/9-palindrome-number/9-palindrome-number.cpp create mode 100644 leetcode/leetcode/9-palindrome-number/9-palindrome-number.java create mode 100644 leetcode/leetcode/9-palindrome-number/NOTES.md create mode 100644 leetcode/leetcode/9-palindrome-number/README.md create mode 100644 leetcode/leetcode/931-minimum-falling-path-sum/931-minimum-falling-path-sum.java create mode 100644 leetcode/leetcode/94-binary-tree-inorder-traversal/94-binary-tree-inorder-traversal.java create mode 100644 leetcode/leetcode/94-binary-tree-inorder-traversal/NOTES.md create mode 100644 leetcode/leetcode/94-binary-tree-inorder-traversal/README.md create mode 100644 leetcode/leetcode/941-valid-mountain-array/941-valid-mountain-array.java create mode 100644 leetcode/leetcode/941-valid-mountain-array/NOTES.md create mode 100644 leetcode/leetcode/941-valid-mountain-array/README.md create mode 100644 leetcode/leetcode/946-validate-stack-sequences/946-validate-stack-sequences.java create mode 100644 leetcode/leetcode/946-validate-stack-sequences/NOTES.md create mode 100644 leetcode/leetcode/946-validate-stack-sequences/README.md create mode 100644 leetcode/leetcode/96-unique-binary-search-trees/96-unique-binary-search-trees.java create mode 100644 leetcode/leetcode/96-unique-binary-search-trees/NOTES.md create mode 100644 leetcode/leetcode/96-unique-binary-search-trees/README.md create mode 100644 leetcode/leetcode/969-pancake-sorting/969-pancake-sorting.java create mode 100644 leetcode/leetcode/969-pancake-sorting/NOTES.md create mode 100644 leetcode/leetcode/969-pancake-sorting/README.md create mode 100644 leetcode/leetcode/973-k-closest-points-to-origin/973-k-closest-points-to-origin.java create mode 100644 leetcode/leetcode/973-k-closest-points-to-origin/NOTES.md create mode 100644 leetcode/leetcode/973-k-closest-points-to-origin/README.md create mode 100644 leetcode/leetcode/991-broken-calculator/991-broken-calculator.java create mode 100644 leetcode/leetcode/991-broken-calculator/NOTES.md create mode 100644 leetcode/leetcode/991-broken-calculator/README.md create mode 100644 leetcode/leetcode/Binary Search - GFG/README.md create mode 100644 leetcode/leetcode/Binary Search - GFG/binary-search.java create mode 100644 leetcode/leetcode/Bottom View of Binary Tree - GFG/README.md create mode 100644 leetcode/leetcode/Bottom View of Binary Tree - GFG/bottom-view-of-binary-tree.java create mode 100644 leetcode/leetcode/Buildings receiving sunlight - GFG/README.md create mode 100644 leetcode/leetcode/Buildings receiving sunlight - GFG/buildings-receiving-sunlight.java create mode 100644 leetcode/leetcode/Check for BST - GFG/README.md create mode 100644 leetcode/leetcode/Check for BST - GFG/check-for-bst.java create mode 100644 leetcode/leetcode/Check if Linked List is Palindrome - GFG/README.md create mode 100644 leetcode/leetcode/Check if Linked List is Palindrome - GFG/check-if-linked-list-is-palindrome.java create mode 100644 leetcode/leetcode/Connect Nodes at Same Level - GFG/README.md create mode 100644 leetcode/leetcode/Connect Nodes at Same Level - GFG/connect-nodes-at-same-level.java create mode 100644 leetcode/leetcode/Count distinct elements in every window - GFG/README.md create mode 100644 leetcode/leetcode/Count distinct elements in every window - GFG/count-distinct-elements-in-every-window.java create mode 100644 leetcode/leetcode/Count pairs in array divisible by K - GFG/README.md create mode 100644 leetcode/leetcode/Count pairs in array divisible by K - GFG/count-pairs-in-array-divisible-by-k.java create mode 100644 leetcode/leetcode/Detect Loop in linked list - GFG/README.md create mode 100644 leetcode/leetcode/Detect Loop in linked list - GFG/detect-loop-in-linked-list.java create mode 100644 leetcode/leetcode/Diameter of a Binary Tree - GFG/README.md create mode 100644 leetcode/leetcode/Diameter of a Binary Tree - GFG/diameter-of-a-binary-tree.java create mode 100644 leetcode/leetcode/Find Transition Point - GFG/README.md create mode 100644 leetcode/leetcode/Find Transition Point - GFG/find-transition-point.java create mode 100644 leetcode/leetcode/Find duplicates in an array - GFG/README.md create mode 100644 leetcode/leetcode/Find duplicates in an array - GFG/find-duplicates-in-an-array.java create mode 100644 leetcode/leetcode/Finding middle element in a linked list - GFG/README.md create mode 100644 leetcode/leetcode/Finding middle element in a linked list - GFG/finding-middle-element-in-a-linked-list.java create mode 100644 leetcode/leetcode/GCD of two numbers - GFG/README.md create mode 100644 leetcode/leetcode/GCD of two numbers - GFG/gcd-of-two-numbers.java create mode 100644 leetcode/leetcode/Get minimum element from stack - GFG/README.md create mode 100644 leetcode/leetcode/Get minimum element from stack - GFG/get-minimum-element-from-stack.java create mode 100644 leetcode/leetcode/Given a linked list of 0s, 1s and 2s, sort it. - GFG/README.md create mode 100644 leetcode/leetcode/Given a linked list of 0s, 1s and 2s, sort it. - GFG/given-a-linked-list-of-0s-1s-and-2s-sort-it..java create mode 100644 leetcode/leetcode/Height of Binary Tree - GFG/README.md create mode 100644 leetcode/leetcode/Height of Binary Tree - GFG/height-of-binary-tree.java create mode 100644 leetcode/leetcode/Inorder Successor in BST - GFG/README.md create mode 100644 leetcode/leetcode/Inorder Successor in BST - GFG/inorder-successor-in-bst.java create mode 100644 leetcode/leetcode/Intersection Point in Y Shapped Linked Lists - GFG/README.md create mode 100644 leetcode/leetcode/Intersection Point in Y Shapped Linked Lists - GFG/intersection-point-in-y-shapped-linked-lists.java create mode 100644 leetcode/leetcode/Kadane's Algorithm - GFG/README.md create mode 100644 leetcode/leetcode/Kadane's Algorithm - GFG/kadanes-algorithm.java create mode 100644 leetcode/leetcode/Largest value in each level - GFG/README.md create mode 100644 leetcode/leetcode/Largest value in each level - GFG/largest-value-in-each-level.java create mode 100644 leetcode/leetcode/Left View of Binary Tree - GFG/README.md create mode 100644 leetcode/leetcode/Left View of Binary Tree - GFG/left-view-of-binary-tree.java create mode 100644 leetcode/leetcode/Level order traversal in spiral form - GFG/README.md create mode 100644 leetcode/leetcode/Level order traversal in spiral form - GFG/level-order-traversal-in-spiral-form.java create mode 100644 leetcode/leetcode/Lowest Common Ancestor in a Binary Tree - GFG/README.md create mode 100644 leetcode/leetcode/Lowest Common Ancestor in a Binary Tree - GFG/lowest-common-ancestor-in-a-binary-tree.java create mode 100644 leetcode/leetcode/Max Sum Subarray of size K - GFG/README.md create mode 100644 leetcode/leetcode/Max Sum Subarray of size K - GFG/max-sum-subarray-of-size-k.java create mode 100644 leetcode/leetcode/Maximum no of 1's row - GFG/README.md create mode 100644 leetcode/leetcode/Maximum no of 1's row - GFG/maximum-no-of-1s-row.java create mode 100644 leetcode/leetcode/Minimum Operations - GFG/README.md create mode 100644 leetcode/leetcode/Minimum Operations - GFG/minimum-operations.java create mode 100644 leetcode/leetcode/Missing number in array - GFG/README.md create mode 100644 leetcode/leetcode/Missing number in array - GFG/missing-number-in-array.java create mode 100644 leetcode/leetcode/Move all zeroes to end of array - GFG/README.md create mode 100644 leetcode/leetcode/Move all zeroes to end of array - GFG/move-all-zeroes-to-end-of-array.java create mode 100644 leetcode/leetcode/Peak element - GFG/README.md create mode 100644 leetcode/leetcode/Peak element - GFG/peak-element.java create mode 100644 leetcode/leetcode/README.md create mode 100644 leetcode/leetcode/Rearrange a linked list - GFG/README.md create mode 100644 leetcode/leetcode/Rearrange a linked list - GFG/rearrange-a-linked-list.java create mode 100644 leetcode/leetcode/Remove loop in Linked List - GFG/README.md create mode 100644 leetcode/leetcode/Remove loop in Linked List - GFG/remove-loop-in-linked-list.java create mode 100644 leetcode/leetcode/Rotate Array - GFG/README.md create mode 100644 leetcode/leetcode/Rotate Array - GFG/rotate-array.c create mode 100644 leetcode/leetcode/Rotate a Linked List - GFG/README.md create mode 100644 leetcode/leetcode/Rotate a Linked List - GFG/rotate-a-linked-list.java create mode 100644 leetcode/leetcode/Subset Sum Problem - GFG/subset-sum-problem.java create mode 100644 leetcode/leetcode/Sum Tree - GFG/README.md create mode 100644 leetcode/leetcode/Sum Tree - GFG/sum-tree.java create mode 100644 leetcode/leetcode/Top View of Binary Tree - GFG/README.md create mode 100644 leetcode/leetcode/Top View of Binary Tree - GFG/top-view-of-binary-tree.java create mode 100644 leetcode/leetcode/Trailing zeroes in factorial - GFG/README.md create mode 100644 leetcode/leetcode/Trailing zeroes in factorial - GFG/trailing-zeroes-in-factorial.java create mode 100644 leetcode/leetcode/Transform to Sum Tree - GFG/README.md create mode 100644 leetcode/leetcode/Vertical Traversal of Binary Tree - GFG/README.md create mode 100644 leetcode/leetcode/Vertical Traversal of Binary Tree - GFG/vertical-traversal-of-binary-tree.java create mode 100644 leetcode/leetcode/a-number-after-a-double-reversal/README.md create mode 100644 leetcode/leetcode/a-number-after-a-double-reversal/a-number-after-a-double-reversal.java create mode 100644 leetcode/leetcode/add-digits/README.md create mode 100644 leetcode/leetcode/add-digits/add-digits.java create mode 100644 leetcode/leetcode/add-two-numbers-ii/README.md create mode 100644 leetcode/leetcode/add-two-numbers-ii/add-two-numbers-ii.java create mode 100644 leetcode/leetcode/add-two-numbers/README.md create mode 100644 leetcode/leetcode/add-two-numbers/add-two-numbers.java create mode 100644 leetcode/leetcode/adding-spaces-to-a-string/README.md create mode 100644 leetcode/leetcode/adding-spaces-to-a-string/adding-spaces-to-a-string.java create mode 100644 leetcode/leetcode/apply-discount-every-n-orders/README.md create mode 100644 leetcode/leetcode/apply-discount-every-n-orders/apply-discount-every-n-orders.java create mode 100644 leetcode/leetcode/arranging-coins/README.md create mode 100644 leetcode/leetcode/arranging-coins/arranging-coins.java create mode 100644 leetcode/leetcode/array-partition-i/README.md create mode 100644 leetcode/leetcode/array-partition-i/array-partition-i.java create mode 100644 leetcode/leetcode/average-of-levels-in-binary-tree/README.md create mode 100644 leetcode/leetcode/average-of-levels-in-binary-tree/average-of-levels-in-binary-tree.java create mode 100644 leetcode/leetcode/balanced-binary-tree/README.md create mode 100644 leetcode/leetcode/balanced-binary-tree/balanced-binary-tree.java create mode 100644 leetcode/leetcode/binary-search/README.md create mode 100644 leetcode/leetcode/binary-search/binary-search.java create mode 100644 leetcode/leetcode/binary-tree-inorder-traversal/README.md create mode 100644 leetcode/leetcode/binary-tree-inorder-traversal/binary-tree-inorder-traversal.java create mode 100644 leetcode/leetcode/binary-tree-postorder-traversal/README.md create mode 100644 leetcode/leetcode/binary-tree-postorder-traversal/binary-tree-postorder-traversal.java create mode 100644 leetcode/leetcode/binary-tree-preorder-traversal/README.md create mode 100644 leetcode/leetcode/binary-tree-preorder-traversal/binary-tree-preorder-traversal.java create mode 100644 leetcode/leetcode/binary-tree-tilt/README.md create mode 100644 leetcode/leetcode/binary-tree-tilt/binary-tree-tilt.java create mode 100644 leetcode/leetcode/bitwise-and-of-numbers-range/README.md create mode 100644 leetcode/leetcode/bitwise-and-of-numbers-range/bitwise-and-of-numbers-range.cpp create mode 100644 leetcode/leetcode/bitwise-and-of-numbers-range/bitwise-and-of-numbers-range.java create mode 100644 leetcode/leetcode/build-array-from-permutation/README.md create mode 100644 leetcode/leetcode/build-array-from-permutation/build-array-from-permutation.java create mode 100644 leetcode/leetcode/calculate-money-in-leetcode-bank/README.md create mode 100644 leetcode/leetcode/calculate-money-in-leetcode-bank/calculate-money-in-leetcode-bank.java create mode 100644 leetcode/leetcode/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/README.md create mode 100644 leetcode/leetcode/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence/check-if-a-word-occurs-as-a-prefix-of-any-word-in-a-sentence.java create mode 100644 leetcode/leetcode/check-if-all-as-appears-before-all-bs/README.md create mode 100644 leetcode/leetcode/check-if-all-as-appears-before-all-bs/check-if-all-as-appears-before-all-bs.java create mode 100644 leetcode/leetcode/check-if-one-string-swap-can-make-strings-equal/README.md create mode 100644 leetcode/leetcode/check-if-one-string-swap-can-make-strings-equal/check-if-one-string-swap-can-make-strings-equal.java create mode 100644 leetcode/leetcode/check-if-the-sentence-is-pangram/README.md create mode 100644 leetcode/leetcode/check-if-the-sentence-is-pangram/check-if-the-sentence-is-pangram.java create mode 100644 leetcode/leetcode/check-if-two-string-arrays-are-equivalent/README.md create mode 100644 leetcode/leetcode/check-if-two-string-arrays-are-equivalent/check-if-two-string-arrays-are-equivalent.java create mode 100644 leetcode/leetcode/climbing-stairs/README.md create mode 100644 leetcode/leetcode/climbing-stairs/climbing-stairs.cpp create mode 100644 leetcode/leetcode/climbing-stairs/climbing-stairs.java create mode 100644 leetcode/leetcode/complement-of-base-10-integer/README.md create mode 100644 leetcode/leetcode/complement-of-base-10-integer/complement-of-base-10-integer.java create mode 100644 leetcode/leetcode/complex-number-multiplication/README.md create mode 100644 leetcode/leetcode/complex-number-multiplication/complex-number-multiplication.java create mode 100644 leetcode/leetcode/concatenation-of-array/README.md create mode 100644 leetcode/leetcode/concatenation-of-array/concatenation-of-array.java create mode 100644 leetcode/leetcode/consecutive-characters/README.md create mode 100644 leetcode/leetcode/consecutive-characters/consecutive-characters.java create mode 100644 leetcode/leetcode/contains-duplicate/README.md create mode 100644 leetcode/leetcode/contains-duplicate/contains-duplicate.java create mode 100644 leetcode/leetcode/convert-1d-array-into-2d-array/README.md create mode 100644 leetcode/leetcode/convert-1d-array-into-2d-array/convert-1d-array-into-2d-array.java create mode 100644 leetcode/leetcode/convert-binary-number-in-a-linked-list-to-integer/README.md create mode 100644 leetcode/leetcode/convert-binary-number-in-a-linked-list-to-integer/convert-binary-number-in-a-linked-list-to-integer.java create mode 100644 leetcode/leetcode/convert-sorted-array-to-binary-search-tree/README.md create mode 100644 leetcode/leetcode/convert-sorted-array-to-binary-search-tree/convert-sorted-array-to-binary-search-tree.java create mode 100644 leetcode/leetcode/convert-sorted-list-to-binary-search-tree/README.md create mode 100644 leetcode/leetcode/convert-sorted-list-to-binary-search-tree/convert-sorted-list-to-binary-search-tree.java create mode 100644 leetcode/leetcode/count-complete-tree-nodes/README.md create mode 100644 leetcode/leetcode/count-complete-tree-nodes/count-complete-tree-nodes.java create mode 100644 leetcode/leetcode/count-items-matching-a-rule/README.md create mode 100644 leetcode/leetcode/count-items-matching-a-rule/count-items-matching-a-rule.java create mode 100644 leetcode/leetcode/count-negative-numbers-in-a-sorted-matrix/README.md create mode 100644 leetcode/leetcode/count-negative-numbers-in-a-sorted-matrix/count-negative-numbers-in-a-sorted-matrix.java create mode 100644 leetcode/leetcode/count-number-of-pairs-with-absolute-difference-k/README.md create mode 100644 leetcode/leetcode/count-number-of-pairs-with-absolute-difference-k/count-number-of-pairs-with-absolute-difference-k.java create mode 100644 leetcode/leetcode/count-odd-numbers-in-an-interval-range/README.md create mode 100644 leetcode/leetcode/count-odd-numbers-in-an-interval-range/count-odd-numbers-in-an-interval-range.java create mode 100644 leetcode/leetcode/count-primes/README.md create mode 100644 leetcode/leetcode/count-primes/count-primes.java create mode 100644 leetcode/leetcode/create-target-array-in-the-given-order/README.md create mode 100644 leetcode/leetcode/create-target-array-in-the-given-order/create-target-array-in-the-given-order.java create mode 100644 leetcode/leetcode/delete-leaves-with-a-given-value/README.md create mode 100644 leetcode/leetcode/delete-leaves-with-a-given-value/delete-leaves-with-a-given-value.java create mode 100644 leetcode/leetcode/delete-node-in-a-linked-list/README.md create mode 100644 leetcode/leetcode/delete-node-in-a-linked-list/delete-node-in-a-linked-list.java create mode 100644 leetcode/leetcode/delete-the-middle-node-of-a-linked-list/README.md create mode 100644 leetcode/leetcode/delete-the-middle-node-of-a-linked-list/delete-the-middle-node-of-a-linked-list.java create mode 100644 leetcode/leetcode/design-a-stack-with-increment-operation/README.md create mode 100644 leetcode/leetcode/design-a-stack-with-increment-operation/design-a-stack-with-increment-operation.java create mode 100644 leetcode/leetcode/design-browser-history/README.md create mode 100644 leetcode/leetcode/design-browser-history/design-browser-history.java create mode 100644 leetcode/leetcode/design-circular-queue/README.md create mode 100644 leetcode/leetcode/design-circular-queue/design-circular-queue.java create mode 100644 leetcode/leetcode/design-linked-list/README.md create mode 100644 leetcode/leetcode/design-linked-list/design-linked-list.java create mode 100644 leetcode/leetcode/destroying-asteroids/README.md create mode 100644 leetcode/leetcode/destroying-asteroids/destroying-asteroids.java create mode 100644 leetcode/leetcode/detect-capital/README.md create mode 100644 leetcode/leetcode/detect-capital/detect-capital.java create mode 100644 leetcode/leetcode/diameter-of-binary-tree/README.md create mode 100644 leetcode/leetcode/diameter-of-binary-tree/diameter-of-binary-tree.java create mode 100644 leetcode/leetcode/encode-and-decode-tinyurl/README.md create mode 100644 leetcode/leetcode/encode-and-decode-tinyurl/encode-and-decode-tinyurl.java create mode 100644 leetcode/leetcode/fibonacci-number/README.md create mode 100644 leetcode/leetcode/fibonacci-number/fibonacci-number.java create mode 100644 leetcode/leetcode/final-value-of-variable-after-performing-operations/README.md create mode 100644 leetcode/leetcode/final-value-of-variable-after-performing-operations/final-value-of-variable-after-performing-operations.java create mode 100644 leetcode/leetcode/find-all-duplicates-in-an-array/README.md create mode 100644 leetcode/leetcode/find-all-duplicates-in-an-array/find-all-duplicates-in-an-array.java create mode 100644 leetcode/leetcode/find-first-and-last-position-of-element-in-sorted-array/README.md create mode 100644 leetcode/leetcode/find-first-and-last-position-of-element-in-sorted-array/find-first-and-last-position-of-element-in-sorted-array.java create mode 100644 leetcode/leetcode/find-first-palindromic-string-in-the-array/README.md create mode 100644 leetcode/leetcode/find-first-palindromic-string-in-the-array/find-first-palindromic-string-in-the-array.java create mode 100644 leetcode/leetcode/find-minimum-in-rotated-sorted-array/README.md create mode 100644 leetcode/leetcode/find-minimum-in-rotated-sorted-array/find-minimum-in-rotated-sorted-array.java create mode 100644 leetcode/leetcode/find-pivot-index/README.md create mode 100644 leetcode/leetcode/find-pivot-index/find-pivot-index.java create mode 100644 leetcode/leetcode/find-the-duplicate-number/README.md create mode 100644 leetcode/leetcode/find-the-duplicate-number/find-the-duplicate-number.java create mode 100644 leetcode/leetcode/find-the-student-that-will-replace-the-chalk/README.md create mode 100644 leetcode/leetcode/find-the-student-that-will-replace-the-chalk/find-the-student-that-will-replace-the-chalk.java create mode 100644 leetcode/leetcode/find-the-town-judge/README.md create mode 100644 leetcode/leetcode/find-the-town-judge/find-the-town-judge.java create mode 100644 leetcode/leetcode/finding-pairs-with-a-certain-sum/README.md create mode 100644 leetcode/leetcode/finding-pairs-with-a-certain-sum/finding-pairs-with-a-certain-sum.java create mode 100644 leetcode/leetcode/first-bad-version/README.md create mode 100644 leetcode/leetcode/first-bad-version/first-bad-version.java create mode 100644 leetcode/leetcode/first-missing-positive/README.md create mode 100644 leetcode/leetcode/first-missing-positive/first-missing-positive.java create mode 100644 leetcode/leetcode/first-unique-character-in-a-string/README.md create mode 100644 leetcode/leetcode/first-unique-character-in-a-string/first-unique-character-in-a-string.java create mode 100644 leetcode/leetcode/flatten-a-multilevel-doubly-linked-list/README.md create mode 100644 leetcode/leetcode/flatten-a-multilevel-doubly-linked-list/flatten-a-multilevel-doubly-linked-list.java create mode 100644 leetcode/leetcode/flatten-binary-tree-to-linked-list/README.md create mode 100644 leetcode/leetcode/flatten-binary-tree-to-linked-list/flatten-binary-tree-to-linked-list.java create mode 100644 leetcode/leetcode/guess-number-higher-or-lower/README.md create mode 100644 leetcode/leetcode/guess-number-higher-or-lower/guess-number-higher-or-lower.java create mode 100644 leetcode/leetcode/implement-strstr/README.md create mode 100644 leetcode/leetcode/implement-strstr/implement-strstr.java create mode 100644 leetcode/leetcode/insert-into-a-binary-search-tree/README.md create mode 100644 leetcode/leetcode/insert-into-a-binary-search-tree/insert-into-a-binary-search-tree.java create mode 100644 leetcode/leetcode/intersection-of-two-arrays/README.md create mode 100644 leetcode/leetcode/intersection-of-two-arrays/intersection-of-two-arrays.java create mode 100644 leetcode/leetcode/invert-binary-tree/README.md create mode 100644 leetcode/leetcode/invert-binary-tree/invert-binary-tree.java create mode 100644 leetcode/leetcode/kth-largest-element-in-an-array/README.md create mode 100644 leetcode/leetcode/kth-largest-element-in-an-array/kth-largest-element-in-an-array.java create mode 100644 leetcode/leetcode/largest-perimeter-triangle/README.md create mode 100644 leetcode/leetcode/largest-perimeter-triangle/largest-perimeter-triangle.java create mode 100644 leetcode/leetcode/length-of-last-word/README.md create mode 100644 leetcode/leetcode/length-of-last-word/length-of-last-word.java create mode 100644 leetcode/leetcode/linked-list-cycle/README.md create mode 100644 leetcode/leetcode/linked-list-cycle/linked-list-cycle.java create mode 100644 leetcode/leetcode/linked-list-random-node/README.md create mode 100644 leetcode/leetcode/linked-list-random-node/linked-list-random-node.java create mode 100644 leetcode/leetcode/longest-increasing-subsequence/README.md create mode 100644 leetcode/leetcode/longest-increasing-subsequence/longest-increasing-subsequence.java create mode 100644 leetcode/leetcode/longest-substring-without-repeating-characters/README.md create mode 100644 leetcode/leetcode/longest-substring-without-repeating-characters/longest-substring-without-repeating-characters.java create mode 100644 leetcode/leetcode/majority-element/README.md create mode 100644 leetcode/leetcode/majority-element/majority-element.java create mode 100644 leetcode/leetcode/make-two-arrays-equal-by-reversing-sub-arrays/README.md create mode 100644 leetcode/leetcode/make-two-arrays-equal-by-reversing-sub-arrays/make-two-arrays-equal-by-reversing-sub-arrays.java create mode 100644 leetcode/leetcode/matrix-diagonal-sum/README.md create mode 100644 leetcode/leetcode/matrix-diagonal-sum/matrix-diagonal-sum.java create mode 100644 leetcode/leetcode/max-consecutive-ones/README.md create mode 100644 leetcode/leetcode/max-consecutive-ones/max-consecutive-ones.java create mode 100644 leetcode/leetcode/maximum-binary-tree/README.md create mode 100644 leetcode/leetcode/maximum-binary-tree/maximum-binary-tree.java create mode 100644 leetcode/leetcode/maximum-depth-of-binary-tree/README.md create mode 100644 leetcode/leetcode/maximum-depth-of-binary-tree/maximum-depth-of-binary-tree.java create mode 100644 leetcode/leetcode/maximum-depth-of-n-ary-tree/README.md create mode 100644 leetcode/leetcode/maximum-depth-of-n-ary-tree/maximum-depth-of-n-ary-tree.java create mode 100644 leetcode/leetcode/maximum-ice-cream-bars/README.md create mode 100644 leetcode/leetcode/maximum-ice-cream-bars/maximum-ice-cream-bars.java create mode 100644 leetcode/leetcode/maximum-number-of-coins-you-can-get/README.md create mode 100644 leetcode/leetcode/maximum-number-of-coins-you-can-get/maximum-number-of-coins-you-can-get.java create mode 100644 leetcode/leetcode/maximum-product-difference-between-two-pairs/README.md create mode 100644 leetcode/leetcode/maximum-product-difference-between-two-pairs/maximum-product-difference-between-two-pairs.java create mode 100644 leetcode/leetcode/maximum-product-of-three-numbers/README.md create mode 100644 leetcode/leetcode/maximum-product-of-three-numbers/maximum-product-of-three-numbers.java create mode 100644 leetcode/leetcode/maximum-product-of-two-elements-in-an-array/README.md create mode 100644 leetcode/leetcode/maximum-product-of-two-elements-in-an-array/maximum-product-of-two-elements-in-an-array.java create mode 100644 leetcode/leetcode/maximum-product-subarray/README.md create mode 100644 leetcode/leetcode/maximum-product-subarray/maximum-product-subarray.java create mode 100644 leetcode/leetcode/maximum-subarray/README.md create mode 100644 leetcode/leetcode/maximum-subarray/maximum-subarray.java create mode 100644 leetcode/leetcode/median-of-two-sorted-arrays/README.md create mode 100644 leetcode/leetcode/median-of-two-sorted-arrays/median-of-two-sorted-arrays.java create mode 100644 leetcode/leetcode/merge-in-between-linked-lists/README.md create mode 100644 leetcode/leetcode/merge-in-between-linked-lists/merge-in-between-linked-lists.java create mode 100644 leetcode/leetcode/merge-two-sorted-lists/README.md create mode 100644 leetcode/leetcode/merge-two-sorted-lists/merge-two-sorted-lists.java create mode 100644 leetcode/leetcode/middle-of-the-linked-list/README.md create mode 100644 leetcode/leetcode/middle-of-the-linked-list/middle-of-the-linked-list.java create mode 100644 leetcode/leetcode/minimize-maximum-pair-sum-in-array/README.md create mode 100644 leetcode/leetcode/minimize-maximum-pair-sum-in-array/minimize-maximum-pair-sum-in-array.java create mode 100644 leetcode/leetcode/minimum-absolute-difference/README.md create mode 100644 leetcode/leetcode/minimum-absolute-difference/minimum-absolute-difference.java create mode 100644 leetcode/leetcode/minimum-moves-to-equal-array-elements-ii/README.md create mode 100644 leetcode/leetcode/minimum-moves-to-equal-array-elements-ii/minimum-moves-to-equal-array-elements-ii.java create mode 100644 leetcode/leetcode/minimum-number-of-operations-to-move-all-balls-to-each-box/README.md create mode 100644 leetcode/leetcode/minimum-number-of-operations-to-move-all-balls-to-each-box/minimum-number-of-operations-to-move-all-balls-to-each-box.java create mode 100644 leetcode/leetcode/minimum-number-of-steps-to-make-two-strings-anagram/README.md create mode 100644 leetcode/leetcode/minimum-number-of-steps-to-make-two-strings-anagram/minimum-number-of-steps-to-make-two-strings-anagram.java create mode 100644 leetcode/leetcode/minimum-operations-to-make-array-equal/README.md create mode 100644 leetcode/leetcode/minimum-operations-to-make-array-equal/minimum-operations-to-make-array-equal.java create mode 100644 leetcode/leetcode/missing-number/README.md create mode 100644 leetcode/leetcode/missing-number/missing-number.java create mode 100644 leetcode/leetcode/move-zeroes/README.md create mode 100644 leetcode/leetcode/move-zeroes/move-zeroes.java create mode 100644 leetcode/leetcode/n-ary-tree-postorder-traversal/README.md create mode 100644 leetcode/leetcode/n-ary-tree-postorder-traversal/n-ary-tree-postorder-traversal.java create mode 100644 leetcode/leetcode/n-ary-tree-preorder-traversal/README.md create mode 100644 leetcode/leetcode/n-ary-tree-preorder-traversal/n-ary-tree-preorder-traversal.java create mode 100644 leetcode/leetcode/n-repeated-element-in-size-2n-array/README.md create mode 100644 leetcode/leetcode/n-repeated-element-in-size-2n-array/n-repeated-element-in-size-2n-array.java create mode 100644 leetcode/leetcode/number-complement/README.md create mode 100644 leetcode/leetcode/number-complement/number-complement.java create mode 100644 leetcode/leetcode/number-of-laser-beams-in-a-bank/README.md create mode 100644 leetcode/leetcode/number-of-laser-beams-in-a-bank/number-of-laser-beams-in-a-bank.java create mode 100644 leetcode/leetcode/number-of-segments-in-a-string/README.md create mode 100644 leetcode/leetcode/number-of-segments-in-a-string/number-of-segments-in-a-string.java create mode 100644 leetcode/leetcode/number-of-steps-to-reduce-a-number-to-zero/README.md create mode 100644 leetcode/leetcode/number-of-steps-to-reduce-a-number-to-zero/number-of-steps-to-reduce-a-number-to-zero.java create mode 100644 leetcode/leetcode/odd-even-linked-list/README.md create mode 100644 leetcode/leetcode/odd-even-linked-list/odd-even-linked-list.java create mode 100644 leetcode/leetcode/palindrome-linked-list/README.md create mode 100644 leetcode/leetcode/palindrome-linked-list/palindrome-linked-list.java create mode 100644 leetcode/leetcode/palindrome-number/README.md create mode 100644 leetcode/leetcode/palindrome-number/palindrome-number.java create mode 100644 leetcode/leetcode/partition-list/README.md create mode 100644 leetcode/leetcode/partition-list/partition-list.java create mode 100644 leetcode/leetcode/partitioning-into-minimum-number-of-deci-binary-numbers/README.md create mode 100644 leetcode/leetcode/partitioning-into-minimum-number-of-deci-binary-numbers/partitioning-into-minimum-number-of-deci-binary-numbers.java create mode 100644 leetcode/leetcode/pascals-triangle-ii/README.md create mode 100644 leetcode/leetcode/pascals-triangle-ii/pascals-triangle-ii.java create mode 100644 leetcode/leetcode/pascals-triangle/README.md create mode 100644 leetcode/leetcode/pascals-triangle/pascals-triangle.java create mode 100644 leetcode/leetcode/path-sum/README.md create mode 100644 leetcode/leetcode/plus-one/README.md create mode 100644 leetcode/leetcode/plus-one/plus-one.java create mode 100644 leetcode/leetcode/power-of-two/README.md create mode 100644 leetcode/leetcode/power-of-two/power-of-two.java create mode 100644 leetcode/leetcode/power-of-two/power-of-two.py create mode 100644 leetcode/leetcode/range-sum-of-bst/README.md create mode 100644 leetcode/leetcode/range-sum-of-bst/range-sum-of-bst.java create mode 100644 leetcode/leetcode/reduce-array-size-to-the-half/README.md create mode 100644 leetcode/leetcode/reduce-array-size-to-the-half/reduce-array-size-to-the-half.java create mode 100644 leetcode/leetcode/remove-all-adjacent-duplicates-in-string/README.md create mode 100644 leetcode/leetcode/remove-all-adjacent-duplicates-in-string/remove-all-adjacent-duplicates-in-string.java create mode 100644 leetcode/leetcode/remove-all-occurrences-of-a-substring/README.md create mode 100644 leetcode/leetcode/remove-all-occurrences-of-a-substring/remove-all-occurrences-of-a-substring.java create mode 100644 leetcode/leetcode/remove-duplicates-from-sorted-array/README.md create mode 100644 leetcode/leetcode/remove-duplicates-from-sorted-array/remove-duplicates-from-sorted-array.java create mode 100644 leetcode/leetcode/remove-duplicates-from-sorted-list-ii/README.md create mode 100644 leetcode/leetcode/remove-duplicates-from-sorted-list-ii/remove-duplicates-from-sorted-list-ii.java create mode 100644 leetcode/leetcode/remove-element/README.md create mode 100644 leetcode/leetcode/remove-element/remove-element.java create mode 100644 leetcode/leetcode/remove-linked-list-elements/README.md create mode 100644 leetcode/leetcode/remove-linked-list-elements/remove-linked-list-elements.java create mode 100644 leetcode/leetcode/remove-nth-node-from-end-of-list/README.md create mode 100644 leetcode/leetcode/remove-nth-node-from-end-of-list/remove-nth-node-from-end-of-list.java create mode 100644 leetcode/leetcode/reorder-list/README.md create mode 100644 leetcode/leetcode/reorder-list/reorder-list.java create mode 100644 leetcode/leetcode/reordered-power-of-2/README.md create mode 100644 leetcode/leetcode/reordered-power-of-2/reordered-power-of-2.java create mode 100644 leetcode/leetcode/reverse-integer/README.md create mode 100644 leetcode/leetcode/reverse-integer/reverse-integer.java create mode 100644 leetcode/leetcode/reverse-linked-list-ii/README.md create mode 100644 leetcode/leetcode/reverse-linked-list-ii/reverse-linked-list-ii.java create mode 100644 leetcode/leetcode/reverse-linked-list/README.md create mode 100644 leetcode/leetcode/reverse-linked-list/reverse-linked-list.java create mode 100644 leetcode/leetcode/reverse-nodes-in-k-group/README.md create mode 100644 leetcode/leetcode/reverse-nodes-in-k-group/reverse-nodes-in-k-group.java create mode 100644 leetcode/leetcode/reverse-string/README.md create mode 100644 leetcode/leetcode/reverse-string/reverse-string.java create mode 100644 leetcode/leetcode/reverse-words-in-a-string/README.md create mode 100644 leetcode/leetcode/reverse-words-in-a-string/reverse-words-in-a-string.java create mode 100644 leetcode/leetcode/rotate-array/README.md create mode 100644 leetcode/leetcode/rotate-array/rotate-array.java create mode 100644 leetcode/leetcode/rotate-list/README.md create mode 100644 leetcode/leetcode/rotate-list/rotate-list.java create mode 100644 leetcode/leetcode/running-sum-of-1d-array/README.md create mode 100644 leetcode/leetcode/running-sum-of-1d-array/running-sum-of-1d-array.java create mode 100644 leetcode/leetcode/same-tree/README.md create mode 100644 leetcode/leetcode/same-tree/same-tree.java create mode 100644 leetcode/leetcode/search-insert-position/README.md create mode 100644 leetcode/leetcode/search-insert-position/search-insert-position.java create mode 100644 leetcode/leetcode/second-largest-digit-in-a-string/README.md create mode 100644 leetcode/leetcode/second-largest-digit-in-a-string/second-largest-digit-in-a-string.java create mode 100644 leetcode/leetcode/shuffle-an-array/README.md create mode 100644 leetcode/leetcode/shuffle-an-array/shuffle-an-array.java create mode 100644 leetcode/leetcode/sign-of-the-product-of-an-array/README.md create mode 100644 leetcode/leetcode/sign-of-the-product-of-an-array/sign-of-the-product-of-an-array.java create mode 100644 leetcode/leetcode/simple-bank-system/README.md create mode 100644 leetcode/leetcode/simple-bank-system/simple-bank-system.java create mode 100644 leetcode/leetcode/single-element-in-a-sorted-array/README.md create mode 100644 leetcode/leetcode/single-element-in-a-sorted-array/single-element-in-a-sorted-array.java create mode 100644 leetcode/leetcode/single-number-ii/README.md create mode 100644 leetcode/leetcode/single-number-ii/single-number-ii.java create mode 100644 leetcode/leetcode/single-number/README.md create mode 100644 leetcode/leetcode/single-number/single-number.java create mode 100644 leetcode/leetcode/sort-an-array/README.md create mode 100644 leetcode/leetcode/sort-an-array/sort-an-array.java create mode 100644 leetcode/leetcode/sort-array-by-parity/sort-array-by-parity.java create mode 100644 leetcode/leetcode/sort-colors/README.md create mode 100644 leetcode/leetcode/sort-colors/sort-colors.java create mode 100644 leetcode/leetcode/sort-list/README.md create mode 100644 leetcode/leetcode/sort-list/sort-list.java create mode 100644 leetcode/leetcode/subdomain-visit-count/README.md create mode 100644 leetcode/leetcode/subdomain-visit-count/subdomain-visit-count.java create mode 100644 leetcode/leetcode/sum-of-digits-of-string-after-convert/README.md create mode 100644 leetcode/leetcode/sum-of-digits-of-string-after-convert/sum-of-digits-of-string-after-convert.java create mode 100644 leetcode/leetcode/sum-of-left-leaves/README.md create mode 100644 leetcode/leetcode/sum-of-left-leaves/sum-of-left-leaves.java create mode 100644 leetcode/leetcode/sum-of-nodes-with-even-valued-grandparent/README.md create mode 100644 leetcode/leetcode/sum-of-nodes-with-even-valued-grandparent/sum-of-nodes-with-even-valued-grandparent.java create mode 100644 leetcode/leetcode/sum-of-unique-elements/README.md create mode 100644 leetcode/leetcode/sum-of-unique-elements/sum-of-unique-elements.java create mode 100644 leetcode/leetcode/swap-nodes-in-pairs/README.md create mode 100644 leetcode/leetcode/swap-nodes-in-pairs/swap-nodes-in-pairs.java create mode 100644 leetcode/leetcode/swapping-nodes-in-a-linked-list/README.md create mode 100644 leetcode/leetcode/swapping-nodes-in-a-linked-list/swapping-nodes-in-a-linked-list.java create mode 100644 leetcode/leetcode/the-kth-factor-of-n/README.md create mode 100644 leetcode/leetcode/the-kth-factor-of-n/the-kth-factor-of-n.java create mode 100644 leetcode/leetcode/time-needed-to-buy-tickets/README.md create mode 100644 leetcode/leetcode/time-needed-to-buy-tickets/time-needed-to-buy-tickets.java create mode 100644 leetcode/leetcode/truncate-sentence/README.md create mode 100644 leetcode/leetcode/truncate-sentence/truncate-sentence.java create mode 100644 leetcode/leetcode/two-sum-ii-input-array-is-sorted/README.md create mode 100644 leetcode/leetcode/two-sum-ii-input-array-is-sorted/two-sum-ii-input-array-is-sorted.java create mode 100644 leetcode/leetcode/two-sum/README.md create mode 100644 leetcode/leetcode/two-sum/two-sum.java create mode 100644 leetcode/leetcode/unique-number-of-occurrences/README.md create mode 100644 leetcode/leetcode/unique-number-of-occurrences/unique-number-of-occurrences.java create mode 100644 leetcode/leetcode/valid-parentheses/README.md create mode 100644 leetcode/leetcode/valid-parentheses/valid-parentheses.java create mode 100644 leetcode/leetcode/valid-perfect-square/README.md create mode 100644 leetcode/leetcode/valid-perfect-square/valid-perfect-square.cpp create mode 100644 leetcode/leetcode/valid-triangle-number/README.md create mode 100644 leetcode/leetcode/valid-triangle-number/valid-triangle-number.java create mode 100644 leetcode/leetcode/validate-binary-search-tree/README.md create mode 100644 leetcode/leetcode/validate-binary-search-tree/validate-binary-search-tree.java create mode 100644 leetcode/leetcode/water-bottles/README.md create mode 100644 leetcode/leetcode/water-bottles/water-bottles.java create mode 100644 leetcode/leetcode/watering-plants/README.md create mode 100644 leetcode/leetcode/watering-plants/watering-plants.java diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c30cae7dbdbc85dcf9ef9d5e644cdb1bd91d705e GIT binary patch literal 6148 zcmeHKI|>3p3{BKx!N$^ZuHX#@(Gz$9LB&QCM6I{-TprDr52CC#f{nZ^$(zaM&9bl9 zY(zw-=k-KnBq9ymP_7obX7|lI*2|0n;W%R@2U*MJvN-NL)$bF=ZDc1KT&HLL?y%p+ zx$lY0QUNMJ1*iZOpaNehV7(XC33Soz a>WZy#zb3YUPDkG9K>iGvE;K6eYX$DxiWPYP literal 0 HcmV?d00001 diff --git a/leetcode/leetcode/0001-two-sum/0001-two-sum.cpp b/leetcode/leetcode/0001-two-sum/0001-two-sum.cpp new file mode 100644 index 0000000..43cb7b7 --- /dev/null +++ b/leetcode/leetcode/0001-two-sum/0001-two-sum.cpp @@ -0,0 +1,14 @@ +class Solution { +public: + vector twoSum(vector& nums, int target) { + for(int i=0;i map = new HashMap<>(); + + int[] ans = {-1,-1}; + + for(int i = 0;i1. Two Sum

Easy


Given an array of integers nums and an integer target, return indices of the two numbers such that they add up to target.

+ +

You may assume that each input would have exactly one solution, and you may not use the same element twice.

+ +

You can return the answer in any order.

+ +

 

+

Example 1:

+ +
+Input: nums = [2,7,11,15], target = 9
+Output: [0,1]
+Explanation: Because nums[0] + nums[1] == 9, we return [0, 1].
+
+ +

Example 2:

+ +
+Input: nums = [3,2,4], target = 6
+Output: [1,2]
+
+ +

Example 3:

+ +
+Input: nums = [3,3], target = 6
+Output: [0,1]
+
+ +

 

+

Constraints:

+ +
    +
  • 2 <= nums.length <= 104
  • +
  • -109 <= nums[i] <= 109
  • +
  • -109 <= target <= 109
  • +
  • Only one valid answer exists.
  • +
+ +

 

+Follow-up: Can you come up with an algorithm that is less than O(n2) time complexity? \ No newline at end of file diff --git a/leetcode/leetcode/0003-longest-substring-without-repeating-characters/0003-longest-substring-without-repeating-characters.java b/leetcode/leetcode/0003-longest-substring-without-repeating-characters/0003-longest-substring-without-repeating-characters.java new file mode 100644 index 0000000..0d0174b --- /dev/null +++ b/leetcode/leetcode/0003-longest-substring-without-repeating-characters/0003-longest-substring-without-repeating-characters.java @@ -0,0 +1,20 @@ +class Solution { + public int lengthOfLongestSubstring(String s) { + boolean[] freq = new boolean[256]; + int start = 0; + int end = 0; + int max = 0; + while(end3. Longest Substring Without Repeating Characters

Medium


Given a string s, find the length of the longest substring without duplicate characters.

+ +

 

+

Example 1:

+ +
+Input: s = "abcabcbb"
+Output: 3
+Explanation: The answer is "abc", with the length of 3.
+
+ +

Example 2:

+ +
+Input: s = "bbbbb"
+Output: 1
+Explanation: The answer is "b", with the length of 1.
+
+ +

Example 3:

+ +
+Input: s = "pwwkew"
+Output: 3
+Explanation: The answer is "wke", with the length of 3.
+Notice that the answer must be a substring, "pwke" is a subsequence and not a substring.
+
+ +

 

+

Constraints:

+ +
    +
  • 0 <= s.length <= 5 * 104
  • +
  • s consists of English letters, digits, symbols and spaces.
  • +
diff --git a/leetcode/leetcode/0005-longest-palindromic-substring/0005-longest-palindromic-substring.java b/leetcode/leetcode/0005-longest-palindromic-substring/0005-longest-palindromic-substring.java new file mode 100644 index 0000000..7e6e3ea --- /dev/null +++ b/leetcode/leetcode/0005-longest-palindromic-substring/0005-longest-palindromic-substring.java @@ -0,0 +1,34 @@ +class Solution { + public String longestPalindrome(String s) { + int n = s.length(); + boolean[][] dp = new boolean[n][n]; + int[] ans = new int[]{0, 0}; + + for (int i = 0; i < n; i++) { + dp[i][i] = true; + } + + for (int i = 0; i < n - 1; i++) { + if (s.charAt(i) == s.charAt(i + 1)) { + dp[i][i + 1] = true; + ans[0] = i; + ans[1] = i + 1; + } + } + + for (int diff = 2; diff < n; diff++) { + for (int i = 0; i < n - diff; i++) { + int j = i + diff; + if (s.charAt(i) == s.charAt(j) && dp[i + 1][j - 1]) { + dp[i][j] = true; + ans[0] = i; + ans[1] = j; + } + } + } + + int i = ans[0]; + int j = ans[1]; + return s.substring(i, j + 1); + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0005-longest-palindromic-substring/NOTES.md b/leetcode/leetcode/0005-longest-palindromic-substring/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0005-longest-palindromic-substring/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0005-longest-palindromic-substring/README.md b/leetcode/leetcode/0005-longest-palindromic-substring/README.md new file mode 100644 index 0000000..ea3d657 --- /dev/null +++ b/leetcode/leetcode/0005-longest-palindromic-substring/README.md @@ -0,0 +1,24 @@ +

5. Longest Palindromic Substring

Medium


Given a string s, return the longest palindromic substring in s.

+ +

 

+

Example 1:

+ +
Input: s = "babad"
+Output: "bab"
+Explanation: "aba" is also a valid answer.
+
+ +

Example 2:

+ +
Input: s = "cbbd"
+Output: "bb"
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 1000
  • +
  • s consist of only digits and English letters.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0009-palindrome-number/0009-palindrome-number.java b/leetcode/leetcode/0009-palindrome-number/0009-palindrome-number.java new file mode 100644 index 0000000..e8fffd6 --- /dev/null +++ b/leetcode/leetcode/0009-palindrome-number/0009-palindrome-number.java @@ -0,0 +1,23 @@ +class Solution { + public boolean check(ArrayList list){ + int low = 0; + int high = list.size()-1; + while(low list = new ArrayList<>(); + while(x!=0){ + list.add(x%10); + x = x/10; + } + return check(list); + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0009-palindrome-number/NOTES.md b/leetcode/leetcode/0009-palindrome-number/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0009-palindrome-number/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0011-container-with-most-water/0011-container-with-most-water.java b/leetcode/leetcode/0011-container-with-most-water/0011-container-with-most-water.java new file mode 100644 index 0000000..4f20893 --- /dev/null +++ b/leetcode/leetcode/0011-container-with-most-water/0011-container-with-most-water.java @@ -0,0 +1,28 @@ +class Solution { + public int maxArea(int[] height) { + + // Initilization the two pointer + int low = 0; + int high = height.length -1; + + int ans = Integer.MIN_VALUE; + while(lowheight[high]){ + high--; + } else{ + low++; + } + } + return ans; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0011-container-with-most-water/NOTES.md b/leetcode/leetcode/0011-container-with-most-water/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0011-container-with-most-water/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0011-container-with-most-water/README.md b/leetcode/leetcode/0011-container-with-most-water/README.md new file mode 100644 index 0000000..d639cbc --- /dev/null +++ b/leetcode/leetcode/0011-container-with-most-water/README.md @@ -0,0 +1,32 @@ +

11. Container With Most Water

Medium


You are given an integer array height of length n. There are n vertical lines drawn such that the two endpoints of the ith line are (i, 0) and (i, height[i]).

+ +

Find two lines that together with the x-axis form a container, such that the container contains the most water.

+ +

Return the maximum amount of water a container can store.

+ +

Notice that you may not slant the container.

+ +

 

+

Example 1:

+ +
+Input: height = [1,8,6,2,5,4,8,3,7]
+Output: 49
+Explanation: The above vertical lines are represented by array [1,8,6,2,5,4,8,3,7]. In this case, the max area of water (blue section) the container can contain is 49.
+
+ +

Example 2:

+ +
+Input: height = [1,1]
+Output: 1
+
+ +

 

+

Constraints:

+ +
    +
  • n == height.length
  • +
  • 2 <= n <= 105
  • +
  • 0 <= height[i] <= 104
  • +
diff --git a/leetcode/leetcode/0013-roman-to-integer/0013-roman-to-integer.java b/leetcode/leetcode/0013-roman-to-integer/0013-roman-to-integer.java new file mode 100644 index 0000000..b8b9206 --- /dev/null +++ b/leetcode/leetcode/0013-roman-to-integer/0013-roman-to-integer.java @@ -0,0 +1,77 @@ +class Solution { + public int romanToInt(String s) { + int ans = 0; + int index = 0; + + while(index13. Roman to Integer

Easy


Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M.

+ +
+Symbol       Value
+I             1
+V             5
+X             10
+L             50
+C             100
+D             500
+M             1000
+ +

For example, 2 is written as II in Roman numeral, just two ones added together. 12 is written as XII, which is simply X + II. The number 27 is written as XXVII, which is XX + V + II.

+ +

Roman numerals are usually written largest to smallest from left to right. However, the numeral for four is not IIII. Instead, the number four is written as IV. Because the one is before the five we subtract it making four. The same principle applies to the number nine, which is written as IX. There are six instances where subtraction is used:

+ +
    +
  • I can be placed before V (5) and X (10) to make 4 and 9. 
  • +
  • X can be placed before L (50) and C (100) to make 40 and 90. 
  • +
  • C can be placed before D (500) and M (1000) to make 400 and 900.
  • +
+ +

Given a roman numeral, convert it to an integer.

+ +

 

+

Example 1:

+ +
+Input: s = "III"
+Output: 3
+Explanation: III = 3.
+
+ +

Example 2:

+ +
+Input: s = "LVIII"
+Output: 58
+Explanation: L = 50, V= 5, III = 3.
+
+ +

Example 3:

+ +
+Input: s = "MCMXCIV"
+Output: 1994
+Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 15
  • +
  • s contains only the characters ('I', 'V', 'X', 'L', 'C', 'D', 'M').
  • +
  • It is guaranteed that s is a valid roman numeral in the range [1, 3999].
  • +
diff --git a/leetcode/leetcode/0014-longest-common-prefix/0014-longest-common-prefix.java b/leetcode/leetcode/0014-longest-common-prefix/0014-longest-common-prefix.java new file mode 100644 index 0000000..a2dd07c --- /dev/null +++ b/leetcode/leetcode/0014-longest-common-prefix/0014-longest-common-prefix.java @@ -0,0 +1,21 @@ +class Solution { + public String longestCommonPrefix(String[] strs) { + StringBuilder sb = new StringBuilder(strs[0]); + // sb = strs[0]; + for(int i = 1;i14. Longest Common Prefix

Easy


Write a function to find the longest common prefix string amongst an array of strings.

+ +

If there is no common prefix, return an empty string "".

+ +

 

+

Example 1:

+ +
Input: strs = ["flower","flow","flight"]
+Output: "fl"
+
+ +

Example 2:

+ +
Input: strs = ["dog","racecar","car"]
+Output: ""
+Explanation: There is no common prefix among the input strings.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= strs.length <= 200
  • +
  • 0 <= strs[i].length <= 200
  • +
  • strs[i] consists of only lowercase English letters.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0015-3sum/0015-3sum.java b/leetcode/leetcode/0015-3sum/0015-3sum.java new file mode 100644 index 0000000..34d0dae --- /dev/null +++ b/leetcode/leetcode/0015-3sum/0015-3sum.java @@ -0,0 +1,32 @@ +class Solution { + public List> threeSum(int[] nums) { + Set> set= new HashSet<>(); + Arrays.sort(nums); + for(int i = 0;i list = new ArrayList<>(); + list.add(nums[i]); + list.add(nums[left]); + list.add(nums[right]); + set.add(list); + left++; + right--; + + }else if(sum<0){ + left++; + }else{ + right--; + } + } + } + List> result = new ArrayList<>(); + for(List list: set){ + result.add(list); + } + return result; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0015-3sum/README.md b/leetcode/leetcode/0015-3sum/README.md new file mode 100644 index 0000000..84e5854 --- /dev/null +++ b/leetcode/leetcode/0015-3sum/README.md @@ -0,0 +1,41 @@ +

15. 3Sum

Medium


Given an integer array nums, return all the triplets [nums[i], nums[j], nums[k]] such that i != j, i != k, and j != k, and nums[i] + nums[j] + nums[k] == 0.

+ +

Notice that the solution set must not contain duplicate triplets.

+ +

 

+

Example 1:

+ +
+Input: nums = [-1,0,1,2,-1,-4]
+Output: [[-1,-1,2],[-1,0,1]]
+Explanation: 
+nums[0] + nums[1] + nums[2] = (-1) + 0 + 1 = 0.
+nums[1] + nums[2] + nums[4] = 0 + 1 + (-1) = 0.
+nums[0] + nums[3] + nums[4] = (-1) + 2 + (-1) = 0.
+The distinct triplets are [-1,0,1] and [-1,-1,2].
+Notice that the order of the output and the order of the triplets does not matter.
+
+ +

Example 2:

+ +
+Input: nums = [0,1,1]
+Output: []
+Explanation: The only possible triplet does not sum up to 0.
+
+ +

Example 3:

+ +
+Input: nums = [0,0,0]
+Output: [[0,0,0]]
+Explanation: The only possible triplet sums up to 0.
+
+ +

 

+

Constraints:

+ +
    +
  • 3 <= nums.length <= 3000
  • +
  • -105 <= nums[i] <= 105
  • +
diff --git a/leetcode/leetcode/0016-3sum-closest/0016-3sum-closest.java b/leetcode/leetcode/0016-3sum-closest/0016-3sum-closest.java new file mode 100644 index 0000000..1350ef2 --- /dev/null +++ b/leetcode/leetcode/0016-3sum-closest/0016-3sum-closest.java @@ -0,0 +1,24 @@ +class Solution { + public int threeSumClosest(int[] nums, int target) { + Arrays.sort(nums); + int ans = Integer.MAX_VALUE; + int sum = Integer.MAX_VALUE; + for(int i = 0;itarget){ + end--; + }else{ + start++; + } + } + } + return ans; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0016-3sum-closest/README.md b/leetcode/leetcode/0016-3sum-closest/README.md new file mode 100644 index 0000000..a6789ba --- /dev/null +++ b/leetcode/leetcode/0016-3sum-closest/README.md @@ -0,0 +1,31 @@ +

16. 3Sum Closest

Medium


Given an integer array nums of length n and an integer target, find three integers in nums such that the sum is closest to target.

+ +

Return the sum of the three integers.

+ +

You may assume that each input would have exactly one solution.

+ +

 

+

Example 1:

+ +
+Input: nums = [-1,2,1,-4], target = 1
+Output: 2
+Explanation: The sum that is closest to the target is 2. (-1 + 2 + 1 = 2).
+
+ +

Example 2:

+ +
+Input: nums = [0,0,0], target = 1
+Output: 0
+Explanation: The sum that is closest to the target is 0. (0 + 0 + 0 = 0).
+
+ +

 

+

Constraints:

+ +
    +
  • 3 <= nums.length <= 500
  • +
  • -1000 <= nums[i] <= 1000
  • +
  • -104 <= target <= 104
  • +
diff --git a/leetcode/leetcode/0020-valid-parentheses/0020-valid-parentheses.java b/leetcode/leetcode/0020-valid-parentheses/0020-valid-parentheses.java new file mode 100644 index 0000000..63bc673 --- /dev/null +++ b/leetcode/leetcode/0020-valid-parentheses/0020-valid-parentheses.java @@ -0,0 +1,22 @@ +class Solution { + public boolean isValid(String s) { + Stack stack = new Stack<>(); + for(int i = 0;i20. Valid Parentheses

Easy


Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

+ +

An input string is valid if:

+ +
    +
  1. Open brackets must be closed by the same type of brackets.
  2. +
  3. Open brackets must be closed in the correct order.
  4. +
  5. Every close bracket has a corresponding open bracket of the same type.
  6. +
+ +

 

+

Example 1:

+ +
+

Input: s = "()"

+ +

Output: true

+
+ +

Example 2:

+ +
+

Input: s = "()[]{}"

+ +

Output: true

+
+ +

Example 3:

+ +
+

Input: s = "(]"

+ +

Output: false

+
+ +

Example 4:

+ +
+

Input: s = "([])"

+ +

Output: true

+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 104
  • +
  • s consists of parentheses only '()[]{}'.
  • +
diff --git a/leetcode/leetcode/0021-merge-two-sorted-lists/0021-merge-two-sorted-lists.java b/leetcode/leetcode/0021-merge-two-sorted-lists/0021-merge-two-sorted-lists.java new file mode 100644 index 0000000..d464062 --- /dev/null +++ b/leetcode/leetcode/0021-merge-two-sorted-lists/0021-merge-two-sorted-lists.java @@ -0,0 +1,37 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public ListNode mergeTwoLists(ListNode list1, ListNode list2) { + if(list1==null) return list2; + if(list2==null) return list1; + ListNode head = list1; + if(head.val>list2.val){ + head = list2; + list2 = list2.next; + }else{ + list1 = list1.next; + } + ListNode temp = head; + while(list1!=null && list2!=null){ + if(list1.val>list2.val){ + temp.next = list2; + list2 = list2.next; + }else{ + temp.next = list1; + list1 = list1.next; + } + temp = temp.next; + } + if(list1==null) temp.next = list2; + else if(list2==null) temp.next = list1; + return head; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0021-merge-two-sorted-lists/README.md b/leetcode/leetcode/0021-merge-two-sorted-lists/README.md new file mode 100644 index 0000000..859aec2 --- /dev/null +++ b/leetcode/leetcode/0021-merge-two-sorted-lists/README.md @@ -0,0 +1,36 @@ +

21. Merge Two Sorted Lists

Easy


You are given the heads of two sorted linked lists list1 and list2.

+ +

Merge the two lists into one sorted list. The list should be made by splicing together the nodes of the first two lists.

+ +

Return the head of the merged linked list.

+ +

 

+

Example 1:

+ +
+Input: list1 = [1,2,4], list2 = [1,3,4]
+Output: [1,1,2,3,4,4]
+
+ +

Example 2:

+ +
+Input: list1 = [], list2 = []
+Output: []
+
+ +

Example 3:

+ +
+Input: list1 = [], list2 = [0]
+Output: [0]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in both lists is in the range [0, 50].
  • +
  • -100 <= Node.val <= 100
  • +
  • Both list1 and list2 are sorted in non-decreasing order.
  • +
diff --git a/leetcode/leetcode/0023-merge-k-sorted-lists/0023-merge-k-sorted-lists.java b/leetcode/leetcode/0023-merge-k-sorted-lists/0023-merge-k-sorted-lists.java new file mode 100644 index 0000000..8a6c733 --- /dev/null +++ b/leetcode/leetcode/0023-merge-k-sorted-lists/0023-merge-k-sorted-lists.java @@ -0,0 +1,45 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public class Pair implements Comparable{ + ListNode head; + + Pair(ListNode head){ + this.head = head; + } + @Override + public int compareTo(Pair p){ + return this.head.val - p.head.val; + } + } + public ListNode mergeKLists(ListNode[] lists) { + if(lists.length == 0) return null; + PriorityQueue pq = new PriorityQueue<>(); + + for(int i = 0;i23. Merge k Sorted Lists

Hard


You are given an array of k linked-lists lists, each linked-list is sorted in ascending order.

+ +

Merge all the linked-lists into one sorted linked-list and return it.

+ +

 

+

Example 1:

+ +
+Input: lists = [[1,4,5],[1,3,4],[2,6]]
+Output: [1,1,2,3,4,4,5,6]
+Explanation: The linked-lists are:
+[
+  1->4->5,
+  1->3->4,
+  2->6
+]
+merging them into one sorted list:
+1->1->2->3->4->4->5->6
+
+ +

Example 2:

+ +
+Input: lists = []
+Output: []
+
+ +

Example 3:

+ +
+Input: lists = [[]]
+Output: []
+
+ +

 

+

Constraints:

+ +
    +
  • k == lists.length
  • +
  • 0 <= k <= 104
  • +
  • 0 <= lists[i].length <= 500
  • +
  • -104 <= lists[i][j] <= 104
  • +
  • lists[i] is sorted in ascending order.
  • +
  • The sum of lists[i].length will not exceed 104.
  • +
diff --git a/leetcode/leetcode/0024-swap-nodes-in-pairs/0024-swap-nodes-in-pairs.java b/leetcode/leetcode/0024-swap-nodes-in-pairs/0024-swap-nodes-in-pairs.java new file mode 100644 index 0000000..87f6bfb --- /dev/null +++ b/leetcode/leetcode/0024-swap-nodes-in-pairs/0024-swap-nodes-in-pairs.java @@ -0,0 +1,20 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public ListNode swapPairs(ListNode head) { + if(head == null || head.next == null) return head; + int val = head.val; + head.val = head.next.val; + head.next.val = val; + head.next.next = swapPairs(head.next.next); + return head; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0024-swap-nodes-in-pairs/NOTES.md b/leetcode/leetcode/0024-swap-nodes-in-pairs/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0024-swap-nodes-in-pairs/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0024-swap-nodes-in-pairs/README.md b/leetcode/leetcode/0024-swap-nodes-in-pairs/README.md new file mode 100644 index 0000000..f410f5b --- /dev/null +++ b/leetcode/leetcode/0024-swap-nodes-in-pairs/README.md @@ -0,0 +1,29 @@ +

24. Swap Nodes in Pairs

Medium


Given a linked list, swap every two adjacent nodes and return its head. You must solve the problem without modifying the values in the list's nodes (i.e., only nodes themselves may be changed.)

+ +

 

+

Example 1:

+ +
Input: head = [1,2,3,4]
+Output: [2,1,4,3]
+
+ +

Example 2:

+ +
Input: head = []
+Output: []
+
+ +

Example 3:

+ +
Input: head = [1]
+Output: [1]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is in the range [0, 100].
  • +
  • 0 <= Node.val <= 100
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0025-reverse-nodes-in-k-group/0025-reverse-nodes-in-k-group.java b/leetcode/leetcode/0025-reverse-nodes-in-k-group/0025-reverse-nodes-in-k-group.java new file mode 100644 index 0000000..53b5f5f --- /dev/null +++ b/leetcode/leetcode/0025-reverse-nodes-in-k-group/0025-reverse-nodes-in-k-group.java @@ -0,0 +1,46 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public ListNode reverse(ListNode head){ + ListNode prev = null; + ListNode curr = head; + ListNode next = head.next; + while(next!=null){ + curr.next = prev; + prev = curr; + curr = next; + next = next.next; + } + curr.next = prev; + return curr; + } + public ListNode reverseKGroup(ListNode head, int k) { + if(k == 1) return head; + if(head == null || head.next == null) return head; + int count = 1; + ListNode temp = head; + while(temp.next!=null ){ + temp = temp.next; + count++; + if(count == k) break; + } + if(count25. Reverse Nodes in k-Group

Hard


Given the head of a linked list, reverse the nodes of the list k at a time, and return the modified list.

+ +

k is a positive integer and is less than or equal to the length of the linked list. If the number of nodes is not a multiple of k then left-out nodes, in the end, should remain as it is.

+ +

You may not alter the values in the list's nodes, only nodes themselves may be changed.

+ +

 

+

Example 1:

+ +
+Input: head = [1,2,3,4,5], k = 2
+Output: [2,1,4,3,5]
+
+ +

Example 2:

+ +
+Input: head = [1,2,3,4,5], k = 3
+Output: [3,2,1,4,5]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is n.
  • +
  • 1 <= k <= n <= 5000
  • +
  • 0 <= Node.val <= 1000
  • +
+ +

 

+

Follow-up: Can you solve the problem in O(1) extra memory space?

diff --git a/leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/0028-find-the-index-of-the-first-occurrence-in-a-string.java b/leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/0028-find-the-index-of-the-first-occurrence-in-a-string.java new file mode 100644 index 0000000..5f3b358 --- /dev/null +++ b/leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/0028-find-the-index-of-the-first-occurrence-in-a-string.java @@ -0,0 +1,15 @@ +class Solution { + public int strStr(String haystack, String needle) { + if(needle.length()>haystack.length()) return -1; + if(needle.length()==haystack.length()) return needle.equals(haystack) ? 0 : -1; + int curr = 0; + int size = needle.length(); + int terminalIndex = curr+size; + while(terminalIndex!=haystack.length()+1){ + if(haystack.substring(curr,terminalIndex).equals(needle)) return curr; + curr++; + terminalIndex++; + } + return -1; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/NOTES.md b/leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/README.md b/leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/README.md new file mode 100644 index 0000000..f1a24ee --- /dev/null +++ b/leetcode/leetcode/0028-find-the-index-of-the-first-occurrence-in-a-string/README.md @@ -0,0 +1,26 @@ +

28. Find the Index of the First Occurrence in a String

Easy


Given two strings needle and haystack, return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack.

+ +

 

+

Example 1:

+ +
Input: haystack = "sadbutsad", needle = "sad"
+Output: 0
+Explanation: "sad" occurs at index 0 and 6.
+The first occurrence is at index 0, so we return 0.
+
+ +

Example 2:

+ +
Input: haystack = "leetcode", needle = "leeto"
+Output: -1
+Explanation: "leeto" did not occur in "leetcode", so we return -1.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= haystack.length, needle.length <= 104
  • +
  • haystack and needle consist of only lowercase English characters.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0029-divide-two-integers/0029-divide-two-integers.java b/leetcode/leetcode/0029-divide-two-integers/0029-divide-two-integers.java new file mode 100644 index 0000000..2942344 --- /dev/null +++ b/leetcode/leetcode/0029-divide-two-integers/0029-divide-two-integers.java @@ -0,0 +1,33 @@ +class Solution { + public int divide(long dividend, long divisor) { + long sign = 1; + if(dividend<0){ + dividend = -dividend; + sign = -1*sign; + } + if(divisor<0){ + divisor = -divisor; + sign = -1*sign; + } + if(dividendInteger.MAX_VALUE) return Integer.MAX_VALUE; + if(temp29. Divide Two Integers

Medium


Given two integers dividend and divisor, divide two integers without using multiplication, division, and mod operator.

+ +

The integer division should truncate toward zero, which means losing its fractional part. For example, 8.345 would be truncated to 8, and -2.7335 would be truncated to -2.

+ +

Return the quotient after dividing dividend by divisor.

+ +

Note: Assume we are dealing with an environment that could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For this problem, if the quotient is strictly greater than 231 - 1, then return 231 - 1, and if the quotient is strictly less than -231, then return -231.

+ +

 

+

Example 1:

+ +
+Input: dividend = 10, divisor = 3
+Output: 3
+Explanation: 10/3 = 3.33333.. which is truncated to 3.
+
+ +

Example 2:

+ +
+Input: dividend = 7, divisor = -3
+Output: -2
+Explanation: 7/-3 = -2.33333.. which is truncated to -2.
+
+ +

 

+

Constraints:

+ +
    +
  • -231 <= dividend, divisor <= 231 - 1
  • +
  • divisor != 0
  • +
diff --git a/leetcode/leetcode/0032-longest-valid-parentheses/0032-longest-valid-parentheses.java b/leetcode/leetcode/0032-longest-valid-parentheses/0032-longest-valid-parentheses.java new file mode 100644 index 0000000..591acdc --- /dev/null +++ b/leetcode/leetcode/0032-longest-valid-parentheses/0032-longest-valid-parentheses.java @@ -0,0 +1,17 @@ +class Solution { + public int longestValidParentheses(String S) { + Stack s = new Stack<>(); + s.push(-1); + int maxLen = 0; + for(int i = 0;i32. Longest Valid Parentheses

Hard


Given a string containing just the characters '(' and ')', return the length of the longest valid (well-formed) parentheses substring.

+ +

 

+

Example 1:

+ +
Input: s = "(()"
+Output: 2
+Explanation: The longest valid parentheses substring is "()".
+
+ +

Example 2:

+ +
Input: s = ")()())"
+Output: 4
+Explanation: The longest valid parentheses substring is "()()".
+
+ +

Example 3:

+ +
Input: s = ""
+Output: 0
+
+ +

 

+

Constraints:

+ +
    +
  • 0 <= s.length <= 3 * 104
  • +
  • s[i] is '(', or ')'.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0033-search-in-rotated-sorted-array/0033-search-in-rotated-sorted-array.java b/leetcode/leetcode/0033-search-in-rotated-sorted-array/0033-search-in-rotated-sorted-array.java new file mode 100644 index 0000000..d7acb24 --- /dev/null +++ b/leetcode/leetcode/0033-search-in-rotated-sorted-array/0033-search-in-rotated-sorted-array.java @@ -0,0 +1,27 @@ +class Solution { + + public int search(int[] arr, int target) { + int low = 0; + int high = arr.length -1; + int N = arr.length; + while(low<=high){ + int mid = low + (high-low)/2; + if(arr[mid]==target){ + return mid; + }else if(arr[mid]33. Search in Rotated Sorted Array

Medium


There is an integer array nums sorted in ascending order (with distinct values).

+ +

Prior to being passed to your function, nums is possibly rotated at an unknown pivot index k (1 <= k < nums.length) such that the resulting array is [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]] (0-indexed). For example, [0,1,2,4,5,6,7] might be rotated at pivot index 3 and become [4,5,6,7,0,1,2].

+ +

Given the array nums after the possible rotation and an integer target, return the index of target if it is in nums, or -1 if it is not in nums.

+ +

You must write an algorithm with O(log n) runtime complexity.

+ +

 

+

Example 1:

+
Input: nums = [4,5,6,7,0,1,2], target = 0
+Output: 4
+

Example 2:

+
Input: nums = [4,5,6,7,0,1,2], target = 3
+Output: -1
+

Example 3:

+
Input: nums = [1], target = 0
+Output: -1
+
+

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 5000
  • +
  • -104 <= nums[i] <= 104
  • +
  • All values of nums are unique.
  • +
  • nums is an ascending array that is possibly rotated.
  • +
  • -104 <= target <= 104
  • +
diff --git a/leetcode/leetcode/0034-find-first-and-last-position-of-element-in-sorted-array/0034-find-first-and-last-position-of-element-in-sorted-array.java b/leetcode/leetcode/0034-find-first-and-last-position-of-element-in-sorted-array/0034-find-first-and-last-position-of-element-in-sorted-array.java new file mode 100644 index 0000000..dfff5f1 --- /dev/null +++ b/leetcode/leetcode/0034-find-first-and-last-position-of-element-in-sorted-array/0034-find-first-and-last-position-of-element-in-sorted-array.java @@ -0,0 +1,38 @@ +class Solution { + public int[] searchRange(int[] arr, int target) { + int[] result = {-1,-1}; + int low = 0; + int high = arr.length - 1; + boolean found = false; + while(low<=high){ + int mid = (low+high)/2; + if(arr[mid] == target){ + result[0] = mid; + found = true; + high = mid -1; + }else if(arr[mid]>target){ + high = mid -1; + }else { + low = mid+1; + } + } + if(!found) return result; + + low = 0; + high = arr.length - 1; + + while(low<=high){ + int mid = (low+high)/2; + if(arr[mid] == target){ + result[1] = mid; + low = mid + 1; + }else if(arr[mid]>target){ + high = mid -1; + }else{ + low = mid+1; + } + } + return result; + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0034-find-first-and-last-position-of-element-in-sorted-array/README.md b/leetcode/leetcode/0034-find-first-and-last-position-of-element-in-sorted-array/README.md new file mode 100644 index 0000000..567e3ee --- /dev/null +++ b/leetcode/leetcode/0034-find-first-and-last-position-of-element-in-sorted-array/README.md @@ -0,0 +1,26 @@ +

34. Find First and Last Position of Element in Sorted Array

Medium


Given an array of integers nums sorted in non-decreasing order, find the starting and ending position of a given target value.

+ +

If target is not found in the array, return [-1, -1].

+ +

You must write an algorithm with O(log n) runtime complexity.

+ +

 

+

Example 1:

+
Input: nums = [5,7,7,8,8,10], target = 8
+Output: [3,4]
+

Example 2:

+
Input: nums = [5,7,7,8,8,10], target = 6
+Output: [-1,-1]
+

Example 3:

+
Input: nums = [], target = 0
+Output: [-1,-1]
+
+

 

+

Constraints:

+ +
    +
  • 0 <= nums.length <= 105
  • +
  • -109 <= nums[i] <= 109
  • +
  • nums is a non-decreasing array.
  • +
  • -109 <= target <= 109
  • +
diff --git a/leetcode/leetcode/0038-count-and-say/0038-count-and-say.java b/leetcode/leetcode/0038-count-and-say/0038-count-and-say.java new file mode 100644 index 0000000..fc96327 --- /dev/null +++ b/leetcode/leetcode/0038-count-and-say/0038-count-and-say.java @@ -0,0 +1,20 @@ +class Solution { + public String countAndSay(int n) { + if(n == 1) return "1"; + String lastNum = countAndSay(n-1); + int index = 0; + StringBuilder sb = new StringBuilder(); + while(index38. Count and Say

Medium


The count-and-say sequence is a sequence of digit strings defined by the recursive formula:

+ +
    +
  • countAndSay(1) = "1"
  • +
  • countAndSay(n) is the run-length encoding of countAndSay(n - 1).
  • +
+ +

Run-length encoding (RLE) is a string compression method that works by replacing consecutive identical characters (repeated 2 or more times) with the concatenation of the character and the number marking the count of the characters (length of the run). For example, to compress the string "3322251" we replace "33" with "23", replace "222" with "32", replace "5" with "15" and replace "1" with "11". Thus the compressed string becomes "23321511".

+ +

Given a positive integer n, return the nth element of the count-and-say sequence.

+ +

 

+

Example 1:

+ +
+

Input: n = 4

+ +

Output: "1211"

+ +

Explanation:

+ +
+countAndSay(1) = "1"
+countAndSay(2) = RLE of "1" = "11"
+countAndSay(3) = RLE of "11" = "21"
+countAndSay(4) = RLE of "21" = "1211"
+
+
+ +

Example 2:

+ +
+

Input: n = 1

+ +

Output: "1"

+ +

Explanation:

+ +

This is the base case.

+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= n <= 30
  • +
+ +

 

+Follow up: Could you solve it iteratively? \ No newline at end of file diff --git a/leetcode/leetcode/0039-combination-sum/0039-combination-sum.java b/leetcode/leetcode/0039-combination-sum/0039-combination-sum.java new file mode 100644 index 0000000..3bc4244 --- /dev/null +++ b/leetcode/leetcode/0039-combination-sum/0039-combination-sum.java @@ -0,0 +1,29 @@ +class Solution { + public List> helper(int[] candidates, int startIndex,int target){ + List> result = new ArrayList<>(); + if(startIndex == candidates.length) return result; + if(target<0) return result; + if(target == candidates[startIndex]){ + List temp = new ArrayList<>(); + temp.add(candidates[startIndex]); + result.add(temp); + return result; + } + result = helper(candidates,startIndex,target-candidates[startIndex]); + if(result.size()!=0){ + for(int i = 0;i> combinationSum(int[] candidates, int target) { + Arrays.sort(candidates); + List> ans = helper(candidates,0,target); + return ans; + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0039-combination-sum/0039-combination-sum.py b/leetcode/leetcode/0039-combination-sum/0039-combination-sum.py new file mode 100644 index 0000000..7d6bf25 --- /dev/null +++ b/leetcode/leetcode/0039-combination-sum/0039-combination-sum.py @@ -0,0 +1,19 @@ +class Solution: + def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]: + + res = [] + + def helper(temp, current_sum, current_index): + if(current_index>= len(candidates) or current_sum>target): + return + if(current_sum == target): + res.append(temp[:]) + return + + temp.append(candidates[current_index]) + helper(temp,current_sum+candidates[current_index],current_index) + temp.pop() + helper(temp,current_sum,current_index+1) + return + helper([],0,0) + return res \ No newline at end of file diff --git a/leetcode/leetcode/0039-combination-sum/README.md b/leetcode/leetcode/0039-combination-sum/README.md new file mode 100644 index 0000000..241b5ce --- /dev/null +++ b/leetcode/leetcode/0039-combination-sum/README.md @@ -0,0 +1,41 @@ +

39. Combination Sum

Medium


Given an array of distinct integers candidates and a target integer target, return a list of all unique combinations of candidates where the chosen numbers sum to target. You may return the combinations in any order.

+ +

The same number may be chosen from candidates an unlimited number of times. Two combinations are unique if the frequency of at least one of the chosen numbers is different.

+ +

The test cases are generated such that the number of unique combinations that sum up to target is less than 150 combinations for the given input.

+ +

 

+

Example 1:

+ +
+Input: candidates = [2,3,6,7], target = 7
+Output: [[2,2,3],[7]]
+Explanation:
+2 and 3 are candidates, and 2 + 2 + 3 = 7. Note that 2 can be used multiple times.
+7 is a candidate, and 7 = 7.
+These are the only two combinations.
+
+ +

Example 2:

+ +
+Input: candidates = [2,3,5], target = 8
+Output: [[2,2,2,2],[2,3,3],[3,5]]
+
+ +

Example 3:

+ +
+Input: candidates = [2], target = 1
+Output: []
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= candidates.length <= 30
  • +
  • 2 <= candidates[i] <= 40
  • +
  • All elements of candidates are distinct.
  • +
  • 1 <= target <= 40
  • +
diff --git a/leetcode/leetcode/0040-combination-sum-ii/0040-combination-sum-ii.py b/leetcode/leetcode/0040-combination-sum-ii/0040-combination-sum-ii.py new file mode 100644 index 0000000..66ba90e --- /dev/null +++ b/leetcode/leetcode/0040-combination-sum-ii/0040-combination-sum-ii.py @@ -0,0 +1,20 @@ +class Solution: + def combinationSum2(self, arr: List[int], target: int) -> List[List[int]]: + arr.sort() + res = [] + def dfs(index, curr, total): + if(total == target): + res.append(curr.copy()) + return + if(index==len(arr) or total>target): + return + + curr.append(arr[index]) + dfs(index+1,curr,total+arr[index]) + curr.pop() + while(index+140. Combination Sum II

Medium


Given a collection of candidate numbers (candidates) and a target number (target), find all unique combinations in candidates where the candidate numbers sum to target.

+ +

Each number in candidates may only be used once in the combination.

+ +

Note: The solution set must not contain duplicate combinations.

+ +

 

+

Example 1:

+ +
+Input: candidates = [10,1,2,7,6,1,5], target = 8
+Output: 
+[
+[1,1,6],
+[1,2,5],
+[1,7],
+[2,6]
+]
+
+ +

Example 2:

+ +
+Input: candidates = [2,5,2,1,2], target = 5
+Output: 
+[
+[1,2,2],
+[5]
+]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= candidates.length <= 100
  • +
  • 1 <= candidates[i] <= 50
  • +
  • 1 <= target <= 30
  • +
diff --git a/leetcode/leetcode/0045-jump-game-ii/0045-jump-game-ii.java b/leetcode/leetcode/0045-jump-game-ii/0045-jump-game-ii.java new file mode 100644 index 0000000..03f1908 --- /dev/null +++ b/leetcode/leetcode/0045-jump-game-ii/0045-jump-game-ii.java @@ -0,0 +1,18 @@ +class Solution { + public int jump(int[] arr) { + if(arr.length == 1) return 0; + int totalJump = 0; + int index = 0; + while(index<=arr.length){ + int maxRange = index + arr[index]; + totalJump++; + if(maxRange>=arr.length-1) return totalJump; + int maxJumpIndex = index+1; + for(int i = index+1;i<=maxRange;i++){ + if(i+arr[i]>=maxJumpIndex + arr[maxJumpIndex]) maxJumpIndex = i; + } + index = maxJumpIndex; + } + return totalJump; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0045-jump-game-ii/README.md b/leetcode/leetcode/0045-jump-game-ii/README.md new file mode 100644 index 0000000..553a8bb --- /dev/null +++ b/leetcode/leetcode/0045-jump-game-ii/README.md @@ -0,0 +1,35 @@ +

45. Jump Game II

Medium


You are given a 0-indexed array of integers nums of length n. You are initially positioned at nums[0].

+ +

Each element nums[i] represents the maximum length of a forward jump from index i. In other words, if you are at nums[i], you can jump to any nums[i + j] where:

+ +
    +
  • 0 <= j <= nums[i] and
  • +
  • i + j < n
  • +
+ +

Return the minimum number of jumps to reach nums[n - 1]. The test cases are generated such that you can reach nums[n - 1].

+ +

 

+

Example 1:

+ +
+Input: nums = [2,3,1,1,4]
+Output: 2
+Explanation: The minimum number of jumps to reach the last index is 2. Jump 1 step from index 0 to 1, then 3 steps to the last index.
+
+ +

Example 2:

+ +
+Input: nums = [2,3,0,1,4]
+Output: 2
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 104
  • +
  • 0 <= nums[i] <= 1000
  • +
  • It's guaranteed that you can reach nums[n - 1].
  • +
diff --git a/leetcode/leetcode/0046-permutations/0046-permutations.java b/leetcode/leetcode/0046-permutations/0046-permutations.java new file mode 100644 index 0000000..9b640fd --- /dev/null +++ b/leetcode/leetcode/0046-permutations/0046-permutations.java @@ -0,0 +1,29 @@ +class Solution { + List> res = new ArrayList<>(); + public void helper(int[] nums, int index){ + if(index == nums.length-1){ + List list = new ArrayList<>(); + list.add(nums[index]); + res.add(list); + return; + } + helper(nums, index+1); + + List> temp_res = new ArrayList<>(); + for(int i = 0;i arr = res.get(i); + for(int j = 0;j<=arr.size();j++){ + arr.add(j,nums[index]); + List temp = new ArrayList<>(arr); + temp_res.add(temp); + arr.remove(j); + } + } + res = temp_res; + return; + } + public List> permute(int[] nums) { + helper(nums,0); + return res; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0046-permutations/README.md b/leetcode/leetcode/0046-permutations/README.md new file mode 100644 index 0000000..2b8ea29 --- /dev/null +++ b/leetcode/leetcode/0046-permutations/README.md @@ -0,0 +1,21 @@ +

46. Permutations

Medium


Given an array nums of distinct integers, return all the possible permutations. You can return the answer in any order.

+ +

 

+

Example 1:

+
Input: nums = [1,2,3]
+Output: [[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]
+

Example 2:

+
Input: nums = [0,1]
+Output: [[0,1],[1,0]]
+

Example 3:

+
Input: nums = [1]
+Output: [[1]]
+
+

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 6
  • +
  • -10 <= nums[i] <= 10
  • +
  • All the integers of nums are unique.
  • +
diff --git a/leetcode/leetcode/0048-rotate-image/0048-rotate-image.java b/leetcode/leetcode/0048-rotate-image/0048-rotate-image.java new file mode 100644 index 0000000..f3c698c --- /dev/null +++ b/leetcode/leetcode/0048-rotate-image/0048-rotate-image.java @@ -0,0 +1,34 @@ +class Solution { + public void swap(int[][] matrix, int row, int col){ + int temp = matrix[row][col]; + matrix[row][col] = matrix[col][row]; + matrix[col][row] = temp; + } + public void rotateRow(int[][] matrix, int row){ + int col = 0; + int lastCol = matrix[0].length-1; + while(col48. Rotate Image

Medium


You are given an n x n 2D matrix representing an image, rotate the image by 90 degrees (clockwise).

+ +

You have to rotate the image in-place, which means you have to modify the input 2D matrix directly. DO NOT allocate another 2D matrix and do the rotation.

+ +

 

+

Example 1:

+ +
+Input: matrix = [[1,2,3],[4,5,6],[7,8,9]]
+Output: [[7,4,1],[8,5,2],[9,6,3]]
+
+ +

Example 2:

+ +
+Input: matrix = [[5,1,9,11],[2,4,8,10],[13,3,6,7],[15,14,12,16]]
+Output: [[15,13,2,5],[14,3,4,1],[12,6,8,9],[16,7,10,11]]
+
+ +

 

+

Constraints:

+ +
    +
  • n == matrix.length == matrix[i].length
  • +
  • 1 <= n <= 20
  • +
  • -1000 <= matrix[i][j] <= 1000
  • +
diff --git a/leetcode/leetcode/0049-group-anagrams/0049-group-anagrams.java b/leetcode/leetcode/0049-group-anagrams/0049-group-anagrams.java new file mode 100644 index 0000000..42b57e0 --- /dev/null +++ b/leetcode/leetcode/0049-group-anagrams/0049-group-anagrams.java @@ -0,0 +1,23 @@ +class Solution { + public List> groupAnagrams(String[] strs) { + // Optimized; + HashMap> map = new HashMap<>(); + for(int i = 0;i list = new ArrayList<>(); + map.put(sortedString,list); + } + map.get(sortedString).add(strs[i]); + } + + List> result = new ArrayList<>(); + for(List list: map.values()){ + result.add(list); + } + return result; + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0049-group-anagrams/README.md b/leetcode/leetcode/0049-group-anagrams/README.md new file mode 100644 index 0000000..9d4e57a --- /dev/null +++ b/leetcode/leetcode/0049-group-anagrams/README.md @@ -0,0 +1,43 @@ +

49. Group Anagrams

Medium


Given an array of strings strs, group the anagrams together. You can return the answer in any order.

+ +

 

+

Example 1:

+ +
+

Input: strs = ["eat","tea","tan","ate","nat","bat"]

+ +

Output: [["bat"],["nat","tan"],["ate","eat","tea"]]

+ +

Explanation:

+ +
    +
  • There is no string in strs that can be rearranged to form "bat".
  • +
  • The strings "nat" and "tan" are anagrams as they can be rearranged to form each other.
  • +
  • The strings "ate", "eat", and "tea" are anagrams as they can be rearranged to form each other.
  • +
+
+ +

Example 2:

+ +
+

Input: strs = [""]

+ +

Output: [[""]]

+
+ +

Example 3:

+ +
+

Input: strs = ["a"]

+ +

Output: [["a"]]

+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= strs.length <= 104
  • +
  • 0 <= strs[i].length <= 100
  • +
  • strs[i] consists of lowercase English letters.
  • +
diff --git a/leetcode/leetcode/0050-powx-n/0050-powx-n.java b/leetcode/leetcode/0050-powx-n/0050-powx-n.java new file mode 100644 index 0000000..c9880d0 --- /dev/null +++ b/leetcode/leetcode/0050-powx-n/0050-powx-n.java @@ -0,0 +1,16 @@ +class Solution { + public double myPow(double x, long n) { + if(n<0) { + n = -1*n; + x = 1/x; + } + double ans = 1; + while(n!=0){ + int bit =(int) (n & 1); + if(bit==1) ans = ans*x; + x = x*x; + n = n >> 1; + } + return ans; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0050-powx-n/NOTES.md b/leetcode/leetcode/0050-powx-n/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0050-powx-n/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0050-powx-n/README.md b/leetcode/leetcode/0050-powx-n/README.md new file mode 100644 index 0000000..0e37c79 --- /dev/null +++ b/leetcode/leetcode/0050-powx-n/README.md @@ -0,0 +1,35 @@ +

50. Pow(x, n)

Medium


Implement pow(x, n), which calculates x raised to the power n (i.e., xn).

+ +

 

+

Example 1:

+ +
+Input: x = 2.00000, n = 10
+Output: 1024.00000
+
+ +

Example 2:

+ +
+Input: x = 2.10000, n = 3
+Output: 9.26100
+
+ +

Example 3:

+ +
+Input: x = 2.00000, n = -2
+Output: 0.25000
+Explanation: 2-2 = 1/22 = 1/4 = 0.25
+
+ +

 

+

Constraints:

+ +
    +
  • -100.0 < x < 100.0
  • +
  • -231 <= n <= 231-1
  • +
  • n is an integer.
  • +
  • Either x is not zero or n > 0.
  • +
  • -104 <= xn <= 104
  • +
diff --git a/leetcode/leetcode/0053-maximum-subarray/0053-maximum-subarray.java b/leetcode/leetcode/0053-maximum-subarray/0053-maximum-subarray.java new file mode 100644 index 0000000..6339ed2 --- /dev/null +++ b/leetcode/leetcode/0053-maximum-subarray/0053-maximum-subarray.java @@ -0,0 +1,13 @@ +class Solution { + public int maxSubArray(int[] nums) { + int maxSum = Integer.MIN_VALUE; + int currSum = 0; + for(int num: nums){ + currSum+=num; + maxSum = Math.max(maxSum,currSum); + if(currSum<0) currSum = 0; + } + return maxSum; + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0053-maximum-subarray/README.md b/leetcode/leetcode/0053-maximum-subarray/README.md new file mode 100644 index 0000000..d5a3ebb --- /dev/null +++ b/leetcode/leetcode/0053-maximum-subarray/README.md @@ -0,0 +1,37 @@ +

53. Maximum Subarray

Medium


Given an integer array nums, find the subarray with the largest sum, and return its sum.

+ +

 

+

Example 1:

+ +
+Input: nums = [-2,1,-3,4,-1,2,1,-5,4]
+Output: 6
+Explanation: The subarray [4,-1,2,1] has the largest sum 6.
+
+ +

Example 2:

+ +
+Input: nums = [1]
+Output: 1
+Explanation: The subarray [1] has the largest sum 1.
+
+ +

Example 3:

+ +
+Input: nums = [5,4,-1,7,8]
+Output: 23
+Explanation: The subarray [5,4,-1,7,8] has the largest sum 23.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • -104 <= nums[i] <= 104
  • +
+ +

 

+

Follow up: If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

diff --git a/leetcode/leetcode/0055-jump-game/0055-jump-game.java b/leetcode/leetcode/0055-jump-game/0055-jump-game.java new file mode 100644 index 0000000..eeedd5f --- /dev/null +++ b/leetcode/leetcode/0055-jump-game/0055-jump-game.java @@ -0,0 +1,21 @@ +class Solution { + public boolean canJump(int[] nums) { + if(nums.length==1) return true; + int curr = 0; + int currMax = nums[0]; + int start = 0; + while(start<=currMax && start<=nums.length-1){ + int nextMax = start+nums[start]; + while(start<=currMax && start<=nums.length-1){ + nextMax = Math.max(nextMax,start+nums[start]); + start++; + } + if(nextMax >= nums.length-1) return true; + if(currMax == nextMax) return false; + currMax = nextMax; + + } + return currMax>=nums.length-1; + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0055-jump-game/README.md b/leetcode/leetcode/0055-jump-game/README.md new file mode 100644 index 0000000..900dfed --- /dev/null +++ b/leetcode/leetcode/0055-jump-game/README.md @@ -0,0 +1,28 @@ +

55. Jump Game

Medium


You are given an integer array nums. You are initially positioned at the array's first index, and each element in the array represents your maximum jump length at that position.

+ +

Return true if you can reach the last index, or false otherwise.

+ +

 

+

Example 1:

+ +
+Input: nums = [2,3,1,1,4]
+Output: true
+Explanation: Jump 1 step from index 0 to 1, then 3 steps to the last index.
+
+ +

Example 2:

+ +
+Input: nums = [3,2,1,0,4]
+Output: false
+Explanation: You will always arrive at index 3 no matter what. Its maximum jump length is 0, which makes it impossible to reach the last index.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 104
  • +
  • 0 <= nums[i] <= 105
  • +
diff --git a/leetcode/leetcode/0056-merge-intervals/0056-merge-intervals.java b/leetcode/leetcode/0056-merge-intervals/0056-merge-intervals.java new file mode 100644 index 0000000..69aeb5e --- /dev/null +++ b/leetcode/leetcode/0056-merge-intervals/0056-merge-intervals.java @@ -0,0 +1,34 @@ +class Solution { + class Pair{ + int start; + int end; + Pair(int start, int end){ + this.start = start; + this.end = end; + } + } + public int[][] merge(int[][] intervals) { + if(intervals.length < 2) return intervals; + Arrays.sort(intervals,(a,b)->Integer.compare(a[0],b[0])); + int index = 0; + List list = new ArrayList<>(); + while(index=intervals[index][0]){ + prev_end = Math.max(prev_end,intervals[index][1]); + index++; + } + + list.add(new Pair(prev_start,prev_end)); + } + int[][] result = new int[list.size()][2]; + for(int i = 0;i56. Merge Intervals

Medium


Given an array of intervals where intervals[i] = [starti, endi], merge all overlapping intervals, and return an array of the non-overlapping intervals that cover all the intervals in the input.

+ +

 

+

Example 1:

+ +
+Input: intervals = [[1,3],[2,6],[8,10],[15,18]]
+Output: [[1,6],[8,10],[15,18]]
+Explanation: Since intervals [1,3] and [2,6] overlap, merge them into [1,6].
+
+ +

Example 2:

+ +
+Input: intervals = [[1,4],[4,5]]
+Output: [[1,5]]
+Explanation: Intervals [1,4] and [4,5] are considered overlapping.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= intervals.length <= 104
  • +
  • intervals[i].length == 2
  • +
  • 0 <= starti <= endi <= 104
  • +
diff --git a/leetcode/leetcode/0057-insert-interval/0057-insert-interval.java b/leetcode/leetcode/0057-insert-interval/0057-insert-interval.java new file mode 100644 index 0000000..1027f34 --- /dev/null +++ b/leetcode/leetcode/0057-insert-interval/0057-insert-interval.java @@ -0,0 +1,71 @@ +class Solution { + // Returns true if the intervals a and b have a common element. + boolean doesIntervalsOverlap(int[] a, int[] b) { + return Math.min(a[1], b[1]) - Math.max(a[0], b[0]) >= 0; + } + + // Return the interval having all the elements of intervals a and b. + int[] mergeIntervals(int[] a, int[] b) { + int[] newInterval = {Math.min(a[0], b[0]), Math.max(a[1], b[1])}; + return newInterval; + } + + int UpperBound(int[][] intervals, int[] newInterval) { + if (intervals.length == 0) { + // If the list is empty, just insert the newInterval at the 0th position. + return 0; + } + + int start = 0, end = intervals.length - 1; + int ans = intervals.length; + while (start <= end) { + int mid = (start + end) / 2; + + // If the start value is greater than the newInterval + // This could be the position, so store it but keep looking on the left side. + if (intervals[mid][0] > newInterval[0]) { + ans = mid; + end = mid - 1; + } else { + // Search on the right side of mid. + start = mid + 1; + } + } + + return ans; + } + + // Insert the interval newInterval, into the list interval keeping the sorting order intact. + int[][] insertInterval(int[][] intervals, int[] newInterval) { + List list = new ArrayList<>(Arrays.asList(intervals)); + int index = UpperBound(intervals, newInterval); + + if (index != intervals.length) { + list.add(index, newInterval); + } else { + list.add(newInterval); + } + + return list.toArray(new int[list.size()][2]); + } + + public int[][] insert(int[][] intervals, int[] newInterval) { + // Insert the interval first before merge processing. + intervals = insertInterval(intervals, newInterval); + + List answer = new ArrayList<>(); + for (int i = 0; i < intervals.length; i++) { + int[] currInterval = {intervals[i][0], intervals[i][1]}; + // Merge until the list gets exhausted or no overlap is found. + while (i < intervals.length && doesIntervalsOverlap(currInterval, intervals[i])) { + currInterval = mergeIntervals(currInterval, intervals[i]); + i++; + } + // Decrement to ensure we don't skip the interval due to outer for-loop incrementing. + i--; + answer.add(currInterval); + } + + return answer.toArray(new int[answer.size()][2]); + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0057-insert-interval/README.md b/leetcode/leetcode/0057-insert-interval/README.md new file mode 100644 index 0000000..3805102 --- /dev/null +++ b/leetcode/leetcode/0057-insert-interval/README.md @@ -0,0 +1,32 @@ +

57. Insert Interval

Medium


You are given an array of non-overlapping intervals intervals where intervals[i] = [starti, endi] represent the start and the end of the ith interval and intervals is sorted in ascending order by starti. You are also given an interval newInterval = [start, end] that represents the start and end of another interval.

+ +

Insert newInterval into intervals such that intervals is still sorted in ascending order by starti and intervals still does not have any overlapping intervals (merge overlapping intervals if necessary).

+ +

Return intervals after the insertion.

+ +

 

+

Example 1:

+ +
Input: intervals = [[1,3],[6,9]], newInterval = [2,5]
+Output: [[1,5],[6,9]]
+
+ +

Example 2:

+ +
Input: intervals = [[1,2],[3,5],[6,7],[8,10],[12,16]], newInterval = [4,8]
+Output: [[1,2],[3,10],[12,16]]
+Explanation: Because the new interval [4,8] overlaps with [3,5],[6,7],[8,10].
+
+ +

 

+

Constraints:

+ +
    +
  • 0 <= intervals.length <= 104
  • +
  • intervals[i].length == 2
  • +
  • 0 <= starti <= endi <= 105
  • +
  • intervals is sorted by starti in ascending order.
  • +
  • newInterval.length == 2
  • +
  • 0 <= start <= end <= 105
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0058-length-of-last-word/0058-length-of-last-word.java b/leetcode/leetcode/0058-length-of-last-word/0058-length-of-last-word.java new file mode 100644 index 0000000..13a7436 --- /dev/null +++ b/leetcode/leetcode/0058-length-of-last-word/0058-length-of-last-word.java @@ -0,0 +1,14 @@ +class Solution { + public int lengthOfLastWord(String s) { + int index = s.length()-1; + int size = 0; + for(int i = s.length()-1;i!=-1;i--){ + if(s.charAt(i)==' '){ + if(size!=0) return size; + continue; + } + size++; + } + return size; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0058-length-of-last-word/NOTES.md b/leetcode/leetcode/0058-length-of-last-word/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0058-length-of-last-word/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0058-length-of-last-word/README.md b/leetcode/leetcode/0058-length-of-last-word/README.md new file mode 100644 index 0000000..f5d2873 --- /dev/null +++ b/leetcode/leetcode/0058-length-of-last-word/README.md @@ -0,0 +1,35 @@ +

58. Length of Last Word

Easy


Given a string s consisting of words and spaces, return the length of the last word in the string.

+ +

A word is a maximal substring consisting of non-space characters only.

+ +

 

+

Example 1:

+ +
Input: s = "Hello World"
+Output: 5
+Explanation: The last word is "World" with length 5.
+
+ +

Example 2:

+ +
Input: s = "   fly me   to   the moon  "
+Output: 4
+Explanation: The last word is "moon" with length 4.
+
+ +

Example 3:

+ +
Input: s = "luffy is still joyboy"
+Output: 6
+Explanation: The last word is "joyboy" with length 6.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 104
  • +
  • s consists of only English letters and spaces ' '.
  • +
  • There will be at least one word in s.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0061-rotate-list/0061-rotate-list.java b/leetcode/leetcode/0061-rotate-list/0061-rotate-list.java new file mode 100644 index 0000000..ef9ad54 --- /dev/null +++ b/leetcode/leetcode/0061-rotate-list/0061-rotate-list.java @@ -0,0 +1,40 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public ListNode rotateRight(ListNode head, int k) { + if(k == 0) return head; + if(head == null|| head.next==null) return head; + int size = 0; + ListNode temp = head; + while(temp!=null){ + size++; + temp = temp.next; + } + temp = head; + k = k%size; + if(k == 0) return head; + k = size - k; + for(int i = 0;i61. Rotate List

Medium


Given the head of a linked list, rotate the list to the right by k places.

+ +

 

+

Example 1:

+ +
+Input: head = [1,2,3,4,5], k = 2
+Output: [4,5,1,2,3]
+
+ +

Example 2:

+ +
+Input: head = [0,1,2], k = 4
+Output: [2,0,1]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is in the range [0, 500].
  • +
  • -100 <= Node.val <= 100
  • +
  • 0 <= k <= 2 * 109
  • +
diff --git a/leetcode/leetcode/0062-unique-paths/0062-unique-paths.java b/leetcode/leetcode/0062-unique-paths/0062-unique-paths.java new file mode 100644 index 0000000..ea02add --- /dev/null +++ b/leetcode/leetcode/0062-unique-paths/0062-unique-paths.java @@ -0,0 +1,77 @@ +// Recursion: TLE +// class Solution { +// public int helper(int m, int n, int i, int j){ +// if(i == m-1 && j == n-1) return 1; +// if(i>= m || j>=n) return 0; +// return helper(m,n,i+1,j) + helper(m,n,i,j+1); +// } +// public int uniquePaths(int m, int n) { +// return helper(m,n,0,0); +// } +// } + +// Method: 2 Memoization +// class Solution { +// public int helper(int m, int n, int i, int j, int[][] dp){ +// if(i>= m || j>=n) return 0; +// if(dp[i][j]!=-1) return dp[i][j]; +// if(i == m-1 && j == n-1) return 1; +// dp[i][j] = helper(m,n,i+1,j,dp) + helper(m,n,i,j+1,dp); +// return dp[i][j]; +// } +// public int uniquePaths(int m, int n) { +// int[][] dp = new int[m][n]; +// for(int i = 0;i=0;i--){ +// for(int j = n-2;j>=0;j--){ +// dp[i][j] = dp[i+1][j] + dp[i][j+1]; +// } +// } +// return dp[0][0]; +// } +// } + + + +class Solution{ + public int helper(int currentRow, int currentCol, int m, int n, int[][] memo){ + + if(currentRow>=m || currentCol>=n) return 0; + if(currentRow == m-1 && currentCol == n-1) return 1; + if(memo[currentRow][currentCol] != -1) return memo[currentRow][currentCol]; + + int ans = helper(currentRow+1,currentCol,m,n,memo) + helper(currentRow, currentCol+1,m,n,memo); + memo[currentRow][currentCol] = ans; + return ans; + + } + public int uniquePaths(int m, int n) { + int[][] memo = new int[m][n]; + for(int i = 0;i62. Unique Paths

Medium


There is a robot on an m x n grid. The robot is initially located at the top-left corner (i.e., grid[0][0]). The robot tries to move to the bottom-right corner (i.e., grid[m - 1][n - 1]). The robot can only move either down or right at any point in time.

+ +

Given the two integers m and n, return the number of possible unique paths that the robot can take to reach the bottom-right corner.

+ +

The test cases are generated so that the answer will be less than or equal to 2 * 109.

+ +

 

+

Example 1:

+ +
+Input: m = 3, n = 7
+Output: 28
+
+ +

Example 2:

+ +
+Input: m = 3, n = 2
+Output: 3
+Explanation: From the top-left corner, there are a total of 3 ways to reach the bottom-right corner:
+1. Right -> Down -> Down
+2. Down -> Down -> Right
+3. Down -> Right -> Down
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= m, n <= 100
  • +
diff --git a/leetcode/leetcode/0063-unique-paths-ii/0063-unique-paths-ii.java b/leetcode/leetcode/0063-unique-paths-ii/0063-unique-paths-ii.java new file mode 100644 index 0000000..f0323e9 --- /dev/null +++ b/leetcode/leetcode/0063-unique-paths-ii/0063-unique-paths-ii.java @@ -0,0 +1,61 @@ +// Method: 1 Recursion (TLE) +// class Solution { +// public int helper(int[][] obstacleGrid, int row, int col){ +// if(row >= obstacleGrid.length || col >= obstacleGrid[0].length) return 0; +// if(row == obstacleGrid.length - 1 && col == obstacleGrid[0].length - 1) return 1; +// if(obstacleGrid[row][col] == 1) return 0; +// return helper(obstacleGrid,row+1,col) + helper(obstacleGrid,row,col+1); +// } +// public int uniquePathsWithObstacles(int[][] obstacleGrid) { +// return helper(obstacleGrid,0,0); +// } +// } + +// Method : 2 Memoization +// class Solution { +// public int helper(int[][] obstacleGrid, int row, int col, int[][] dp){ +// if(row >= obstacleGrid.length || col >= obstacleGrid[0].length) return 0; +// if(row == obstacleGrid.length - 1 && col == obstacleGrid[0].length - 1) return 1; +// if(obstacleGrid[row][col] == 1) return 0; +// if(dp[row][col]!=-1) return dp[row][col]; +// dp[row][col] = helper(obstacleGrid,row+1,col,dp) + helper(obstacleGrid,row,col+1,dp); +// return dp[row][col]; +// } +// public int uniquePathsWithObstacles(int[][] obstacleGrid) { +// if(obstacleGrid[obstacleGrid.length -1][obstacleGrid[0].length -1 ] == 1) return 0; + +// int[][] dp = new int[obstacleGrid.length][obstacleGrid[0].length]; +// for(int i = 0;i= grid.length || col >= grid[0].length) return 0; + if(grid[row][col] == 1) return 0; + if(memo[row][col]!=-1) return memo[row][col]; + if(row == grid.length - 1 && col == grid[0].length -1) return 1; + int ans = helper(grid,memo,row+1,col) + helper(grid,memo,row,col+1); + memo[row][col] = ans; + return ans; + } + public int uniquePathsWithObstacles(int[][] obstacleGrid) { + int row = obstacleGrid.length; + int col = obstacleGrid[0].length; + int[][] memo = new int[row][col]; + for(int i = 0;i63. Unique Paths II

Medium


You are given an m x n integer array grid. There is a robot initially located at the top-left corner (i.e., grid[0][0]). The robot tries to move to the bottom-right corner (i.e., grid[m - 1][n - 1]). The robot can only move either down or right at any point in time.

+ +

An obstacle and space are marked as 1 or 0 respectively in grid. A path that the robot takes cannot include any square that is an obstacle.

+ +

Return the number of possible unique paths that the robot can take to reach the bottom-right corner.

+ +

The testcases are generated so that the answer will be less than or equal to 2 * 109.

+ +

 

+

Example 1:

+ +
+Input: obstacleGrid = [[0,0,0],[0,1,0],[0,0,0]]
+Output: 2
+Explanation: There is one obstacle in the middle of the 3x3 grid above.
+There are two ways to reach the bottom-right corner:
+1. Right -> Right -> Down -> Down
+2. Down -> Down -> Right -> Right
+
+ +

Example 2:

+ +
+Input: obstacleGrid = [[0,1],[0,0]]
+Output: 1
+
+ +

 

+

Constraints:

+ +
    +
  • m == obstacleGrid.length
  • +
  • n == obstacleGrid[i].length
  • +
  • 1 <= m, n <= 100
  • +
  • obstacleGrid[i][j] is 0 or 1.
  • +
diff --git a/leetcode/leetcode/0064-minimum-path-sum/0064-minimum-path-sum.java b/leetcode/leetcode/0064-minimum-path-sum/0064-minimum-path-sum.java new file mode 100644 index 0000000..6971d8c --- /dev/null +++ b/leetcode/leetcode/0064-minimum-path-sum/0064-minimum-path-sum.java @@ -0,0 +1,41 @@ +class Solution { + // Approach 1: Recursion - TLE + // TC : O(2^(mxn)) + // SC : O(1) + // public int helper(int[][] grid, int row, int col){ + // if(row == grid.length -1 && col == grid[0].length -1) return grid[row][col]; + // if(row>=grid.length || col>= grid[0].length) return Integer.MAX_VALUE; + + // int choice1 = helper(grid,row+1,col); + // int choice2 = helper(grid, row, col+1); + + // return Math.min(choice1,choice2) + grid[row][col]; + // } + // public int minPathSum(int[][] grid) { + // return helper(grid,0,0); + // } + + // Approach 2: Memoization + + public int helper(int[][] grid, int[][] memo, int row, int col){ + if(row == grid.length -1 && col == grid[0].length -1) return grid[row][col]; + if(row>=grid.length || col>= grid[0].length) return Integer.MAX_VALUE; + if(memo[row][col]!=-1) return memo[row][col]; + + int choice1 = helper(grid,memo, row+1, col); + int choice2 = helper(grid,memo, row, col+1); + + memo[row][col] = Math.min(choice1,choice2) + grid[row][col]; + return memo[row][col]; + } + + public int minPathSum(int[][] grid) { + int[][] memo = new int[grid.length][grid[0].length]; + for(int i = 0;i64. Minimum Path Sum

Medium


Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right, which minimizes the sum of all numbers along its path.

+ +

Note: You can only move either down or right at any point in time.

+ +

 

+

Example 1:

+ +
+Input: grid = [[1,3,1],[1,5,1],[4,2,1]]
+Output: 7
+Explanation: Because the path 1 → 3 → 1 → 1 → 1 minimizes the sum.
+
+ +

Example 2:

+ +
+Input: grid = [[1,2,3],[4,5,6]]
+Output: 12
+
+ +

 

+

Constraints:

+ +
    +
  • m == grid.length
  • +
  • n == grid[i].length
  • +
  • 1 <= m, n <= 200
  • +
  • 0 <= grid[i][j] <= 200
  • +
diff --git a/leetcode/leetcode/0069-sqrtx/0069-sqrtx.java b/leetcode/leetcode/0069-sqrtx/0069-sqrtx.java new file mode 100644 index 0000000..12aaf14 --- /dev/null +++ b/leetcode/leetcode/0069-sqrtx/0069-sqrtx.java @@ -0,0 +1,18 @@ +class Solution { + public int mySqrt(int x) { + int low = 0; + int high = x; + int mid = low + (high-low)/2; + int ans = mid; + while(low<=high){ + mid = low + (high-low)/2; + if(1l*mid*mid<=x){ + ans = mid; + low = mid+1; + }else{ + high = mid-1; + } + } + return ans; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0069-sqrtx/README.md b/leetcode/leetcode/0069-sqrtx/README.md new file mode 100644 index 0000000..7e5ae55 --- /dev/null +++ b/leetcode/leetcode/0069-sqrtx/README.md @@ -0,0 +1,31 @@ +

69. Sqrt(x)

Easy


Given a non-negative integer x, return the square root of x rounded down to the nearest integer. The returned integer should be non-negative as well.

+ +

You must not use any built-in exponent function or operator.

+ +
    +
  • For example, do not use pow(x, 0.5) in c++ or x ** 0.5 in python.
  • +
+ +

 

+

Example 1:

+ +
+Input: x = 4
+Output: 2
+Explanation: The square root of 4 is 2, so we return 2.
+
+ +

Example 2:

+ +
+Input: x = 8
+Output: 2
+Explanation: The square root of 8 is 2.82842..., and since we round it down to the nearest integer, 2 is returned.
+
+ +

 

+

Constraints:

+ +
    +
  • 0 <= x <= 231 - 1
  • +
diff --git a/leetcode/leetcode/0070-climbing-stairs/0070-climbing-stairs.java b/leetcode/leetcode/0070-climbing-stairs/0070-climbing-stairs.java new file mode 100644 index 0000000..50e9857 --- /dev/null +++ b/leetcode/leetcode/0070-climbing-stairs/0070-climbing-stairs.java @@ -0,0 +1,50 @@ +class Solution { + // Approach: 4 + // + public int climbStairs(int n) { + if(n == 1) return 1; + if(n == 2) return 2; + int prev = 1; + int lastPrev = 2; + int ans = prev+lastPrev; + for(int i = 3;i<=n;i++){ + ans = prev+lastPrev; + prev = lastPrev; + lastPrev = ans; + } + return ans; + } + + // // Approach 3: Dynammic Programming + // public int climbStairs(int n) { + // int[] dp = new int[n+1]; + // dp[1] = 1; + // dp[2] = 2; + // for(int i = 3;i<=n;i++){ + // dp[i] = dp[i-1]+dp[i-2]; + // } + // return dp[n]; + + // } + + + + // Approach 2: Memoization with HashMap + // HashMap map = new HashMap<>(); + // public int climbStairs(int n) { + // if(n == 1) return 1; + // if(n == 2) return 2; + // if(map.containsKey(n)) return map.get(n); + // int nAns = climbStairs(n-1) + climbStairs(n-2); + // map.put(n,nAns); + // return nAns; + // } + + // Approach 1: Recursion (TLE) + // public int climbStairs(int n) { + // if(n == 1) return 1; + // if(n == 2) return 2; + // return climbStairs(n-1) + climbStairs(n-2); + + // } +} \ No newline at end of file diff --git a/leetcode/leetcode/0070-climbing-stairs/README.md b/leetcode/leetcode/0070-climbing-stairs/README.md new file mode 100644 index 0000000..0c59768 --- /dev/null +++ b/leetcode/leetcode/0070-climbing-stairs/README.md @@ -0,0 +1,32 @@ +

70. Climbing Stairs

Easy


You are climbing a staircase. It takes n steps to reach the top.

+ +

Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top?

+ +

 

+

Example 1:

+ +
+Input: n = 2
+Output: 2
+Explanation: There are two ways to climb to the top.
+1. 1 step + 1 step
+2. 2 steps
+
+ +

Example 2:

+ +
+Input: n = 3
+Output: 3
+Explanation: There are three ways to climb to the top.
+1. 1 step + 1 step + 1 step
+2. 1 step + 2 steps
+3. 2 steps + 1 step
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= n <= 45
  • +
diff --git a/leetcode/leetcode/0073-set-matrix-zeroes/0073-set-matrix-zeroes.java b/leetcode/leetcode/0073-set-matrix-zeroes/0073-set-matrix-zeroes.java new file mode 100644 index 0000000..e8102c5 --- /dev/null +++ b/leetcode/leetcode/0073-set-matrix-zeroes/0073-set-matrix-zeroes.java @@ -0,0 +1,68 @@ +class Solution { + public void setZeroes(int[][] matrix) { + int rows = matrix.length; + int cols = matrix[0].length; + + boolean first_row_has_zero = false; + boolean first_col_has_zero = false; + + // check if first row has any zero + for(int c = 0;c73. Set Matrix Zeroes

Medium


Given an m x n integer matrix matrix, if an element is 0, set its entire row and column to 0's.

+ +

You must do it in place.

+ +

 

+

Example 1:

+ +
+Input: matrix = [[1,1,1],[1,0,1],[1,1,1]]
+Output: [[1,0,1],[0,0,0],[1,0,1]]
+
+ +

Example 2:

+ +
+Input: matrix = [[0,1,2,0],[3,4,5,2],[1,3,1,5]]
+Output: [[0,0,0,0],[0,4,5,0],[0,3,1,0]]
+
+ +

 

+

Constraints:

+ +
    +
  • m == matrix.length
  • +
  • n == matrix[0].length
  • +
  • 1 <= m, n <= 200
  • +
  • -231 <= matrix[i][j] <= 231 - 1
  • +
+ +

 

+

Follow up:

+ +
    +
  • A straightforward solution using O(mn) space is probably a bad idea.
  • +
  • A simple improvement uses O(m + n) space, but still not the best solution.
  • +
  • Could you devise a constant space solution?
  • +
diff --git a/leetcode/leetcode/0075-sort-colors/0075-sort-colors.java b/leetcode/leetcode/0075-sort-colors/0075-sort-colors.java new file mode 100644 index 0000000..153dbc2 --- /dev/null +++ b/leetcode/leetcode/0075-sort-colors/0075-sort-colors.java @@ -0,0 +1,24 @@ +class Solution { + public void swap(int [] arr, int i, int j){ + int temp = arr[i]; + arr[i] = arr[j]; + arr[j] = temp; + } + public void sortColors(int[] arr) { + int low = 0; + int mid = 0; + int high = arr.length-1; + while(mid<=high){ + if(arr[mid] == 0){ + swap(arr,low,mid); + mid++; + low++; + }else if(arr[mid] == 1){ + mid++; + }else{ + swap(arr,mid,high); + high--; + } + } + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0075-sort-colors/README.md b/leetcode/leetcode/0075-sort-colors/README.md new file mode 100644 index 0000000..4288266 --- /dev/null +++ b/leetcode/leetcode/0075-sort-colors/README.md @@ -0,0 +1,32 @@ +

75. Sort Colors

Medium


Given an array nums with n objects colored red, white, or blue, sort them in-place so that objects of the same color are adjacent, with the colors in the order red, white, and blue.

+ +

We will use the integers 0, 1, and 2 to represent the color red, white, and blue, respectively.

+ +

You must solve this problem without using the library's sort function.

+ +

 

+

Example 1:

+ +
+Input: nums = [2,0,2,1,1,0]
+Output: [0,0,1,1,2,2]
+
+ +

Example 2:

+ +
+Input: nums = [2,0,1]
+Output: [0,1,2]
+
+ +

 

+

Constraints:

+ +
    +
  • n == nums.length
  • +
  • 1 <= n <= 300
  • +
  • nums[i] is either 0, 1, or 2.
  • +
+ +

 

+

Follow up: Could you come up with a one-pass algorithm using only constant extra space?

diff --git a/leetcode/leetcode/0076-minimum-window-substring/0076-minimum-window-substring.java b/leetcode/leetcode/0076-minimum-window-substring/0076-minimum-window-substring.java new file mode 100644 index 0000000..5b325e2 --- /dev/null +++ b/leetcode/leetcode/0076-minimum-window-substring/0076-minimum-window-substring.java @@ -0,0 +1,37 @@ +class Solution { + public boolean equals(int[] freq, int[] currFreq){ + for(int i = 0;icurrFreq[i]) return false; + } + return true; + } + public String minWindow(String s, String t) { + if(t.length()>s.length()) return ""; + int[] freqT = new int[128]; + for(int i = 0;iend-start){ + currentEnd = end; + currentStart = start; + } + freqCurrentWindow[(int) s.charAt(start)]--; + start++; + }else if(end76. Minimum Window Substring

Hard


Given two strings s and t of lengths m and n respectively, return the minimum window substring of s such that every character in t (including duplicates) is included in the window. If there is no such substring, return the empty string "".

+ +

The testcases will be generated such that the answer is unique.

+ +

 

+

Example 1:

+ +
+Input: s = "ADOBECODEBANC", t = "ABC"
+Output: "BANC"
+Explanation: The minimum window substring "BANC" includes 'A', 'B', and 'C' from string t.
+
+ +

Example 2:

+ +
+Input: s = "a", t = "a"
+Output: "a"
+Explanation: The entire string s is the minimum window.
+
+ +

Example 3:

+ +
+Input: s = "a", t = "aa"
+Output: ""
+Explanation: Both 'a's from t must be included in the window.
+Since the largest window of s only has one 'a', return empty string.
+
+ +

 

+

Constraints:

+ +
    +
  • m == s.length
  • +
  • n == t.length
  • +
  • 1 <= m, n <= 105
  • +
  • s and t consist of uppercase and lowercase English letters.
  • +
+ +

 

+

Follow up: Could you find an algorithm that runs in O(m + n) time?

diff --git a/leetcode/leetcode/0078-subsets/0078-subsets.java b/leetcode/leetcode/0078-subsets/0078-subsets.java new file mode 100644 index 0000000..0153bf6 --- /dev/null +++ b/leetcode/leetcode/0078-subsets/0078-subsets.java @@ -0,0 +1,26 @@ +class Solution { + public List> generateSubSet(int[] nums, int currentIndex){ + List> result = new ArrayList<>(); + System.out.println(currentIndex); + if(currentIndex == 0){ + List list = new ArrayList<>(); + result.add(list); + return result; + } + result = generateSubSet(nums,--currentIndex); + + List> finalResult = new ArrayList<>(result); + + for(int i = 0;i temp = new ArrayList<>(result.get(i)); + // finalResult.add(temp); + temp.add(nums[currentIndex]); + finalResult.add(temp); + } + return finalResult; + + } + public List> subsets(int[] nums) { + return generateSubSet(nums,nums.length); + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0078-subsets/0078-subsets.py b/leetcode/leetcode/0078-subsets/0078-subsets.py new file mode 100644 index 0000000..353d253 --- /dev/null +++ b/leetcode/leetcode/0078-subsets/0078-subsets.py @@ -0,0 +1,16 @@ +class Solution: + def subsets(self, nums: List[int]) -> List[List[int]]: + res = [] + curr_path = [] + + def dfs(index): + if(index==len(nums)): + res.append(curr_path[:]) + return + + curr_path.append(nums[index]) + dfs(index+1) + curr_path.pop() + dfs(index+1) + dfs(0) + return res \ No newline at end of file diff --git a/leetcode/leetcode/0078-subsets/README.md b/leetcode/leetcode/0078-subsets/README.md new file mode 100644 index 0000000..fb4b5a7 --- /dev/null +++ b/leetcode/leetcode/0078-subsets/README.md @@ -0,0 +1,27 @@ +

78. Subsets

Medium


Given an integer array nums of unique elements, return all possible subsets (the power set).

+ +

The solution set must not contain duplicate subsets. Return the solution in any order.

+ +

 

+

Example 1:

+ +
+Input: nums = [1,2,3]
+Output: [[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]
+
+ +

Example 2:

+ +
+Input: nums = [0]
+Output: [[],[0]]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 10
  • +
  • -10 <= nums[i] <= 10
  • +
  • All the numbers of nums are unique.
  • +
diff --git a/leetcode/leetcode/0082-remove-duplicates-from-sorted-list-ii/0082-remove-duplicates-from-sorted-list-ii.cpp b/leetcode/leetcode/0082-remove-duplicates-from-sorted-list-ii/0082-remove-duplicates-from-sorted-list-ii.cpp new file mode 100644 index 0000000..c5253aa --- /dev/null +++ b/leetcode/leetcode/0082-remove-duplicates-from-sorted-list-ii/0082-remove-duplicates-from-sorted-list-ii.cpp @@ -0,0 +1,41 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* deleteDuplicates(ListNode* head) { + + if(!head||!head->next){ + return head; + } + ListNode* first = head, * second = head->next; + + if(first->val==second->val){ + + int curr = first->val; + + ListNode* temp = second; + while(temp&&(temp->val==curr)){ + temp=temp->next; + } + + return deleteDuplicates(temp); + + }else{ + head -> next = deleteDuplicates(head->next); + + } + + return head; + + + + } +}; \ No newline at end of file diff --git a/leetcode/leetcode/0082-remove-duplicates-from-sorted-list-ii/README.md b/leetcode/leetcode/0082-remove-duplicates-from-sorted-list-ii/README.md new file mode 100644 index 0000000..6a04b7a --- /dev/null +++ b/leetcode/leetcode/0082-remove-duplicates-from-sorted-list-ii/README.md @@ -0,0 +1,25 @@ +

82. Remove Duplicates from Sorted List II

Medium


Given the head of a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list. Return the linked list sorted as well.

+ +

 

+

Example 1:

+ +
+Input: head = [1,2,3,3,4,4,5]
+Output: [1,2,5]
+
+ +

Example 2:

+ +
+Input: head = [1,1,1,2,3]
+Output: [2,3]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is in the range [0, 300].
  • +
  • -100 <= Node.val <= 100
  • +
  • The list is guaranteed to be sorted in ascending order.
  • +
diff --git a/leetcode/leetcode/0083-remove-duplicates-from-sorted-list/0083-remove-duplicates-from-sorted-list.java b/leetcode/leetcode/0083-remove-duplicates-from-sorted-list/0083-remove-duplicates-from-sorted-list.java new file mode 100644 index 0000000..400d086 --- /dev/null +++ b/leetcode/leetcode/0083-remove-duplicates-from-sorted-list/0083-remove-duplicates-from-sorted-list.java @@ -0,0 +1,26 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public ListNode deleteDuplicates(ListNode head) { + if(head == null || head.next == null){ + return head; + } + ListNode current = head; + while(current.next != null){ + if(current.val == current.next.val){ + current.next = current.next.next; + }else{ + current = current.next; + } + } + return head; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0083-remove-duplicates-from-sorted-list/README.md b/leetcode/leetcode/0083-remove-duplicates-from-sorted-list/README.md new file mode 100644 index 0000000..9e0949f --- /dev/null +++ b/leetcode/leetcode/0083-remove-duplicates-from-sorted-list/README.md @@ -0,0 +1,25 @@ +

83. Remove Duplicates from Sorted List

Easy


Given the head of a sorted linked list, delete all duplicates such that each element appears only once. Return the linked list sorted as well.

+ +

 

+

Example 1:

+ +
+Input: head = [1,1,2]
+Output: [1,2]
+
+ +

Example 2:

+ +
+Input: head = [1,1,2,3,3]
+Output: [1,2,3]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is in the range [0, 300].
  • +
  • -100 <= Node.val <= 100
  • +
  • The list is guaranteed to be sorted in ascending order.
  • +
diff --git a/leetcode/leetcode/0088-merge-sorted-array/0088-merge-sorted-array.java b/leetcode/leetcode/0088-merge-sorted-array/0088-merge-sorted-array.java new file mode 100644 index 0000000..678d901 --- /dev/null +++ b/leetcode/leetcode/0088-merge-sorted-array/0088-merge-sorted-array.java @@ -0,0 +1,44 @@ +class Solution { + public void swap(int[] arr, int indx1, int indx2){ + int temp = arr[indx1]; + arr[indx1] = arr[indx2]; + arr[indx2] = temp; + } + public void merge(int[] nums1, int m, int[] nums2, int n) { + if(m==0){ + for(int i =0;i=nums2[indx2]){ + nums1[currentIndex++] = nums2[indx2++]; + }else{ + nums1[currentIndex++] = nums1[indx1++]; + } + } + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0088-merge-sorted-array/NOTES.md b/leetcode/leetcode/0088-merge-sorted-array/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0088-merge-sorted-array/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0088-merge-sorted-array/README.md b/leetcode/leetcode/0088-merge-sorted-array/README.md new file mode 100644 index 0000000..50730b6 --- /dev/null +++ b/leetcode/leetcode/0088-merge-sorted-array/README.md @@ -0,0 +1,48 @@ +

88. Merge Sorted Array

Easy


You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively.

+ +

Merge nums1 and nums2 into a single array sorted in non-decreasing order.

+ +

The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n.

+ +

 

+

Example 1:

+ +
+Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
+Output: [1,2,2,3,5,6]
+Explanation: The arrays we are merging are [1,2,3] and [2,5,6].
+The result of the merge is [1,2,2,3,5,6] with the underlined elements coming from nums1.
+
+ +

Example 2:

+ +
+Input: nums1 = [1], m = 1, nums2 = [], n = 0
+Output: [1]
+Explanation: The arrays we are merging are [1] and [].
+The result of the merge is [1].
+
+ +

Example 3:

+ +
+Input: nums1 = [0], m = 0, nums2 = [1], n = 1
+Output: [1]
+Explanation: The arrays we are merging are [] and [1].
+The result of the merge is [1].
+Note that because m = 0, there are no elements in nums1. The 0 is only there to ensure the merge result can fit in nums1.
+
+ +

 

+

Constraints:

+ +
    +
  • nums1.length == m + n
  • +
  • nums2.length == n
  • +
  • 0 <= m, n <= 200
  • +
  • 1 <= m + n <= 200
  • +
  • -109 <= nums1[i], nums2[j] <= 109
  • +
+ +

 

+

Follow up: Can you come up with an algorithm that runs in O(m + n) time?

diff --git a/leetcode/leetcode/0092-reverse-linked-list-ii/0092-reverse-linked-list-ii.java b/leetcode/leetcode/0092-reverse-linked-list-ii/0092-reverse-linked-list-ii.java new file mode 100644 index 0000000..015cf69 --- /dev/null +++ b/leetcode/leetcode/0092-reverse-linked-list-ii/0092-reverse-linked-list-ii.java @@ -0,0 +1,61 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public ListNode reverse(ListNode head){ + ListNode prev = null; + ListNode curr = head; + ListNode next = head.next; + while(next!=null){ + curr.next = prev; + prev = curr; + curr = next; + next = next.next; + } + curr.next = prev; + return curr; + } + public ListNode reverseBetween(ListNode head, int left, int right) { + if(head == null || head.next == null) return head; + if(left == right) return head; + ListNode headPrev = null; + ListNode head1 = null; + ListNode tail1 = null; + ListNode tailNext = null; + ListNode temp = head; + int index =1; + while(temp!=null){ + if(index+1 == left){ + headPrev = temp; + + }else if(index == left){ + head1 = temp; + }else if(index == right){ + tail1 = temp; + }else if(index == right+1){ + tailNext = temp; + break; + } + temp = temp.next; + index++; + } + tail1.next = null; + if(headPrev == null){ + head = reverse(head); + }else{ + headPrev.next = null; + headPrev.next = reverse(head1); + } + head1.next = tailNext; + return head; + + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0092-reverse-linked-list-ii/README.md b/leetcode/leetcode/0092-reverse-linked-list-ii/README.md new file mode 100644 index 0000000..ef7393e --- /dev/null +++ b/leetcode/leetcode/0092-reverse-linked-list-ii/README.md @@ -0,0 +1,29 @@ +

92. Reverse Linked List II

Medium


Given the head of a singly linked list and two integers left and right where left <= right, reverse the nodes of the list from position left to position right, and return the reversed list.

+ +

 

+

Example 1:

+ +
+Input: head = [1,2,3,4,5], left = 2, right = 4
+Output: [1,4,3,2,5]
+
+ +

Example 2:

+ +
+Input: head = [5], left = 1, right = 1
+Output: [5]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is n.
  • +
  • 1 <= n <= 500
  • +
  • -500 <= Node.val <= 500
  • +
  • 1 <= left <= right <= n
  • +
+ +

 

+Follow up: Could you do it in one pass? \ No newline at end of file diff --git a/leetcode/leetcode/0094-binary-tree-inorder-traversal/0094-binary-tree-inorder-traversal.java b/leetcode/leetcode/0094-binary-tree-inorder-traversal/0094-binary-tree-inorder-traversal.java new file mode 100644 index 0000000..75d8815 --- /dev/null +++ b/leetcode/leetcode/0094-binary-tree-inorder-traversal/0094-binary-tree-inorder-traversal.java @@ -0,0 +1,31 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + List result = new ArrayList<>(); + + public void helper(TreeNode root){ + if(root == null) return; + helper(root.left); + result.add(root.val); + helper(root.right); + + } + + public List inorderTraversal(TreeNode root) { + helper(root); + return result; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0094-binary-tree-inorder-traversal/0094-binary-tree-inorder-traversal.py b/leetcode/leetcode/0094-binary-tree-inorder-traversal/0094-binary-tree-inorder-traversal.py new file mode 100644 index 0000000..281bbf6 --- /dev/null +++ b/leetcode/leetcode/0094-binary-tree-inorder-traversal/0094-binary-tree-inorder-traversal.py @@ -0,0 +1,15 @@ +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def inorderTraversal(self, root: Optional[TreeNode]) -> List[int]: + if(root == None): return [] + + result = [] + left = self.inorderTraversal(root.left) + right = self.inorderTraversal(root.right) + + return left + [root.val] + right \ No newline at end of file diff --git a/leetcode/leetcode/0094-binary-tree-inorder-traversal/README.md b/leetcode/leetcode/0094-binary-tree-inorder-traversal/README.md new file mode 100644 index 0000000..bd34dc7 --- /dev/null +++ b/leetcode/leetcode/0094-binary-tree-inorder-traversal/README.md @@ -0,0 +1,53 @@ +

94. Binary Tree Inorder Traversal

Easy


Given the root of a binary tree, return the inorder traversal of its nodes' values.

+ +

 

+

Example 1:

+ +
+

Input: root = [1,null,2,3]

+ +

Output: [1,3,2]

+ +

Explanation:

+ +

+
+ +

Example 2:

+ +
+

Input: root = [1,2,3,4,5,null,8,null,null,6,7,9]

+ +

Output: [4,2,6,5,7,1,3,9,8]

+ +

Explanation:

+ +

+
+ +

Example 3:

+ +
+

Input: root = []

+ +

Output: []

+
+ +

Example 4:

+ +
+

Input: root = [1]

+ +

Output: [1]

+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 100].
  • +
  • -100 <= Node.val <= 100
  • +
+ +

 

+Follow up: Recursive solution is trivial, could you do it iteratively? \ No newline at end of file diff --git a/leetcode/leetcode/0098-validate-binary-search-tree/0098-validate-binary-search-tree.java b/leetcode/leetcode/0098-validate-binary-search-tree/0098-validate-binary-search-tree.java new file mode 100644 index 0000000..5e9fcfd --- /dev/null +++ b/leetcode/leetcode/0098-validate-binary-search-tree/0098-validate-binary-search-tree.java @@ -0,0 +1,34 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + + public boolean helper(TreeNode root, long min, long max){ + if(root == null) return true; + + if(root.val>min && root.val bool: + return self.helper(root, float('-inf'), float('inf')) + diff --git a/leetcode/leetcode/0098-validate-binary-search-tree/README.md b/leetcode/leetcode/0098-validate-binary-search-tree/README.md new file mode 100644 index 0000000..957fcdb --- /dev/null +++ b/leetcode/leetcode/0098-validate-binary-search-tree/README.md @@ -0,0 +1,33 @@ +

98. Validate Binary Search Tree

Medium


Given the root of a binary tree, determine if it is a valid binary search tree (BST).

+ +

A valid BST is defined as follows:

+ +
    +
  • The left subtree of a node contains only nodes with keys less than the node's key.
  • +
  • The right subtree of a node contains only nodes with keys greater than the node's key.
  • +
  • Both the left and right subtrees must also be binary search trees.
  • +
+ +

 

+

Example 1:

+ +
+Input: root = [2,1,3]
+Output: true
+
+ +

Example 2:

+ +
+Input: root = [5,1,4,null,null,3,6]
+Output: false
+Explanation: The root node's value is 5 but its right child's value is 4.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [1, 104].
  • +
  • -231 <= Node.val <= 231 - 1
  • +
diff --git a/leetcode/leetcode/0100-same-tree/0100-same-tree.java b/leetcode/leetcode/0100-same-tree/0100-same-tree.java new file mode 100644 index 0000000..9c926f6 --- /dev/null +++ b/leetcode/leetcode/0100-same-tree/0100-same-tree.java @@ -0,0 +1,22 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public boolean isSameTree(TreeNode p, TreeNode q) { + if(p==null && q == null) return true; + if(p==null || q == null) return false; + return isSameTree(p.left,q.left) && isSameTree(p.right,q.right) && p.val == q.val; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0100-same-tree/NOTES.md b/leetcode/leetcode/0100-same-tree/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0100-same-tree/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0100-same-tree/README.md b/leetcode/leetcode/0100-same-tree/README.md new file mode 100644 index 0000000..e68046f --- /dev/null +++ b/leetcode/leetcode/0100-same-tree/README.md @@ -0,0 +1,33 @@ +

100. Same Tree

Easy


Given the roots of two binary trees p and q, write a function to check if they are the same or not.

+ +

Two binary trees are considered the same if they are structurally identical, and the nodes have the same value.

+ +

 

+

Example 1:

+ +
+Input: p = [1,2,3], q = [1,2,3]
+Output: true
+
+ +

Example 2:

+ +
+Input: p = [1,2], q = [1,null,2]
+Output: false
+
+ +

Example 3:

+ +
+Input: p = [1,2,1], q = [1,1,2]
+Output: false
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in both trees is in the range [0, 100].
  • +
  • -104 <= Node.val <= 104
  • +
diff --git a/leetcode/leetcode/0102-binary-tree-level-order-traversal/0102-binary-tree-level-order-traversal.java b/leetcode/leetcode/0102-binary-tree-level-order-traversal/0102-binary-tree-level-order-traversal.java new file mode 100644 index 0000000..5ffcc18 --- /dev/null +++ b/leetcode/leetcode/0102-binary-tree-level-order-traversal/0102-binary-tree-level-order-traversal.java @@ -0,0 +1,45 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public List> levelOrder(TreeNode root) { + + List> result = new ArrayList<>(); + if(root == null) return result; + Queue q = new LinkedList<>(); + + q.add(root); + + while(!q.isEmpty()){ + + List level = new ArrayList<>(); + + for(int i = q.size();i!=0;i--){ + TreeNode node = q.poll(); + + level.add(node.val); + + if(node.left!=null) q.add(node.left); + + if(node.right!=null) q.add(node.right); + + } + result.add(level); + + + } + return result; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0102-binary-tree-level-order-traversal/README.md b/leetcode/leetcode/0102-binary-tree-level-order-traversal/README.md new file mode 100644 index 0000000..01b65fd --- /dev/null +++ b/leetcode/leetcode/0102-binary-tree-level-order-traversal/README.md @@ -0,0 +1,31 @@ +

102. Binary Tree Level Order Traversal

Medium


Given the root of a binary tree, return the level order traversal of its nodes' values. (i.e., from left to right, level by level).

+ +

 

+

Example 1:

+ +
+Input: root = [3,9,20,null,null,15,7]
+Output: [[3],[9,20],[15,7]]
+
+ +

Example 2:

+ +
+Input: root = [1]
+Output: [[1]]
+
+ +

Example 3:

+ +
+Input: root = []
+Output: []
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 2000].
  • +
  • -1000 <= Node.val <= 1000
  • +
diff --git a/leetcode/leetcode/0103-binary-tree-zigzag-level-order-traversal/0103-binary-tree-zigzag-level-order-traversal.java b/leetcode/leetcode/0103-binary-tree-zigzag-level-order-traversal/0103-binary-tree-zigzag-level-order-traversal.java new file mode 100644 index 0000000..194d96c --- /dev/null +++ b/leetcode/leetcode/0103-binary-tree-zigzag-level-order-traversal/0103-binary-tree-zigzag-level-order-traversal.java @@ -0,0 +1,48 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public List> zigzagLevelOrder(TreeNode root) { + List> result = new ArrayList<>(); + if(root == null) return result; + + Queue q =new LinkedList<>(); + q.add(root); + boolean zigzag = true; + + while(!q.isEmpty()){ + int n = q.size(); + List level = new ArrayList<>(); + + // traverssing one level + for(int i = 0;i103. Binary Tree Zigzag Level Order Traversal

Medium


Given the root of a binary tree, return the zigzag level order traversal of its nodes' values. (i.e., from left to right, then right to left for the next level and alternate between).

+ +

 

+

Example 1:

+ +
+Input: root = [3,9,20,null,null,15,7]
+Output: [[3],[20,9],[15,7]]
+
+ +

Example 2:

+ +
+Input: root = [1]
+Output: [[1]]
+
+ +

Example 3:

+ +
+Input: root = []
+Output: []
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 2000].
  • +
  • -100 <= Node.val <= 100
  • +
diff --git a/leetcode/leetcode/0104-maximum-depth-of-binary-tree/0104-maximum-depth-of-binary-tree.java b/leetcode/leetcode/0104-maximum-depth-of-binary-tree/0104-maximum-depth-of-binary-tree.java new file mode 100644 index 0000000..cbfd5c6 --- /dev/null +++ b/leetcode/leetcode/0104-maximum-depth-of-binary-tree/0104-maximum-depth-of-binary-tree.java @@ -0,0 +1,25 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public int maxDepth(TreeNode root) { + if(root == null) return 0; + + int lH = maxDepth(root.left); + int rH = maxDepth(root.right); + + return Math.max(lH,rH) + 1; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0104-maximum-depth-of-binary-tree/README.md b/leetcode/leetcode/0104-maximum-depth-of-binary-tree/README.md new file mode 100644 index 0000000..3e88d40 --- /dev/null +++ b/leetcode/leetcode/0104-maximum-depth-of-binary-tree/README.md @@ -0,0 +1,26 @@ +

104. Maximum Depth of Binary Tree

Easy


Given the root of a binary tree, return its maximum depth.

+ +

A binary tree's maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.

+ +

 

+

Example 1:

+ +
+Input: root = [3,9,20,null,null,15,7]
+Output: 3
+
+ +

Example 2:

+ +
+Input: root = [1,null,2]
+Output: 2
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 104].
  • +
  • -100 <= Node.val <= 100
  • +
diff --git a/leetcode/leetcode/0106-construct-binary-tree-from-inorder-and-postorder-traversal/0106-construct-binary-tree-from-inorder-and-postorder-traversal.cpp b/leetcode/leetcode/0106-construct-binary-tree-from-inorder-and-postorder-traversal/0106-construct-binary-tree-from-inorder-and-postorder-traversal.cpp new file mode 100644 index 0000000..23a4edf --- /dev/null +++ b/leetcode/leetcode/0106-construct-binary-tree-from-inorder-and-postorder-traversal/0106-construct-binary-tree-from-inorder-and-postorder-traversal.cpp @@ -0,0 +1,50 @@ +/** + * Definition for a binary tree node. + * struct TreeNode { + * int val; + * TreeNode *left; + * TreeNode *right; + * TreeNode() : val(0), left(nullptr), right(nullptr) {} + * TreeNode(int x) : val(x), left(nullptr), right(nullptr) {} + * TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {} + * }; + */ +class Solution { +public: +//inorder = [9,3,15,20,7], postorder = [9,15,7,20,3] + + TreeNode* build(vector& inorder, vector& postorder,int inS, int inE, int pS, int pE,unordered_map& mp ){ + if(inS>inE||pS>pE){ + return NULL; + } + + + int rootV = postorder[pE]; + + int inIdx = mp[rootV]; + + TreeNode* root= new TreeNode(rootV); + + int leftTreeSize = inIdx - inS; + int rightTreeSize = inE - inIdx; + root->left = build(inorder,postorder,inS,inIdx-1,pS,pS+leftTreeSize-1,mp); + root->right = build(inorder,postorder,inIdx+1,inE,pE-rightTreeSize,pE-1,mp); + + return root; + + } + + TreeNode* buildTree(vector& inorder, vector& postorder) { + + + unordered_map mp; + int n = inorder.size(); + + for(int i=0;i106. Construct Binary Tree from Inorder and Postorder Traversal

Medium


Given two integer arrays inorder and postorder where inorder is the inorder traversal of a binary tree and postorder is the postorder traversal of the same tree, construct and return the binary tree.

+ +

 

+

Example 1:

+ +
+Input: inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]
+Output: [3,9,20,null,null,15,7]
+
+ +

Example 2:

+ +
+Input: inorder = [-1], postorder = [-1]
+Output: [-1]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= inorder.length <= 3000
  • +
  • postorder.length == inorder.length
  • +
  • -3000 <= inorder[i], postorder[i] <= 3000
  • +
  • inorder and postorder consist of unique values.
  • +
  • Each value of postorder also appears in inorder.
  • +
  • inorder is guaranteed to be the inorder traversal of the tree.
  • +
  • postorder is guaranteed to be the postorder traversal of the tree.
  • +
diff --git a/leetcode/leetcode/0108-convert-sorted-array-to-binary-search-tree/0108-convert-sorted-array-to-binary-search-tree.java b/leetcode/leetcode/0108-convert-sorted-array-to-binary-search-tree/0108-convert-sorted-array-to-binary-search-tree.java new file mode 100644 index 0000000..0d60392 --- /dev/null +++ b/leetcode/leetcode/0108-convert-sorted-array-to-binary-search-tree/0108-convert-sorted-array-to-binary-search-tree.java @@ -0,0 +1,33 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public TreeNode helper(int[] nums, int startIndex, int endIndex){ + if(startIndex>endIndex) return null; + if(startIndex==endIndex) return new TreeNode(nums[startIndex]); + + int mid = (startIndex+endIndex)/2; + + TreeNode root = new TreeNode(nums[mid]); + + root.left = helper(nums,startIndex,mid-1); + root.right = helper(nums,mid+1,endIndex); + return root; + } + public TreeNode sortedArrayToBST(int[] nums) { + return helper(nums,0,nums.length-1); + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0108-convert-sorted-array-to-binary-search-tree/README.md b/leetcode/leetcode/0108-convert-sorted-array-to-binary-search-tree/README.md new file mode 100644 index 0000000..243a285 --- /dev/null +++ b/leetcode/leetcode/0108-convert-sorted-array-to-binary-search-tree/README.md @@ -0,0 +1,28 @@ +

108. Convert Sorted Array to Binary Search Tree

Easy


Given an integer array nums where the elements are sorted in ascending order, convert it to a height-balanced binary search tree.

+ +

 

+

Example 1:

+ +
+Input: nums = [-10,-3,0,5,9]
+Output: [0,-3,9,-10,null,5]
+Explanation: [0,-10,5,null,-3,null,9] is also accepted:
+
+
+ +

Example 2:

+ +
+Input: nums = [1,3]
+Output: [3,1]
+Explanation: [1,null,3] and [3,1] are both height-balanced BSTs.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 104
  • +
  • -104 <= nums[i] <= 104
  • +
  • nums is sorted in a strictly increasing order.
  • +
diff --git a/leetcode/leetcode/0110-balanced-binary-tree/0110-balanced-binary-tree.java b/leetcode/leetcode/0110-balanced-binary-tree/0110-balanced-binary-tree.java new file mode 100644 index 0000000..9b77fb8 --- /dev/null +++ b/leetcode/leetcode/0110-balanced-binary-tree/0110-balanced-binary-tree.java @@ -0,0 +1,43 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public class Pair{ + int height; + boolean balanced; + Pair(int height, boolean balanced){ + this.height = height; + this.balanced = balanced; + } + } + + public Pair helper(TreeNode root){ + if(root == null){ + return new Pair(0,true); + } + + Pair left = helper(root.left); + Pair right = helper(root.right); + + + if(left.balanced == true && right.balanced == true && Math.abs(left.height - right.height) <= 1){ + return new Pair(Math.max(left.height,right.height)+1, true); + } + return new Pair(Math.max(left.height,right.height)+1, false); + } + public boolean isBalanced(TreeNode root) { + return helper(root).balanced; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0110-balanced-binary-tree/README.md b/leetcode/leetcode/0110-balanced-binary-tree/README.md new file mode 100644 index 0000000..1496517 --- /dev/null +++ b/leetcode/leetcode/0110-balanced-binary-tree/README.md @@ -0,0 +1,31 @@ +

110. Balanced Binary Tree

Easy


Given a binary tree, determine if it is height-balanced.

+ +

 

+

Example 1:

+ +
+Input: root = [3,9,20,null,null,15,7]
+Output: true
+
+ +

Example 2:

+ +
+Input: root = [1,2,2,3,3,null,null,4,4]
+Output: false
+
+ +

Example 3:

+ +
+Input: root = []
+Output: true
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 5000].
  • +
  • -104 <= Node.val <= 104
  • +
diff --git a/leetcode/leetcode/0112-path-sum/0112-path-sum.java b/leetcode/leetcode/0112-path-sum/0112-path-sum.java new file mode 100644 index 0000000..ed212a4 --- /dev/null +++ b/leetcode/leetcode/0112-path-sum/0112-path-sum.java @@ -0,0 +1,24 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public boolean hasPathSum(TreeNode root, int targetSum) { + if(root == null) return false; + + if(targetSum == root.val && root.left == null && root.right == null ) return true; + + return hasPathSum(root.left,targetSum-root.val) || hasPathSum(root.right, targetSum-root.val); + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0112-path-sum/README.md b/leetcode/leetcode/0112-path-sum/README.md new file mode 100644 index 0000000..98772e5 --- /dev/null +++ b/leetcode/leetcode/0112-path-sum/README.md @@ -0,0 +1,40 @@ +

112. Path Sum

Easy


Given the root of a binary tree and an integer targetSum, return true if the tree has a root-to-leaf path such that adding up all the values along the path equals targetSum.

+ +

A leaf is a node with no children.

+ +

 

+

Example 1:

+ +
+Input: root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22
+Output: true
+Explanation: The root-to-leaf path with the target sum is shown.
+
+ +

Example 2:

+ +
+Input: root = [1,2,3], targetSum = 5
+Output: false
+Explanation: There are two root-to-leaf paths in the tree:
+(1 --> 2): The sum is 3.
+(1 --> 3): The sum is 4.
+There is no root-to-leaf path with sum = 5.
+
+ +

Example 3:

+ +
+Input: root = [], targetSum = 0
+Output: false
+Explanation: Since the tree is empty, there are no root-to-leaf paths.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 5000].
  • +
  • -1000 <= Node.val <= 1000
  • +
  • -1000 <= targetSum <= 1000
  • +
diff --git a/leetcode/leetcode/0114-flatten-binary-tree-to-linked-list/0114-flatten-binary-tree-to-linked-list.java b/leetcode/leetcode/0114-flatten-binary-tree-to-linked-list/0114-flatten-binary-tree-to-linked-list.java new file mode 100644 index 0000000..23ee3bb --- /dev/null +++ b/leetcode/leetcode/0114-flatten-binary-tree-to-linked-list/0114-flatten-binary-tree-to-linked-list.java @@ -0,0 +1,38 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public void flatten(TreeNode root) { + if(root == null) return; + + flatten(root.left); + flatten(root.right); + + TreeNode leftTemp = root.left; + root.left = null; + TreeNode rightTemp = root.right; + + if(leftTemp==null){ + return; + }else{ + root.right = leftTemp; + while(root.right!=null){ + root = root.right; + + } + root.right= rightTemp; + } + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0114-flatten-binary-tree-to-linked-list/README.md b/leetcode/leetcode/0114-flatten-binary-tree-to-linked-list/README.md new file mode 100644 index 0000000..581431b --- /dev/null +++ b/leetcode/leetcode/0114-flatten-binary-tree-to-linked-list/README.md @@ -0,0 +1,39 @@ +

114. Flatten Binary Tree to Linked List

Medium


Given the root of a binary tree, flatten the tree into a "linked list":

+ +
    +
  • The "linked list" should use the same TreeNode class where the right child pointer points to the next node in the list and the left child pointer is always null.
  • +
  • The "linked list" should be in the same order as a pre-order traversal of the binary tree.
  • +
+ +

 

+

Example 1:

+ +
+Input: root = [1,2,5,3,4,null,6]
+Output: [1,null,2,null,3,null,4,null,5,null,6]
+
+ +

Example 2:

+ +
+Input: root = []
+Output: []
+
+ +

Example 3:

+ +
+Input: root = [0]
+Output: [0]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 2000].
  • +
  • -100 <= Node.val <= 100
  • +
+ +

 

+Follow up: Can you flatten the tree in-place (with O(1) extra space)? \ No newline at end of file diff --git a/leetcode/leetcode/0116-populating-next-right-pointers-in-each-node/0116-populating-next-right-pointers-in-each-node.java b/leetcode/leetcode/0116-populating-next-right-pointers-in-each-node/0116-populating-next-right-pointers-in-each-node.java new file mode 100644 index 0000000..3a063e9 --- /dev/null +++ b/leetcode/leetcode/0116-populating-next-right-pointers-in-each-node/0116-populating-next-right-pointers-in-each-node.java @@ -0,0 +1,51 @@ +/* +// Definition for a Node. +class Node { + public int val; + public Node left; + public Node right; + public Node next; + + public Node() {} + + public Node(int _val) { + val = _val; + } + + public Node(int _val, Node _left, Node _right, Node _next) { + val = _val; + left = _left; + right = _right; + next = _next; + } +}; +*/ + +class Solution { + public Node connect(Node root) { + if(root == null) return root; + + Queue q = new LinkedList<>(); + Node temp = root; + q.add(root); + while(!q.isEmpty()){ + + int n = q.size(); + + for(int i = n;i!=0;i--){ + root = q.poll(); + if(i==1){ + root.next = null; + }else{ + root.next = q.peek(); + } + + if(root.left!=null) q.add(root.left); + if(root.right!=null) q.add(root.right); + } + + } + return temp; + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0116-populating-next-right-pointers-in-each-node/README.md b/leetcode/leetcode/0116-populating-next-right-pointers-in-each-node/README.md new file mode 100644 index 0000000..04fdf61 --- /dev/null +++ b/leetcode/leetcode/0116-populating-next-right-pointers-in-each-node/README.md @@ -0,0 +1,46 @@ +

116. Populating Next Right Pointers in Each Node

Medium


You are given a perfect binary tree where all leaves are on the same level, and every parent has two children. The binary tree has the following definition:

+ +
+struct Node {
+  int val;
+  Node *left;
+  Node *right;
+  Node *next;
+}
+
+ +

Populate each next pointer to point to its next right node. If there is no next right node, the next pointer should be set to NULL.

+ +

Initially, all next pointers are set to NULL.

+ +

 

+

Example 1:

+ +
+Input: root = [1,2,3,4,5,6,7]
+Output: [1,#,2,3,#,4,5,6,7,#]
+Explanation: Given the above perfect binary tree (Figure A), your function should populate each next pointer to point to its next right node, just like in Figure B. The serialized output is in level order as connected by the next pointers, with '#' signifying the end of each level.
+
+ +

Example 2:

+ +
+Input: root = []
+Output: []
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 212 - 1].
  • +
  • -1000 <= Node.val <= 1000
  • +
+ +

 

+

Follow-up:

+ +
    +
  • You may only use constant extra space.
  • +
  • The recursive approach is fine. You may assume implicit stack space does not count as extra space for this problem.
  • +
diff --git a/leetcode/leetcode/0118-pascals-triangle/0118-pascals-triangle.java b/leetcode/leetcode/0118-pascals-triangle/0118-pascals-triangle.java new file mode 100644 index 0000000..c8862bd --- /dev/null +++ b/leetcode/leetcode/0118-pascals-triangle/0118-pascals-triangle.java @@ -0,0 +1,31 @@ +class Solution { + public List> generate(int numRows) { + List> result = new ArrayList<>(); + List one = new ArrayList<>(); + one.add(1); + result.add(one); + + if(numRows == 1) return result; + + List two = new ArrayList<>(); + two.add(1); + two.add(1); + result.add(two); + + + if(numRows == 2) return result; + + + for(int i = 2;i prev = result.get(i-1); + List next = new ArrayList<>(); + next.add(1); + for(int j = 1;j118. Pascal's Triangle

Easy


Given an integer numRows, return the first numRows of Pascal's triangle.

+ +

In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:

+ +

 

+

Example 1:

+
Input: numRows = 5
+Output: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]
+

Example 2:

+
Input: numRows = 1
+Output: [[1]]
+
+

 

+

Constraints:

+ +
    +
  • 1 <= numRows <= 30
  • +
diff --git a/leetcode/leetcode/0119-pascals-triangle-ii/0119-pascals-triangle-ii.java b/leetcode/leetcode/0119-pascals-triangle-ii/0119-pascals-triangle-ii.java new file mode 100644 index 0000000..aaa089e --- /dev/null +++ b/leetcode/leetcode/0119-pascals-triangle-ii/0119-pascals-triangle-ii.java @@ -0,0 +1,23 @@ +class Solution { + public List getRow(int rowIndex) { + if(rowIndex == 0){ + List list = new ArrayList<>(); + list.add(1); + return list; + } + if(rowIndex == 1){ + List list = new ArrayList<>(); + list.add(1); + list.add(1); + return list; + } + List prev = getRow(rowIndex-1); + List list = new ArrayList<>(); + list.add(1); + for(int i = 1;i119. Pascal's Triangle II

Easy


Given an integer rowIndex, return the rowIndexth (0-indexed) row of the Pascal's triangle.

+ +

In Pascal's triangle, each number is the sum of the two numbers directly above it as shown:

+ +

 

+

Example 1:

+
Input: rowIndex = 3
+Output: [1,3,3,1]
+

Example 2:

+
Input: rowIndex = 0
+Output: [1]
+

Example 3:

+
Input: rowIndex = 1
+Output: [1,1]
+
+

 

+

Constraints:

+ +
    +
  • 0 <= rowIndex <= 33
  • +
+ +

 

+

Follow up: Could you optimize your algorithm to use only O(rowIndex) extra space?

+
\ No newline at end of file diff --git a/leetcode/leetcode/0120-triangle/0120-triangle.java b/leetcode/leetcode/0120-triangle/0120-triangle.java new file mode 100644 index 0000000..d2fca90 --- /dev/null +++ b/leetcode/leetcode/0120-triangle/0120-triangle.java @@ -0,0 +1,54 @@ +// Approach: 1 Recursion: TLE +// class Solution { +// public int helper(List> traingle, int currentRow, int currentCol){ +// if(currentRow>=traingle.size() || currentCol>=traingle.get(currentRow).size()) return 0; +// return traingle.get(currentRow).get(currentCol) + Math.min( +// helper(traingle,currentRow+1,currentCol), +// helper(traingle,currentRow+1,currentCol+1) +// ); +// } +// public int minimumTotal(List> triangle) { +// return helper(triangle,0,0); +// } +// } + +// Approach 2: Memoization +// class Solution { +// public int helper(List> traingle,int[][] memo, int currentRow, int currentCol){ +// if(currentRow>=traingle.size() || currentCol>=traingle.get(currentRow).size()) return 0; +// if(memo[currentRow][currentCol]!=-1) return memo[currentRow][currentCol]; +// memo[currentRow][currentCol] = traingle.get(currentRow).get(currentCol) + Math.min( +// helper(traingle,memo,currentRow+1,currentCol), +// helper(traingle,memo,currentRow+1,currentCol+1) +// ); +// return memo[currentRow][currentCol]; +// } +// public int minimumTotal(List> triangle) { +// int[][] memo = new int[triangle.size()][triangle.size()]; +// for(int i = 0;i> triangle) { + int[][] dp = new int[triangle.size()+1][triangle.size()+1]; + + for(int i = triangle.size() - 1;i!=-1;i--){ + for(int j = triangle.get(i).size()-1;j!=-1;j--){ + dp[i][j] = triangle.get(i).get(j) + Math.min( + dp[i+1][j], + dp[i+1][j+1] + ); + } + } + + return dp[0][0]; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0120-triangle/README.md b/leetcode/leetcode/0120-triangle/README.md new file mode 100644 index 0000000..041b5f2 --- /dev/null +++ b/leetcode/leetcode/0120-triangle/README.md @@ -0,0 +1,37 @@ +

120. Triangle

Medium


Given a triangle array, return the minimum path sum from top to bottom.

+ +

For each step, you may move to an adjacent number of the row below. More formally, if you are on index i on the current row, you may move to either index i or index i + 1 on the next row.

+ +

 

+

Example 1:

+ +
+Input: triangle = [[2],[3,4],[6,5,7],[4,1,8,3]]
+Output: 11
+Explanation: The triangle looks like:
+   2
+  3 4
+ 6 5 7
+4 1 8 3
+The minimum path sum from top to bottom is 2 + 3 + 5 + 1 = 11 (underlined above).
+
+ +

Example 2:

+ +
+Input: triangle = [[-10]]
+Output: -10
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= triangle.length <= 200
  • +
  • triangle[0].length == 1
  • +
  • triangle[i].length == triangle[i - 1].length + 1
  • +
  • -104 <= triangle[i][j] <= 104
  • +
+ +

 

+Follow up: Could you do this using only O(n) extra space, where n is the total number of rows in the triangle? \ No newline at end of file diff --git a/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/0121-best-time-to-buy-and-sell-stock.java b/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/0121-best-time-to-buy-and-sell-stock.java new file mode 100644 index 0000000..895d0a1 --- /dev/null +++ b/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/0121-best-time-to-buy-and-sell-stock.java @@ -0,0 +1,12 @@ +class Solution { + public int maxProfit(int[] prices) { + int ans = 0; + int n = prices.length; + int maxTillNow = prices[n-1]; + for(int i = n-2;i!=-1;i--){ + ans = Math.max(ans,maxTillNow - prices[i]); + maxTillNow = Math.max(maxTillNow,prices[i]); + } + return ans; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/0121-best-time-to-buy-and-sell-stock.py b/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/0121-best-time-to-buy-and-sell-stock.py new file mode 100644 index 0000000..95f04f8 --- /dev/null +++ b/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/0121-best-time-to-buy-and-sell-stock.py @@ -0,0 +1,8 @@ +class Solution: + def maxProfit(self, prices: List[int]) -> int: + ans = 0 + m = prices[0] + for p in prices: + ans = max(ans, p - m) + m = min(m,p) + return ans \ No newline at end of file diff --git a/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/NOTES.md b/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/README.md b/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/README.md new file mode 100644 index 0000000..c985d4a --- /dev/null +++ b/leetcode/leetcode/0121-best-time-to-buy-and-sell-stock/README.md @@ -0,0 +1,31 @@ +

121. Best Time to Buy and Sell Stock

Easy


You are given an array prices where prices[i] is the price of a given stock on the ith day.

+ +

You want to maximize your profit by choosing a single day to buy one stock and choosing a different day in the future to sell that stock.

+ +

Return the maximum profit you can achieve from this transaction. If you cannot achieve any profit, return 0.

+ +

 

+

Example 1:

+ +
+Input: prices = [7,1,5,3,6,4]
+Output: 5
+Explanation: Buy on day 2 (price = 1) and sell on day 5 (price = 6), profit = 6-1 = 5.
+Note that buying on day 2 and selling on day 1 is not allowed because you must buy before you sell.
+
+ +

Example 2:

+ +
+Input: prices = [7,6,4,3,1]
+Output: 0
+Explanation: In this case, no transactions are done and the max profit = 0.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= prices.length <= 105
  • +
  • 0 <= prices[i] <= 104
  • +
diff --git a/leetcode/leetcode/0124-binary-tree-maximum-path-sum/0124-binary-tree-maximum-path-sum.java b/leetcode/leetcode/0124-binary-tree-maximum-path-sum/0124-binary-tree-maximum-path-sum.java new file mode 100644 index 0000000..7def5ce --- /dev/null +++ b/leetcode/leetcode/0124-binary-tree-maximum-path-sum/0124-binary-tree-maximum-path-sum.java @@ -0,0 +1,37 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + int max = Integer.MIN_VALUE; + + public int helper(TreeNode root){ + if(root == null) return 0; + + int left = helper(root.left); + int right = helper(root.right); + + max = Math.max(Math.max(max,left+right+root.val),Math.max(left+root.val,right+root.val)); + max = Math.max(max,root.val); + return Math.max(root.val,Math.max(root.val+left,root.val+right)); + + } + + public int maxPathSum(TreeNode root) { + helper(root); + return max; + + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0124-binary-tree-maximum-path-sum/README.md b/leetcode/leetcode/0124-binary-tree-maximum-path-sum/README.md new file mode 100644 index 0000000..ffa0bc8 --- /dev/null +++ b/leetcode/leetcode/0124-binary-tree-maximum-path-sum/README.md @@ -0,0 +1,30 @@ +

124. Binary Tree Maximum Path Sum

Hard


A path in a binary tree is a sequence of nodes where each pair of adjacent nodes in the sequence has an edge connecting them. A node can only appear in the sequence at most once. Note that the path does not need to pass through the root.

+ +

The path sum of a path is the sum of the node's values in the path.

+ +

Given the root of a binary tree, return the maximum path sum of any non-empty path.

+ +

 

+

Example 1:

+ +
+Input: root = [1,2,3]
+Output: 6
+Explanation: The optimal path is 2 -> 1 -> 3 with a path sum of 2 + 1 + 3 = 6.
+
+ +

Example 2:

+ +
+Input: root = [-10,9,20,null,null,15,7]
+Output: 42
+Explanation: The optimal path is 15 -> 20 -> 7 with a path sum of 15 + 20 + 7 = 42.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [1, 3 * 104].
  • +
  • -1000 <= Node.val <= 1000
  • +
diff --git a/leetcode/leetcode/0125-valid-palindrome/0125-valid-palindrome.java b/leetcode/leetcode/0125-valid-palindrome/0125-valid-palindrome.java new file mode 100644 index 0000000..6b4a066 --- /dev/null +++ b/leetcode/leetcode/0125-valid-palindrome/0125-valid-palindrome.java @@ -0,0 +1,22 @@ +class Solution { + public boolean isPalindrome(String s) { + int low = 0; + int high = s.length() - 1; + while(low96 && code1 <123) || (code1 >47 && code1<58))){ + low++; + continue; + } + int code2 = Character.toLowerCase(s.charAt(high)); + if(!((code2>96 && code2<123) || (code2 >47 && code2<58))){ + high--; + continue; + } + if(code1!=code2) return false; + low++; + high--; + } + return true; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0125-valid-palindrome/NOTES.md b/leetcode/leetcode/0125-valid-palindrome/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0125-valid-palindrome/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0125-valid-palindrome/README.md b/leetcode/leetcode/0125-valid-palindrome/README.md new file mode 100644 index 0000000..b2217a0 --- /dev/null +++ b/leetcode/leetcode/0125-valid-palindrome/README.md @@ -0,0 +1,35 @@ +

125. Valid Palindrome

Easy


A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters include letters and numbers.

+ +

Given a string s, return true if it is a palindrome, or false otherwise.

+ +

 

+

Example 1:

+ +
Input: s = "A man, a plan, a canal: Panama"
+Output: true
+Explanation: "amanaplanacanalpanama" is a palindrome.
+
+ +

Example 2:

+ +
Input: s = "race a car"
+Output: false
+Explanation: "raceacar" is not a palindrome.
+
+ +

Example 3:

+ +
Input: s = " "
+Output: true
+Explanation: s is an empty string "" after removing non-alphanumeric characters.
+Since an empty string reads the same forward and backward, it is a palindrome.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 2 * 105
  • +
  • s consists only of printable ASCII characters.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0128-longest-consecutive-sequence/0128-longest-consecutive-sequence.java b/leetcode/leetcode/0128-longest-consecutive-sequence/0128-longest-consecutive-sequence.java new file mode 100644 index 0000000..ad92ff2 --- /dev/null +++ b/leetcode/leetcode/0128-longest-consecutive-sequence/0128-longest-consecutive-sequence.java @@ -0,0 +1,22 @@ +class Solution { + public int longestConsecutive(int[] arr) { + HashSet set = new HashSet<>(); + for(int num: arr){ + set.add(num); + } + + int streak = 0; + for(int num: set){ + if(!set.contains(num-1)){ + int currentStreak = 1; + int currentNum = num; + while(set.contains(currentNum+1)){ + currentStreak++; + currentNum++; + } + streak = Math.max(streak,currentStreak); + } + } + return streak; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0128-longest-consecutive-sequence/README.md b/leetcode/leetcode/0128-longest-consecutive-sequence/README.md new file mode 100644 index 0000000..bc9f29c --- /dev/null +++ b/leetcode/leetcode/0128-longest-consecutive-sequence/README.md @@ -0,0 +1,34 @@ +

128. Longest Consecutive Sequence

Medium


Given an unsorted array of integers nums, return the length of the longest consecutive elements sequence.

+ +

You must write an algorithm that runs in O(n) time.

+ +

 

+

Example 1:

+ +
+Input: nums = [100,4,200,1,3,2]
+Output: 4
+Explanation: The longest consecutive elements sequence is [1, 2, 3, 4]. Therefore its length is 4.
+
+ +

Example 2:

+ +
+Input: nums = [0,3,7,2,5,8,4,6,0,1]
+Output: 9
+
+ +

Example 3:

+ +
+Input: nums = [1,0,1,2]
+Output: 3
+
+ +

 

+

Constraints:

+ +
    +
  • 0 <= nums.length <= 105
  • +
  • -109 <= nums[i] <= 109
  • +
diff --git a/leetcode/leetcode/0129-sum-root-to-leaf-numbers/0129-sum-root-to-leaf-numbers.java b/leetcode/leetcode/0129-sum-root-to-leaf-numbers/0129-sum-root-to-leaf-numbers.java new file mode 100644 index 0000000..003c4cb --- /dev/null +++ b/leetcode/leetcode/0129-sum-root-to-leaf-numbers/0129-sum-root-to-leaf-numbers.java @@ -0,0 +1,26 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public int helper(TreeNode root, int currentNum){ + if(root == null) return 0; + currentNum = currentNum*10+root.val; + if(root.left == null && root.right == null) return currentNum; + return helper(root.left,currentNum) + helper(root.right,currentNum); + } + public int sumNumbers(TreeNode root) { + return helper(root,0); + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0129-sum-root-to-leaf-numbers/README.md b/leetcode/leetcode/0129-sum-root-to-leaf-numbers/README.md new file mode 100644 index 0000000..abefe7f --- /dev/null +++ b/leetcode/leetcode/0129-sum-root-to-leaf-numbers/README.md @@ -0,0 +1,43 @@ +

129. Sum Root to Leaf Numbers

Medium


You are given the root of a binary tree containing digits from 0 to 9 only.

+ +

Each root-to-leaf path in the tree represents a number.

+ +
    +
  • For example, the root-to-leaf path 1 -> 2 -> 3 represents the number 123.
  • +
+ +

Return the total sum of all root-to-leaf numbers. Test cases are generated so that the answer will fit in a 32-bit integer.

+ +

A leaf node is a node with no children.

+ +

 

+

Example 1:

+ +
Input: root = [1,2,3]
+Output: 25
+Explanation:
+The root-to-leaf path 1->2 represents the number 12.
+The root-to-leaf path 1->3 represents the number 13.
+Therefore, sum = 12 + 13 = 25.
+
+ +

Example 2:

+ +
Input: root = [4,9,0,5,1]
+Output: 1026
+Explanation:
+The root-to-leaf path 4->9->5 represents the number 495.
+The root-to-leaf path 4->9->1 represents the number 491.
+The root-to-leaf path 4->0 represents the number 40.
+Therefore, sum = 495 + 491 + 40 = 1026.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [1, 1000].
  • +
  • 0 <= Node.val <= 9
  • +
  • The depth of the tree will not exceed 10.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0131-palindrome-partitioning/0131-palindrome-partitioning.py b/leetcode/leetcode/0131-palindrome-partitioning/0131-palindrome-partitioning.py new file mode 100644 index 0000000..caf4a29 --- /dev/null +++ b/leetcode/leetcode/0131-palindrome-partitioning/0131-palindrome-partitioning.py @@ -0,0 +1,18 @@ +class Solution: + def partition(self, s: str) -> List[List[str]]: + res = [] + curr_part = [] + + def helper(s): + if not s: + res.append(curr_part[:]) + return + for i in range(len(s)): + temp = s[0:i+1] + if(temp == temp[::-1]): + + curr_part.append(temp) + helper(s[i+1:]) + curr_part.pop() + helper(s) + return res \ No newline at end of file diff --git a/leetcode/leetcode/0131-palindrome-partitioning/README.md b/leetcode/leetcode/0131-palindrome-partitioning/README.md new file mode 100644 index 0000000..8d1193b --- /dev/null +++ b/leetcode/leetcode/0131-palindrome-partitioning/README.md @@ -0,0 +1,17 @@ +

131. Palindrome Partitioning

Medium


Given a string s, partition s such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of s.

+ +

 

+

Example 1:

+
Input: s = "aab"
+Output: [["a","a","b"],["aa","b"]]
+

Example 2:

+
Input: s = "a"
+Output: [["a"]]
+
+

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 16
  • +
  • s contains only lowercase English letters.
  • +
diff --git a/leetcode/leetcode/0133-clone-graph/0133-clone-graph.java b/leetcode/leetcode/0133-clone-graph/0133-clone-graph.java new file mode 100644 index 0000000..b82ba8a --- /dev/null +++ b/leetcode/leetcode/0133-clone-graph/0133-clone-graph.java @@ -0,0 +1,37 @@ +/* +// Definition for a Node. +class Node { + public int val; + public List neighbors; + public Node() { + val = 0; + neighbors = new ArrayList(); + } + public Node(int _val) { + val = _val; + neighbors = new ArrayList(); + } + public Node(int _val, ArrayList _neighbors) { + val = _val; + neighbors = _neighbors; + } +} +*/ + +class Solution { + public Node cloneHelper(Node node, HashMap visited){ + if(node == null) return node; + if(visited.containsKey(node)) return visited.get(node); + + Node cloned = new Node(node.val); + visited.put(node,cloned); + for(int i = 0;i map = new HashMap<>(); + return cloneHelper(node,map); + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0133-clone-graph/README.md b/leetcode/leetcode/0133-clone-graph/README.md new file mode 100644 index 0000000..38fdb5a --- /dev/null +++ b/leetcode/leetcode/0133-clone-graph/README.md @@ -0,0 +1,62 @@ +

133. Clone Graph

Medium


Given a reference of a node in a connected undirected graph.

+ +

Return a deep copy (clone) of the graph.

+ +

Each node in the graph contains a value (int) and a list (List[Node]) of its neighbors.

+ +
+class Node {
+    public int val;
+    public List<Node> neighbors;
+}
+
+ +

 

+ +

Test case format:

+ +

For simplicity, each node's value is the same as the node's index (1-indexed). For example, the first node with val == 1, the second node with val == 2, and so on. The graph is represented in the test case using an adjacency list.

+ +

An adjacency list is a collection of unordered lists used to represent a finite graph. Each list describes the set of neighbors of a node in the graph.

+ +

The given node will always be the first node with val = 1. You must return the copy of the given node as a reference to the cloned graph.

+ +

 

+

Example 1:

+ +
+Input: adjList = [[2,4],[1,3],[2,4],[1,3]]
+Output: [[2,4],[1,3],[2,4],[1,3]]
+Explanation: There are 4 nodes in the graph.
+1st node (val = 1)'s neighbors are 2nd node (val = 2) and 4th node (val = 4).
+2nd node (val = 2)'s neighbors are 1st node (val = 1) and 3rd node (val = 3).
+3rd node (val = 3)'s neighbors are 2nd node (val = 2) and 4th node (val = 4).
+4th node (val = 4)'s neighbors are 1st node (val = 1) and 3rd node (val = 3).
+
+ +

Example 2:

+ +
+Input: adjList = [[]]
+Output: [[]]
+Explanation: Note that the input contains one empty list. The graph consists of only one node with val = 1 and it does not have any neighbors.
+
+ +

Example 3:

+ +
+Input: adjList = []
+Output: []
+Explanation: This an empty graph, it does not have any nodes.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the graph is in the range [0, 100].
  • +
  • 1 <= Node.val <= 100
  • +
  • Node.val is unique for each node.
  • +
  • There are no repeated edges and no self-loops in the graph.
  • +
  • The Graph is connected and all nodes can be visited starting from the given node.
  • +
diff --git a/leetcode/leetcode/0134-gas-station/0134-gas-station.java b/leetcode/leetcode/0134-gas-station/0134-gas-station.java new file mode 100644 index 0000000..74c453d --- /dev/null +++ b/leetcode/leetcode/0134-gas-station/0134-gas-station.java @@ -0,0 +1,20 @@ +class Solution { + public int canCompleteCircuit(int[] gas, int[] cost) { + int totalGas = 0; + int currentGas = 0; + int start = -1; + for(int i = 0;i134. Gas Station

Medium


There are n gas stations along a circular route, where the amount of gas at the ith station is gas[i].

+ +

You have a car with an unlimited gas tank and it costs cost[i] of gas to travel from the ith station to its next (i + 1)th station. You begin the journey with an empty tank at one of the gas stations.

+ +

Given two integer arrays gas and cost, return the starting gas station's index if you can travel around the circuit once in the clockwise direction, otherwise return -1. If there exists a solution, it is guaranteed to be unique

+ +

 

+

Example 1:

+ +
Input: gas = [1,2,3,4,5], cost = [3,4,5,1,2]
+Output: 3
+Explanation:
+Start at station 3 (index 3) and fill up with 4 unit of gas. Your tank = 0 + 4 = 4
+Travel to station 4. Your tank = 4 - 1 + 5 = 8
+Travel to station 0. Your tank = 8 - 2 + 1 = 7
+Travel to station 1. Your tank = 7 - 3 + 2 = 6
+Travel to station 2. Your tank = 6 - 4 + 3 = 5
+Travel to station 3. The cost is 5. Your gas is just enough to travel back to station 3.
+Therefore, return 3 as the starting index.
+
+ +

Example 2:

+ +
Input: gas = [2,3,4], cost = [3,4,3]
+Output: -1
+Explanation:
+You can't start at station 0 or 1, as there is not enough gas to travel to the next station.
+Let's start at station 2 and fill up with 4 unit of gas. Your tank = 0 + 4 = 4
+Travel to station 0. Your tank = 4 - 3 + 2 = 3
+Travel to station 1. Your tank = 3 - 3 + 3 = 3
+You cannot travel back to station 2, as it requires 4 unit of gas but you only have 3.
+Therefore, you can't travel around the circuit once no matter where you start.
+
+ +

 

+

Constraints:

+ +
    +
  • n == gas.length == cost.length
  • +
  • 1 <= n <= 105
  • +
  • 0 <= gas[i], cost[i] <= 104
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0138-copy-list-with-random-pointer/0138-copy-list-with-random-pointer.java b/leetcode/leetcode/0138-copy-list-with-random-pointer/0138-copy-list-with-random-pointer.java new file mode 100644 index 0000000..6b26a56 --- /dev/null +++ b/leetcode/leetcode/0138-copy-list-with-random-pointer/0138-copy-list-with-random-pointer.java @@ -0,0 +1,40 @@ +/* +// Definition for a Node. +class Node { + int val; + Node next; + Node random; + + public Node(int val) { + this.val = val; + this.next = null; + this.random = null; + } +} +*/ + +class Solution { + public Node copyRandomList(Node head) { + // Approach 1: HashMap + + HashMap map = new HashMap<>(); + Node temp = head; + Node res = new Node(0); + Node temp2 = res; + while(temp!=null){ + res.next = new Node(temp.val); + res = res.next; + map.put(temp,res); + temp = temp.next; + } + temp = head; + res = temp2.next; + while(temp!=null){ + res.random = map.get(temp.random); + temp = temp.next; + res = res.next; + } + return temp2.next; + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0138-copy-list-with-random-pointer/NOTES.md b/leetcode/leetcode/0138-copy-list-with-random-pointer/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0138-copy-list-with-random-pointer/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0138-copy-list-with-random-pointer/README.md b/leetcode/leetcode/0138-copy-list-with-random-pointer/README.md new file mode 100644 index 0000000..e428e5a --- /dev/null +++ b/leetcode/leetcode/0138-copy-list-with-random-pointer/README.md @@ -0,0 +1,49 @@ +

138. Copy List with Random Pointer

Medium


A linked list of length n is given such that each node contains an additional random pointer, which could point to any node in the list, or null.

+ +

Construct a deep copy of the list. The deep copy should consist of exactly n brand new nodes, where each new node has its value set to the value of its corresponding original node. Both the next and random pointer of the new nodes should point to new nodes in the copied list such that the pointers in the original list and copied list represent the same list state. None of the pointers in the new list should point to nodes in the original list.

+ +

For example, if there are two nodes X and Y in the original list, where X.random --> Y, then for the corresponding two nodes x and y in the copied list, x.random --> y.

+ +

Return the head of the copied linked list.

+ +

The linked list is represented in the input/output as a list of n nodes. Each node is represented as a pair of [val, random_index] where:

+ +
    +
  • val: an integer representing Node.val
  • +
  • random_index: the index of the node (range from 0 to n-1) that the random pointer points to, or null if it does not point to any node.
  • +
+ +

Your code will only be given the head of the original linked list.

+ +

 

+

Example 1:

+ +
+Input: head = [[7,null],[13,0],[11,4],[10,2],[1,0]]
+Output: [[7,null],[13,0],[11,4],[10,2],[1,0]]
+
+ +

Example 2:

+ +
+Input: head = [[1,1],[2,1]]
+Output: [[1,1],[2,1]]
+
+ +

Example 3:

+ +

+ +
+Input: head = [[3,null],[3,0],[3,null]]
+Output: [[3,null],[3,0],[3,null]]
+
+ +

 

+

Constraints:

+ +
    +
  • 0 <= n <= 1000
  • +
  • -104 <= Node.val <= 104
  • +
  • Node.random is null or is pointing to some node in the linked list.
  • +
diff --git a/leetcode/leetcode/0141-linked-list-cycle/0141-linked-list-cycle.java b/leetcode/leetcode/0141-linked-list-cycle/0141-linked-list-cycle.java new file mode 100644 index 0000000..44833e5 --- /dev/null +++ b/leetcode/leetcode/0141-linked-list-cycle/0141-linked-list-cycle.java @@ -0,0 +1,25 @@ +/** + * Definition for singly-linked list. + * class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ +public class Solution { + public boolean hasCycle(ListNode head) { + if(head == null || head.next == null) return false; + + ListNode slow = head; + ListNode fast = head; + while(fast!=null && fast.next!=null){ + slow = slow.next; + fast = fast.next.next; + if(slow == fast){ return true;} + } + return false; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0141-linked-list-cycle/NOTES.md b/leetcode/leetcode/0141-linked-list-cycle/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0141-linked-list-cycle/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0141-linked-list-cycle/README.md b/leetcode/leetcode/0141-linked-list-cycle/README.md new file mode 100644 index 0000000..c5ab825 --- /dev/null +++ b/leetcode/leetcode/0141-linked-list-cycle/README.md @@ -0,0 +1,42 @@ +

141. Linked List Cycle

Easy


Given head, the head of a linked list, determine if the linked list has a cycle in it.

+ +

There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the next pointer. Internally, pos is used to denote the index of the node that tail's next pointer is connected to. Note that pos is not passed as a parameter.

+ +

Return true if there is a cycle in the linked list. Otherwise, return false.

+ +

 

+

Example 1:

+ +
+Input: head = [3,2,0,-4], pos = 1
+Output: true
+Explanation: There is a cycle in the linked list, where the tail connects to the 1st node (0-indexed).
+
+ +

Example 2:

+ +
+Input: head = [1,2], pos = 0
+Output: true
+Explanation: There is a cycle in the linked list, where the tail connects to the 0th node.
+
+ +

Example 3:

+ +
+Input: head = [1], pos = -1
+Output: false
+Explanation: There is no cycle in the linked list.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of the nodes in the list is in the range [0, 104].
  • +
  • -105 <= Node.val <= 105
  • +
  • pos is -1 or a valid index in the linked-list.
  • +
+ +

 

+

Follow up: Can you solve it using O(1) (i.e. constant) memory?

diff --git a/leetcode/leetcode/0142-linked-list-cycle-ii/0142-linked-list-cycle-ii.java b/leetcode/leetcode/0142-linked-list-cycle-ii/0142-linked-list-cycle-ii.java new file mode 100644 index 0000000..fd8e9fc --- /dev/null +++ b/leetcode/leetcode/0142-linked-list-cycle-ii/0142-linked-list-cycle-ii.java @@ -0,0 +1,30 @@ +/** + * Definition for singly-linked list. + * class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ +public class Solution { + public ListNode detectCycle(ListNode head) { + ListNode slow = head; + ListNode fast = head; + while(fast!=null && fast.next!=null){ + slow = slow.next; + fast = fast.next.next; + if(slow==fast){ + slow = head; + while(slow!=fast){ + slow = slow.next; + fast = fast.next; + } + return slow; + } + } + return null; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0142-linked-list-cycle-ii/README.md b/leetcode/leetcode/0142-linked-list-cycle-ii/README.md new file mode 100644 index 0000000..5542812 --- /dev/null +++ b/leetcode/leetcode/0142-linked-list-cycle-ii/README.md @@ -0,0 +1,42 @@ +

142. Linked List Cycle II

Medium


Given the head of a linked list, return the node where the cycle begins. If there is no cycle, return null.

+ +

There is a cycle in a linked list if there is some node in the list that can be reached again by continuously following the next pointer. Internally, pos is used to denote the index of the node that tail's next pointer is connected to (0-indexed). It is -1 if there is no cycle. Note that pos is not passed as a parameter.

+ +

Do not modify the linked list.

+ +

 

+

Example 1:

+ +
+Input: head = [3,2,0,-4], pos = 1
+Output: tail connects to node index 1
+Explanation: There is a cycle in the linked list, where tail connects to the second node.
+
+ +

Example 2:

+ +
+Input: head = [1,2], pos = 0
+Output: tail connects to node index 0
+Explanation: There is a cycle in the linked list, where tail connects to the first node.
+
+ +

Example 3:

+ +
+Input: head = [1], pos = -1
+Output: no cycle
+Explanation: There is no cycle in the linked list.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of the nodes in the list is in the range [0, 104].
  • +
  • -105 <= Node.val <= 105
  • +
  • pos is -1 or a valid index in the linked-list.
  • +
+ +

 

+

Follow up: Can you solve it using O(1) (i.e. constant) memory?

diff --git a/leetcode/leetcode/0143-reorder-list/0143-reorder-list.java b/leetcode/leetcode/0143-reorder-list/0143-reorder-list.java new file mode 100644 index 0000000..f366c3b --- /dev/null +++ b/leetcode/leetcode/0143-reorder-list/0143-reorder-list.java @@ -0,0 +1,54 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public ListNode reverse(ListNode head){ + ListNode prev = null; + ListNode curr = head; + ListNode next = head.next; + while(next!=null){ + curr.next = prev; + prev = curr; + curr = next; + next = next.next; + } + curr.next = prev; + return curr; + } + public void reorderList(ListNode head) { + if(head == null || head.next == null ) return; + // use turtle rabbit method, slow-fast pointer to find middle of the linkedlist + ListNode slow = head; + ListNode fast = head.next; + while(fast!=null && fast.next!=null){ + slow = slow.next; // move once + fast = fast.next.next; // move twice faster + } + // Divide the linkedList into two parts; + ListNode secondHalf = slow.next; + // Set first half next to null to deattach the flist + slow.next = null; + // reverse the second half + secondHalf = reverse(secondHalf); + ListNode firstHalf = head; + ListNode temp = secondHalf; + // combinig both list + while(secondHalf!=null){ + temp = temp.next; + secondHalf.next = firstHalf.next; + firstHalf.next = secondHalf; + firstHalf = secondHalf.next; + secondHalf = temp; + } + return; + + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0143-reorder-list/README.md b/leetcode/leetcode/0143-reorder-list/README.md new file mode 100644 index 0000000..de26a46 --- /dev/null +++ b/leetcode/leetcode/0143-reorder-list/README.md @@ -0,0 +1,36 @@ +

143. Reorder List

Medium


You are given the head of a singly linked-list. The list can be represented as:

+ +
+L0 → L1 → … → Ln - 1 → Ln
+
+ +

Reorder the list to be on the following form:

+ +
+L0 → Ln → L1 → Ln - 1 → L2 → Ln - 2 → …
+
+ +

You may not modify the values in the list's nodes. Only nodes themselves may be changed.

+ +

 

+

Example 1:

+ +
+Input: head = [1,2,3,4]
+Output: [1,4,2,3]
+
+ +

Example 2:

+ +
+Input: head = [1,2,3,4,5]
+Output: [1,5,2,4,3]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is in the range [1, 5 * 104].
  • +
  • 1 <= Node.val <= 1000
  • +
diff --git a/leetcode/leetcode/0144-binary-tree-preorder-traversal/0144-binary-tree-preorder-traversal.java b/leetcode/leetcode/0144-binary-tree-preorder-traversal/0144-binary-tree-preorder-traversal.java new file mode 100644 index 0000000..eba91d1 --- /dev/null +++ b/leetcode/leetcode/0144-binary-tree-preorder-traversal/0144-binary-tree-preorder-traversal.java @@ -0,0 +1,36 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + List result = new ArrayList<>(); + + public void preOrder(TreeNode root){ + if(root == null) return; + + result.add(root.val); + + preOrder(root.left); + preOrder(root.right); + + + } + + + + public List preorderTraversal(TreeNode root) { + preOrder(root); + return result; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0144-binary-tree-preorder-traversal/0144-binary-tree-preorder-traversal.py b/leetcode/leetcode/0144-binary-tree-preorder-traversal/0144-binary-tree-preorder-traversal.py new file mode 100644 index 0000000..2a28860 --- /dev/null +++ b/leetcode/leetcode/0144-binary-tree-preorder-traversal/0144-binary-tree-preorder-traversal.py @@ -0,0 +1,13 @@ +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + def preorderTraversal(self, root: Optional[TreeNode]) -> List[int]: + if(root == None): + return [] + left = self.preorderTraversal(root.left) + right = self.preorderTraversal(root.right) + return [root.val] + left + right diff --git a/leetcode/leetcode/0144-binary-tree-preorder-traversal/README.md b/leetcode/leetcode/0144-binary-tree-preorder-traversal/README.md new file mode 100644 index 0000000..2a9e1c4 --- /dev/null +++ b/leetcode/leetcode/0144-binary-tree-preorder-traversal/README.md @@ -0,0 +1,53 @@ +

144. Binary Tree Preorder Traversal

Easy


Given the root of a binary tree, return the preorder traversal of its nodes' values.

+ +

 

+

Example 1:

+ +
+

Input: root = [1,null,2,3]

+ +

Output: [1,2,3]

+ +

Explanation:

+ +

+
+ +

Example 2:

+ +
+

Input: root = [1,2,3,4,5,null,8,null,null,6,7,9]

+ +

Output: [1,2,4,5,6,7,3,8,9]

+ +

Explanation:

+ +

+
+ +

Example 3:

+ +
+

Input: root = []

+ +

Output: []

+
+ +

Example 4:

+ +
+

Input: root = [1]

+ +

Output: [1]

+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 100].
  • +
  • -100 <= Node.val <= 100
  • +
+ +

 

+

Follow up: Recursive solution is trivial, could you do it iteratively?

diff --git a/leetcode/leetcode/0145-binary-tree-postorder-traversal/0145-binary-tree-postorder-traversal.java b/leetcode/leetcode/0145-binary-tree-postorder-traversal/0145-binary-tree-postorder-traversal.java new file mode 100644 index 0000000..71bf2b6 --- /dev/null +++ b/leetcode/leetcode/0145-binary-tree-postorder-traversal/0145-binary-tree-postorder-traversal.java @@ -0,0 +1,27 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public List postorderTraversal(TreeNode root) { + if(root == null) return new ArrayList(); + List list = new ArrayList<>(); + list.addAll(postorderTraversal(root.left)); + list.addAll(postorderTraversal(root.right)); + list.add(root.val); + return list; + + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0145-binary-tree-postorder-traversal/NOTES.md b/leetcode/leetcode/0145-binary-tree-postorder-traversal/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0145-binary-tree-postorder-traversal/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0145-binary-tree-postorder-traversal/README.md b/leetcode/leetcode/0145-binary-tree-postorder-traversal/README.md new file mode 100644 index 0000000..ac6ce4d --- /dev/null +++ b/leetcode/leetcode/0145-binary-tree-postorder-traversal/README.md @@ -0,0 +1,53 @@ +

145. Binary Tree Postorder Traversal

Easy


Given the root of a binary tree, return the postorder traversal of its nodes' values.

+ +

 

+

Example 1:

+ +
+

Input: root = [1,null,2,3]

+ +

Output: [3,2,1]

+ +

Explanation:

+ +

+
+ +

Example 2:

+ +
+

Input: root = [1,2,3,4,5,null,8,null,null,6,7,9]

+ +

Output: [4,6,7,5,2,9,8,3,1]

+ +

Explanation:

+ +

+
+ +

Example 3:

+ +
+

Input: root = []

+ +

Output: []

+
+ +

Example 4:

+ +
+

Input: root = [1]

+ +

Output: [1]

+
+ +

 

+

Constraints:

+ +
    +
  • The number of the nodes in the tree is in the range [0, 100].
  • +
  • -100 <= Node.val <= 100
  • +
+ +

 

+Follow up: Recursive solution is trivial, could you do it iteratively? \ No newline at end of file diff --git a/leetcode/leetcode/0146-lru-cache/0146-lru-cache.java b/leetcode/leetcode/0146-lru-cache/0146-lru-cache.java new file mode 100644 index 0000000..2884050 --- /dev/null +++ b/leetcode/leetcode/0146-lru-cache/0146-lru-cache.java @@ -0,0 +1,100 @@ +class LRUCache { + + class Node{ + Node next; + Node prev; + int val; + int key; + Node(int key,int data){ + this.key = key; + this.val = data; + next = null; + prev = null; + } + } + HashMap map; + Node head; + Node tail; + int size; + int currentSize; + /* add after head */ + private void add(Node node){ + Node prev = head; + Node next = head.next; + + node.next = next; + node.prev = prev; + + prev.next = node; + next.prev = node; + } + /* remove before tail */ + private void remove(){ + Node node = tail.prev; + Node prev = node.prev; + + tail.prev = prev; + prev.next = tail; + + } + private void remove(Node node){ + Node next = node.next; + Node prev = node.prev; + + node.next = null; + node.prev = null; + + prev.next = next; + next.prev = prev; + + } + + + + public LRUCache(int capacity) { + map = new HashMap<>(); + head = new Node(-11,-11); + tail = new Node(-11,-11); + head.next = tail; + tail.prev = head; + size = capacity; + currentSize = 0; + } + + public int get(int key) { + if(!map.containsKey(key)) return -1; + Node node = map.get(key); + int val = node.val; + remove(node); + map.remove(key); + currentSize--; + put(key,val); + return val; + } + + public void put(int key, int value) { + if(map.containsKey(key)){ + Node node = map.get(key); + map.remove(key); + remove(node); + currentSize--; + } + if(currentSize==size){ + currentSize--; + int key2 = tail.prev.key; + remove(); + map.remove(key2); + } + Node node = new Node(key,value); + map.put(key,node); + currentSize++; + add(node); + } +} + +/** + * Your LRUCache object will be instantiated and called as such: + * LRUCache obj = new LRUCache(capacity); + * int param_1 = obj.get(key); + * obj.put(key,value); + */ \ No newline at end of file diff --git a/leetcode/leetcode/0146-lru-cache/README.md b/leetcode/leetcode/0146-lru-cache/README.md new file mode 100644 index 0000000..ae892bc --- /dev/null +++ b/leetcode/leetcode/0146-lru-cache/README.md @@ -0,0 +1,44 @@ +

146. LRU Cache

Medium


Design a data structure that follows the constraints of a Least Recently Used (LRU) cache.

+ +

Implement the LRUCache class:

+ +
    +
  • LRUCache(int capacity) Initialize the LRU cache with positive size capacity.
  • +
  • int get(int key) Return the value of the key if the key exists, otherwise return -1.
  • +
  • void put(int key, int value) Update the value of the key if the key exists. Otherwise, add the key-value pair to the cache. If the number of keys exceeds the capacity from this operation, evict the least recently used key.
  • +
+ +

The functions get and put must each run in O(1) average time complexity.

+ +

 

+

Example 1:

+ +
Input
+["LRUCache", "put", "put", "get", "put", "get", "put", "get", "get", "get"]
+[[2], [1, 1], [2, 2], [1], [3, 3], [2], [4, 4], [1], [3], [4]]
+Output
+[null, null, null, 1, null, -1, null, -1, 3, 4]
+
+Explanation
+LRUCache lRUCache = new LRUCache(2);
+lRUCache.put(1, 1); // cache is {1=1}
+lRUCache.put(2, 2); // cache is {1=1, 2=2}
+lRUCache.get(1);    // return 1
+lRUCache.put(3, 3); // LRU key was 2, evicts key 2, cache is {1=1, 3=3}
+lRUCache.get(2);    // returns -1 (not found)
+lRUCache.put(4, 4); // LRU key was 1, evicts key 1, cache is {4=4, 3=3}
+lRUCache.get(1);    // return -1 (not found)
+lRUCache.get(3);    // return 3
+lRUCache.get(4);    // return 4
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= capacity <= 3000
  • +
  • 0 <= key <= 104
  • +
  • 0 <= value <= 105
  • +
  • At most 2 * 105 calls will be made to get and put.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0149-max-points-on-a-line/0149-max-points-on-a-line.java b/leetcode/leetcode/0149-max-points-on-a-line/0149-max-points-on-a-line.java new file mode 100644 index 0000000..96b1d89 --- /dev/null +++ b/leetcode/leetcode/0149-max-points-on-a-line/0149-max-points-on-a-line.java @@ -0,0 +1,23 @@ +class Solution { + public int maxPoints(int[][] points) { + int ans = 0; + for(int i = 0;i map = new HashMap<>(); + for(int j = 0;j149. Max Points on a Line

Hard


Given an array of points where points[i] = [xi, yi] represents a point on the X-Y plane, return the maximum number of points that lie on the same straight line.

+ +

 

+

Example 1:

+ +
+Input: points = [[1,1],[2,2],[3,3]]
+Output: 3
+
+ +

Example 2:

+ +
+Input: points = [[1,1],[3,2],[5,3],[4,1],[2,3],[1,4]]
+Output: 4
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= points.length <= 300
  • +
  • points[i].length == 2
  • +
  • -104 <= xi, yi <= 104
  • +
  • All the points are unique.
  • +
diff --git a/leetcode/leetcode/0150-evaluate-reverse-polish-notation/0150-evaluate-reverse-polish-notation.java b/leetcode/leetcode/0150-evaluate-reverse-polish-notation/0150-evaluate-reverse-polish-notation.java new file mode 100644 index 0000000..e565186 --- /dev/null +++ b/leetcode/leetcode/0150-evaluate-reverse-polish-notation/0150-evaluate-reverse-polish-notation.java @@ -0,0 +1,29 @@ +class Solution { + public int evalRPN(String[] tokens) { + Stack s = new Stack<>(); + int ans = 0; + for(int i = 0;i150. Evaluate Reverse Polish Notation

Medium


You are given an array of strings tokens that represents an arithmetic expression in a Reverse Polish Notation.

+ +

Evaluate the expression. Return an integer that represents the value of the expression.

+ +

Note that:

+ +
    +
  • The valid operators are '+', '-', '*', and '/'.
  • +
  • Each operand may be an integer or another expression.
  • +
  • The division between two integers always truncates toward zero.
  • +
  • There will not be any division by zero.
  • +
  • The input represents a valid arithmetic expression in a reverse polish notation.
  • +
  • The answer and all the intermediate calculations can be represented in a 32-bit integer.
  • +
+ +

 

+

Example 1:

+ +
Input: tokens = ["2","1","+","3","*"]
+Output: 9
+Explanation: ((2 + 1) * 3) = 9
+
+ +

Example 2:

+ +
Input: tokens = ["4","13","5","/","+"]
+Output: 6
+Explanation: (4 + (13 / 5)) = 6
+
+ +

Example 3:

+ +
Input: tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]
+Output: 22
+Explanation: ((10 * (6 / ((9 + 3) * -11))) + 17) + 5
+= ((10 * (6 / (12 * -11))) + 17) + 5
+= ((10 * (6 / -132)) + 17) + 5
+= ((10 * 0) + 17) + 5
+= (0 + 17) + 5
+= 17 + 5
+= 22
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= tokens.length <= 104
  • +
  • tokens[i] is either an operator: "+", "-", "*", or "/", or an integer in the range [-200, 200].
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0151-reverse-words-in-a-string/0151-reverse-words-in-a-string.java b/leetcode/leetcode/0151-reverse-words-in-a-string/0151-reverse-words-in-a-string.java new file mode 100644 index 0000000..dbb6631 --- /dev/null +++ b/leetcode/leetcode/0151-reverse-words-in-a-string/0151-reverse-words-in-a-string.java @@ -0,0 +1,22 @@ +class Solution { + public String reverseWords(String s) { + int i = s.length() -1; + StringBuilder res = new StringBuilder(); + while(i>=0){ + while(i>=0 && s.charAt(i)==' ') i--; + int j = i; + if(i<0) break; + while(i>=0 && s.charAt(i)!=' ') i--; + if(res.length() == 0){ + res.append(s.substring(i+1,j+1)); + } + else{ + res.append(" "); + res.append(s.substring(i+1,j+1)); + } + } + + return res.toString(); + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0151-reverse-words-in-a-string/NOTES.md b/leetcode/leetcode/0151-reverse-words-in-a-string/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0151-reverse-words-in-a-string/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0151-reverse-words-in-a-string/README.md b/leetcode/leetcode/0151-reverse-words-in-a-string/README.md new file mode 100644 index 0000000..87b8c94 --- /dev/null +++ b/leetcode/leetcode/0151-reverse-words-in-a-string/README.md @@ -0,0 +1,41 @@ +

151. Reverse Words in a String

Medium


Given an input string s, reverse the order of the words.

+ +

A word is defined as a sequence of non-space characters. The words in s will be separated by at least one space.

+ +

Return a string of the words in reverse order concatenated by a single space.

+ +

Note that s may contain leading or trailing spaces or multiple spaces between two words. The returned string should only have a single space separating the words. Do not include any extra spaces.

+ +

 

+

Example 1:

+ +
Input: s = "the sky is blue"
+Output: "blue is sky the"
+
+ +

Example 2:

+ +
Input: s = "  hello world  "
+Output: "world hello"
+Explanation: Your reversed string should not contain leading or trailing spaces.
+
+ +

Example 3:

+ +
Input: s = "a good   example"
+Output: "example good a"
+Explanation: You need to reduce multiple spaces between two words to a single space in the reversed string.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 104
  • +
  • s contains English letters (upper-case and lower-case), digits, and spaces ' '.
  • +
  • There is at least one word in s.
  • +
+ +

 

+

Follow-up: If the string data type is mutable in your language, can you solve it in-place with O(1) extra space?

+
\ No newline at end of file diff --git a/leetcode/leetcode/0152-maximum-product-subarray/0152-maximum-product-subarray.java b/leetcode/leetcode/0152-maximum-product-subarray/0152-maximum-product-subarray.java new file mode 100644 index 0000000..5d0d38d --- /dev/null +++ b/leetcode/leetcode/0152-maximum-product-subarray/0152-maximum-product-subarray.java @@ -0,0 +1,16 @@ +class Solution { + public int maxProduct(int[] nums) { + int ans = Integer.MIN_VALUE; + int prefix = 1; + int suffix = 1; + for(int i = 0;i152. Maximum Product Subarray

Medium


Given an integer array nums, find a subarray that has the largest product, and return the product.

+ +

The test cases are generated so that the answer will fit in a 32-bit integer.

+ +

 

+

Example 1:

+ +
+Input: nums = [2,3,-2,4]
+Output: 6
+Explanation: [2,3] has the largest product 6.
+
+ +

Example 2:

+ +
+Input: nums = [-2,0,-1]
+Output: 0
+Explanation: The result cannot be 2, because [-2,-1] is not a subarray.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 2 * 104
  • +
  • -10 <= nums[i] <= 10
  • +
  • The product of any subarray of nums is guaranteed to fit in a 32-bit integer.
  • +
diff --git a/leetcode/leetcode/0153-find-minimum-in-rotated-sorted-array/0153-find-minimum-in-rotated-sorted-array.java b/leetcode/leetcode/0153-find-minimum-in-rotated-sorted-array/0153-find-minimum-in-rotated-sorted-array.java new file mode 100644 index 0000000..0566f12 --- /dev/null +++ b/leetcode/leetcode/0153-find-minimum-in-rotated-sorted-array/0153-find-minimum-in-rotated-sorted-array.java @@ -0,0 +1,17 @@ +class Solution { + public int findMin(int[] nums) { + int low = 0; + int high = nums.length - 1; + + while(lownums[high]){ + low = mid+1; + }else { + high = mid; + } + } + return nums[low]; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0153-find-minimum-in-rotated-sorted-array/0153-find-minimum-in-rotated-sorted-array.py b/leetcode/leetcode/0153-find-minimum-in-rotated-sorted-array/0153-find-minimum-in-rotated-sorted-array.py new file mode 100644 index 0000000..1ef4ae6 --- /dev/null +++ b/leetcode/leetcode/0153-find-minimum-in-rotated-sorted-array/0153-find-minimum-in-rotated-sorted-array.py @@ -0,0 +1,13 @@ +class Solution: + def findMin(self, nums: List[int]) -> int: + left = 0 + right = len(nums) - 1 + while(left153. Find Minimum in Rotated Sorted Array

Medium


Suppose an array of length n sorted in ascending order is rotated between 1 and n times. For example, the array nums = [0,1,2,4,5,6,7] might become:

+ +
    +
  • [4,5,6,7,0,1,2] if it was rotated 4 times.
  • +
  • [0,1,2,4,5,6,7] if it was rotated 7 times.
  • +
+ +

Notice that rotating an array [a[0], a[1], a[2], ..., a[n-1]] 1 time results in the array [a[n-1], a[0], a[1], a[2], ..., a[n-2]].

+ +

Given the sorted rotated array nums of unique elements, return the minimum element of this array.

+ +

You must write an algorithm that runs in O(log n) time.

+ +

 

+

Example 1:

+ +
+Input: nums = [3,4,5,1,2]
+Output: 1
+Explanation: The original array was [1,2,3,4,5] rotated 3 times.
+
+ +

Example 2:

+ +
+Input: nums = [4,5,6,7,0,1,2]
+Output: 0
+Explanation: The original array was [0,1,2,4,5,6,7] and it was rotated 4 times.
+
+ +

Example 3:

+ +
+Input: nums = [11,13,15,17]
+Output: 11
+Explanation: The original array was [11,13,15,17] and it was rotated 4 times. 
+
+ +

 

+

Constraints:

+ +
    +
  • n == nums.length
  • +
  • 1 <= n <= 5000
  • +
  • -5000 <= nums[i] <= 5000
  • +
  • All the integers of nums are unique.
  • +
  • nums is sorted and rotated between 1 and n times.
  • +
diff --git a/leetcode/leetcode/0155-min-stack/0155-min-stack.java b/leetcode/leetcode/0155-min-stack/0155-min-stack.java new file mode 100644 index 0000000..ebf3a86 --- /dev/null +++ b/leetcode/leetcode/0155-min-stack/0155-min-stack.java @@ -0,0 +1,51 @@ +class MinStack { + + class Pair{ + int value; + int min; + + Pair(int v, int m){ + this.value = v; + this.min = m; + } + } + + Stack s; + + // first val - value + // second value - min + public MinStack() { + s = new Stack<>(); + } + + public void push(int val) { + if(s.isEmpty()){ + s.push(new Pair(val,val)); + }else{ + Pair p = new Pair(val, Math.min(s.peek().min,val)); + s.push(p); + } + + } + + public void pop() { + s.pop(); + } + + public int top() { + return s.peek().value; + } + + public int getMin() { + return s.peek().min; + } +} + +/** + * Your MinStack object will be instantiated and called as such: + * MinStack obj = new MinStack(); + * obj.push(val); + * obj.pop(); + * int param_3 = obj.top(); + * int param_4 = obj.getMin(); + */ \ No newline at end of file diff --git a/leetcode/leetcode/0155-min-stack/NOTES.md b/leetcode/leetcode/0155-min-stack/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0155-min-stack/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0155-min-stack/README.md b/leetcode/leetcode/0155-min-stack/README.md new file mode 100644 index 0000000..3902f5d --- /dev/null +++ b/leetcode/leetcode/0155-min-stack/README.md @@ -0,0 +1,44 @@ +

155. Min Stack

Medium


Design a stack that supports push, pop, top, and retrieving the minimum element in constant time.

+ +

Implement the MinStack class:

+ +
    +
  • MinStack() initializes the stack object.
  • +
  • void push(int val) pushes the element val onto the stack.
  • +
  • void pop() removes the element on the top of the stack.
  • +
  • int top() gets the top element of the stack.
  • +
  • int getMin() retrieves the minimum element in the stack.
  • +
+ +

You must implement a solution with O(1) time complexity for each function.

+ +

 

+

Example 1:

+ +
+Input
+["MinStack","push","push","push","getMin","pop","top","getMin"]
+[[],[-2],[0],[-3],[],[],[],[]]
+
+Output
+[null,null,null,null,-3,null,0,-2]
+
+Explanation
+MinStack minStack = new MinStack();
+minStack.push(-2);
+minStack.push(0);
+minStack.push(-3);
+minStack.getMin(); // return -3
+minStack.pop();
+minStack.top();    // return 0
+minStack.getMin(); // return -2
+
+ +

 

+

Constraints:

+ +
    +
  • -231 <= val <= 231 - 1
  • +
  • Methods pop, top and getMin operations will always be called on non-empty stacks.
  • +
  • At most 3 * 104 calls will be made to push, pop, top, and getMin.
  • +
diff --git a/leetcode/leetcode/0160-intersection-of-two-linked-lists/0160-intersection-of-two-linked-lists.java b/leetcode/leetcode/0160-intersection-of-two-linked-lists/0160-intersection-of-two-linked-lists.java new file mode 100644 index 0000000..fa89ad9 --- /dev/null +++ b/leetcode/leetcode/0160-intersection-of-two-linked-lists/0160-intersection-of-two-linked-lists.java @@ -0,0 +1,59 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { + * val = x; + * next = null; + * } + * } + */ +public class Solution { + public int getSize(ListNode head){ + int size = 0; + ListNode temp = head; + while(temp!=null){ + size++; + temp = temp.next; + } + return size; + } + + public ListNode getNthNode(ListNode head, int index){ + ListNode temp = head; + while(index!=0){ + temp = temp.next; + index--; + } + return temp; + } + public ListNode getIntersectionNode(ListNode headA, ListNode headB) { + // int size1 = getSize(headA); + // int size2 = getSize(headB); + + // int diff = Math.abs(size1 - size2); + + // if(size1>size2){ + // headA = getNthNode(headA, diff); + // }else{ + // headB = getNthNode(headB, diff); + // } + + // while(headA!=null && headB != null && headA!=headB){ + // headA = headA.next; + // headB = headB.next; + // } + + // return headA; + + + ListNode temp1 = headA; + ListNode temp2 = headB; + while(temp1!=temp2){ + temp1 = temp1==null ? headA : temp1.next; + temp2 = temp2 == null? headB : temp2.next; + } + return temp1; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0160-intersection-of-two-linked-lists/README.md b/leetcode/leetcode/0160-intersection-of-two-linked-lists/README.md new file mode 100644 index 0000000..2ea40f7 --- /dev/null +++ b/leetcode/leetcode/0160-intersection-of-two-linked-lists/README.md @@ -0,0 +1,67 @@ +

160. Intersection of Two Linked Lists

Easy


Given the heads of two singly linked-lists headA and headB, return the node at which the two lists intersect. If the two linked lists have no intersection at all, return null.

+ +

For example, the following two linked lists begin to intersect at node c1:

+ +

The test cases are generated such that there are no cycles anywhere in the entire linked structure.

+ +

Note that the linked lists must retain their original structure after the function returns.

+ +

Custom Judge:

+ +

The inputs to the judge are given as follows (your program is not given these inputs):

+ +
    +
  • intersectVal - The value of the node where the intersection occurs. This is 0 if there is no intersected node.
  • +
  • listA - The first linked list.
  • +
  • listB - The second linked list.
  • +
  • skipA - The number of nodes to skip ahead in listA (starting from the head) to get to the intersected node.
  • +
  • skipB - The number of nodes to skip ahead in listB (starting from the head) to get to the intersected node.
  • +
+ +

The judge will then create the linked structure based on these inputs and pass the two heads, headA and headB to your program. If you correctly return the intersected node, then your solution will be accepted.

+ +

 

+

Example 1:

+ +
+Input: intersectVal = 8, listA = [4,1,8,4,5], listB = [5,6,1,8,4,5], skipA = 2, skipB = 3
+Output: Intersected at '8'
+Explanation: The intersected node's value is 8 (note that this must not be 0 if the two lists intersect).
+From the head of A, it reads as [4,1,8,4,5]. From the head of B, it reads as [5,6,1,8,4,5]. There are 2 nodes before the intersected node in A; There are 3 nodes before the intersected node in B.
+- Note that the intersected node's value is not 1 because the nodes with value 1 in A and B (2nd node in A and 3rd node in B) are different node references. In other words, they point to two different locations in memory, while the nodes with value 8 in A and B (3rd node in A and 4th node in B) point to the same location in memory.
+
+ +

Example 2:

+ +
+Input: intersectVal = 2, listA = [1,9,1,2,4], listB = [3,2,4], skipA = 3, skipB = 1
+Output: Intersected at '2'
+Explanation: The intersected node's value is 2 (note that this must not be 0 if the two lists intersect).
+From the head of A, it reads as [1,9,1,2,4]. From the head of B, it reads as [3,2,4]. There are 3 nodes before the intersected node in A; There are 1 node before the intersected node in B.
+
+ +

Example 3:

+ +
+Input: intersectVal = 0, listA = [2,6,4], listB = [1,5], skipA = 3, skipB = 2
+Output: No intersection
+Explanation: From the head of A, it reads as [2,6,4]. From the head of B, it reads as [1,5]. Since the two lists do not intersect, intersectVal must be 0, while skipA and skipB can be arbitrary values.
+Explanation: The two lists do not intersect, so return null.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes of listA is in the m.
  • +
  • The number of nodes of listB is in the n.
  • +
  • 1 <= m, n <= 3 * 104
  • +
  • 1 <= Node.val <= 105
  • +
  • 0 <= skipA <= m
  • +
  • 0 <= skipB <= n
  • +
  • intersectVal is 0 if listA and listB do not intersect.
  • +
  • intersectVal == listA[skipA] == listB[skipB] if listA and listB intersect.
  • +
+ +

 

+Follow up: Could you write a solution that runs in O(m + n) time and use only O(1) memory? \ No newline at end of file diff --git a/leetcode/leetcode/0162-find-peak-element/0162-find-peak-element.java b/leetcode/leetcode/0162-find-peak-element/0162-find-peak-element.java new file mode 100644 index 0000000..04d5c59 --- /dev/null +++ b/leetcode/leetcode/0162-find-peak-element/0162-find-peak-element.java @@ -0,0 +1,22 @@ +class Solution { + public int findPeakElement(int[] nums) { + int N = nums.length; + + if(N == 1) return 0; + if(nums[0]>nums[1]) return 0; + if(nums[N-1]>nums[N-2]) return N-1; + + int low = 1; + int high = N-2; + + while(low<=high){ + int mid = low + (high - low)/2; + + if(nums[mid]>nums[mid-1] && nums[mid]>nums[mid+1]) return mid; + else if(nums[mid]>nums[mid-1]) low = mid+1; + else high = mid - 1; + + } + return -1; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0162-find-peak-element/README.md b/leetcode/leetcode/0162-find-peak-element/README.md new file mode 100644 index 0000000..511544c --- /dev/null +++ b/leetcode/leetcode/0162-find-peak-element/README.md @@ -0,0 +1,31 @@ +

162. Find Peak Element

Medium


A peak element is an element that is strictly greater than its neighbors.

+ +

Given a 0-indexed integer array nums, find a peak element, and return its index. If the array contains multiple peaks, return the index to any of the peaks.

+ +

You may imagine that nums[-1] = nums[n] = -∞. In other words, an element is always considered to be strictly greater than a neighbor that is outside the array.

+ +

You must write an algorithm that runs in O(log n) time.

+ +

 

+

Example 1:

+ +
+Input: nums = [1,2,3,1]
+Output: 2
+Explanation: 3 is a peak element and your function should return the index number 2.
+ +

Example 2:

+ +
+Input: nums = [1,2,1,3,5,6,4]
+Output: 5
+Explanation: Your function can return either index number 1 where the peak element is 2, or index number 5 where the peak element is 6.
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 1000
  • +
  • -231 <= nums[i] <= 231 - 1
  • +
  • nums[i] != nums[i + 1] for all valid i.
  • +
diff --git a/leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/0167-two-sum-ii-input-array-is-sorted.java b/leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/0167-two-sum-ii-input-array-is-sorted.java new file mode 100644 index 0000000..fa71809 --- /dev/null +++ b/leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/0167-two-sum-ii-input-array-is-sorted.java @@ -0,0 +1,18 @@ +class Solution { + public int[] twoSum(int[] numbers, int target) { + int low = 0; + int high = numbers.length - 1; + int sum = numbers[low]+numbers[high]; + while(sum!=target){ + + if(sum>target){ + high--; + }else{ + low++; + } + sum = numbers[low]+numbers[high]; + } + int[] ans = {low+1,high+1}; + return ans; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/NOTES.md b/leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/README.md b/leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/README.md new file mode 100644 index 0000000..9cace0e --- /dev/null +++ b/leetcode/leetcode/0167-two-sum-ii-input-array-is-sorted/README.md @@ -0,0 +1,43 @@ +

167. Two Sum II - Input Array Is Sorted

Medium


Given a 1-indexed array of integers numbers that is already sorted in non-decreasing order, find two numbers such that they add up to a specific target number. Let these two numbers be numbers[index1] and numbers[index2] where 1 <= index1 < index2 <= numbers.length.

+ +

Return the indices of the two numbers, index1 and index2, added by one as an integer array [index1, index2] of length 2.

+ +

The tests are generated such that there is exactly one solution. You may not use the same element twice.

+ +

Your solution must use only constant extra space.

+ +

 

+

Example 1:

+ +
+Input: numbers = [2,7,11,15], target = 9
+Output: [1,2]
+Explanation: The sum of 2 and 7 is 9. Therefore, index1 = 1, index2 = 2. We return [1, 2].
+
+ +

Example 2:

+ +
+Input: numbers = [2,3,4], target = 6
+Output: [1,3]
+Explanation: The sum of 2 and 4 is 6. Therefore index1 = 1, index2 = 3. We return [1, 3].
+
+ +

Example 3:

+ +
+Input: numbers = [-1,0], target = -1
+Output: [1,2]
+Explanation: The sum of -1 and 0 is -1. Therefore index1 = 1, index2 = 2. We return [1, 2].
+
+ +

 

+

Constraints:

+ +
    +
  • 2 <= numbers.length <= 3 * 104
  • +
  • -1000 <= numbers[i] <= 1000
  • +
  • numbers is sorted in non-decreasing order.
  • +
  • -1000 <= target <= 1000
  • +
  • The tests are generated such that there is exactly one solution.
  • +
diff --git a/leetcode/leetcode/0169-majority-element/0169-majority-element.java b/leetcode/leetcode/0169-majority-element/0169-majority-element.java new file mode 100644 index 0000000..9e6fb70 --- /dev/null +++ b/leetcode/leetcode/0169-majority-element/0169-majority-element.java @@ -0,0 +1,14 @@ +class Solution { + public int majorityElement(int[] nums) { + int element = nums[0]; + int count = 1; + for(int i = 1;i169. Majority Element

Easy


Given an array nums of size n, return the majority element.

+ +

The majority element is the element that appears more than ⌊n / 2⌋ times. You may assume that the majority element always exists in the array.

+ +

 

+

Example 1:

+
Input: nums = [3,2,3]
+Output: 3
+

Example 2:

+
Input: nums = [2,2,1,1,1,2,2]
+Output: 2
+
+

 

+

Constraints:

+ +
    +
  • n == nums.length
  • +
  • 1 <= n <= 5 * 104
  • +
  • -109 <= nums[i] <= 109
  • +
+ +

 

+Follow-up: Could you solve the problem in linear time and in O(1) space? \ No newline at end of file diff --git a/leetcode/leetcode/0175-combine-two-tables/0175-combine-two-tables.sql b/leetcode/leetcode/0175-combine-two-tables/0175-combine-two-tables.sql new file mode 100644 index 0000000..85cbbea --- /dev/null +++ b/leetcode/leetcode/0175-combine-two-tables/0175-combine-two-tables.sql @@ -0,0 +1,3 @@ +# Write your MySQL query statement below +# Write your MySQL query statement below +SELECT p.firstName, p.lastName, a.city, a.state FROM Person p LEFT JOIN Address a ON p.personID = a.personID; \ No newline at end of file diff --git a/leetcode/leetcode/0175-combine-two-tables/NOTES.md b/leetcode/leetcode/0175-combine-two-tables/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0175-combine-two-tables/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0176-second-highest-salary/0176-second-highest-salary.sql b/leetcode/leetcode/0176-second-highest-salary/0176-second-highest-salary.sql new file mode 100644 index 0000000..c74d1a7 --- /dev/null +++ b/leetcode/leetcode/0176-second-highest-salary/0176-second-highest-salary.sql @@ -0,0 +1,3 @@ +SELECT max(Salary) SecondHighestSalary +FROM Employee +WHERE Salary < (SELECT max(Salary) FROM Employee) \ No newline at end of file diff --git a/leetcode/leetcode/0176-second-highest-salary/README.md b/leetcode/leetcode/0176-second-highest-salary/README.md new file mode 100644 index 0000000..aef209c --- /dev/null +++ b/leetcode/leetcode/0176-second-highest-salary/README.md @@ -0,0 +1,55 @@ +

176. Second Highest Salary

Medium


Table: Employee

+ +
+-------------+------+
+| Column Name | Type |
++-------------+------+
+| id          | int  |
+| salary      | int  |
++-------------+------+
+id is the primary key (column with unique values) for this table.
+Each row of this table contains information about the salary of an employee.
+
+ +

 

+ +

Write a solution to find the second highest distinct salary from the Employee table. If there is no second highest salary, return null (return None in Pandas).

+ +

The result format is in the following example.

+ +

 

+

Example 1:

+ +
Input: 
+Employee table:
++----+--------+
+| id | salary |
++----+--------+
+| 1  | 100    |
+| 2  | 200    |
+| 3  | 300    |
++----+--------+
+Output: 
++---------------------+
+| SecondHighestSalary |
++---------------------+
+| 200                 |
++---------------------+
+
+ +

Example 2:

+ +
Input: 
+Employee table:
++----+--------+
+| id | salary |
++----+--------+
+| 1  | 100    |
++----+--------+
+Output: 
++---------------------+
+| SecondHighestSalary |
++---------------------+
+| null                |
++---------------------+
+
+
\ No newline at end of file diff --git a/leetcode/leetcode/0177-nth-highest-salary/README.md b/leetcode/leetcode/0177-nth-highest-salary/README.md new file mode 100644 index 0000000..26cbcd0 --- /dev/null +++ b/leetcode/leetcode/0177-nth-highest-salary/README.md @@ -0,0 +1,57 @@ +

177. Nth Highest Salary

Medium


Table: Employee

+ +
+-------------+------+
+| Column Name | Type |
++-------------+------+
+| id          | int  |
+| salary      | int  |
++-------------+------+
+id is the primary key (column with unique values) for this table.
+Each row of this table contains information about the salary of an employee.
+
+ +

 

+ +

Write a solution to find the nth highest salary from the Employee table. If there is no nth highest salary, return null.

+ +

The result format is in the following example.

+ +

 

+

Example 1:

+ +
Input: 
+Employee table:
++----+--------+
+| id | salary |
++----+--------+
+| 1  | 100    |
+| 2  | 200    |
+| 3  | 300    |
++----+--------+
+n = 2
+Output: 
++------------------------+
+| getNthHighestSalary(2) |
++------------------------+
+| 200                    |
++------------------------+
+
+ +

Example 2:

+ +
Input: 
+Employee table:
++----+--------+
+| id | salary |
++----+--------+
+| 1  | 100    |
++----+--------+
+n = 2
+Output: 
++------------------------+
+| getNthHighestSalary(2) |
++------------------------+
+| null                   |
++------------------------+
+
+
\ No newline at end of file diff --git a/leetcode/leetcode/0179-largest-number/0179-largest-number.java b/leetcode/leetcode/0179-largest-number/0179-largest-number.java new file mode 100644 index 0000000..ac904f2 --- /dev/null +++ b/leetcode/leetcode/0179-largest-number/0179-largest-number.java @@ -0,0 +1,19 @@ +class Solution { + public String largestNumber(int[] nums) { + String[] arr = new String[nums.length]; + for(int i=0;i (b + a).compareTo(a + b)); + + if (arr[0].equals("0")) { + return "0"; + } + StringBuilder largestNum = new StringBuilder(); + for (String numStr : arr) { + largestNum.append(numStr); + } + + return largestNum.toString(); + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0179-largest-number/NOTES.md b/leetcode/leetcode/0179-largest-number/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0179-largest-number/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0179-largest-number/README.md b/leetcode/leetcode/0179-largest-number/README.md new file mode 100644 index 0000000..2d1671b --- /dev/null +++ b/leetcode/leetcode/0179-largest-number/README.md @@ -0,0 +1,25 @@ +

179. Largest Number

Medium


Given a list of non-negative integers nums, arrange them such that they form the largest number and return it.

+ +

Since the result may be very large, so you need to return a string instead of an integer.

+ +

 

+

Example 1:

+ +
Input: nums = [10,2]
+Output: "210"
+
+ +

Example 2:

+ +
Input: nums = [3,30,34,5,9]
+Output: "9534330"
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 100
  • +
  • 0 <= nums[i] <= 109
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0187-repeated-dna-sequences/0187-repeated-dna-sequences.java b/leetcode/leetcode/0187-repeated-dna-sequences/0187-repeated-dna-sequences.java new file mode 100644 index 0000000..245aba1 --- /dev/null +++ b/leetcode/leetcode/0187-repeated-dna-sequences/0187-repeated-dna-sequences.java @@ -0,0 +1,31 @@ +class Solution { + public List findRepeatedDnaSequences(String s) { + List result = new ArrayList<>(); + if(s.length()<10) return result; + HashMap map = new HashMap<>(); + int MOD = 1000000000 + 7; + int P = 7; + int M = s.length(); + long d = 1; + long rollingHashValue = 0; + for(int i = 0;i<10;i++){ + rollingHashValue = (rollingHashValue * P + (int) s.charAt(i)) % MOD; + d = (d * P) % MOD; + } + + map.put(rollingHashValue,1); + for(int i = 0; i+10 < s.length();i++){ + + rollingHashValue = (rollingHashValue * P + s.charAt(i+10) - s.charAt(i)*d) % MOD; + if(rollingHashValue<0){ + rollingHashValue+=MOD; + } + map.put(rollingHashValue,map.getOrDefault(rollingHashValue,0)+1); + if(map.getOrDefault(rollingHashValue,0) == 2){ // very less possibility of hash collision hence adding blindly without checking + result.add(s.substring(i+1,i+11)); + } + } + return result; + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0187-repeated-dna-sequences/README.md b/leetcode/leetcode/0187-repeated-dna-sequences/README.md new file mode 100644 index 0000000..90f8069 --- /dev/null +++ b/leetcode/leetcode/0187-repeated-dna-sequences/README.md @@ -0,0 +1,25 @@ +

187. Repeated DNA Sequences

Medium


The DNA sequence is composed of a series of nucleotides abbreviated as 'A', 'C', 'G', and 'T'.

+ +
    +
  • For example, "ACGAATTCCG" is a DNA sequence.
  • +
+ +

When studying DNA, it is useful to identify repeated sequences within the DNA.

+ +

Given a string s that represents a DNA sequence, return all the 10-letter-long sequences (substrings) that occur more than once in a DNA molecule. You may return the answer in any order.

+ +

 

+

Example 1:

+
Input: s = "AAAAACCCCCAAAAACCCCCCAAAAAGGGTTT"
+Output: ["AAAAACCCCC","CCCCCAAAAA"]
+

Example 2:

+
Input: s = "AAAAAAAAAAAAA"
+Output: ["AAAAAAAAAA"]
+
+

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 105
  • +
  • s[i] is either 'A', 'C', 'G', or 'T'.
  • +
diff --git a/leetcode/leetcode/0189-rotate-array/0189-rotate-array.java b/leetcode/leetcode/0189-rotate-array/0189-rotate-array.java new file mode 100644 index 0000000..97c4092 --- /dev/null +++ b/leetcode/leetcode/0189-rotate-array/0189-rotate-array.java @@ -0,0 +1,19 @@ +class Solution { + public void swap(int [] nums, int i, int j){ + int temp = nums[i]; + nums[i] = nums[j]; + nums[j] = temp; + } + public void reverse(int[] nums, int start, int end){ + while(start=nums.length) k = k%nums.length; + if(k==0) return; + reverse(nums,0,nums.length-1); + reverse(nums,0,k-1); + reverse(nums,k,nums.length-1); + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0189-rotate-array/NOTES.md b/leetcode/leetcode/0189-rotate-array/NOTES.md new file mode 100644 index 0000000..c2f63e9 --- /dev/null +++ b/leetcode/leetcode/0189-rotate-array/NOTES.md @@ -0,0 +1 @@ +reverse \ No newline at end of file diff --git a/leetcode/leetcode/0189-rotate-array/README.md b/leetcode/leetcode/0189-rotate-array/README.md new file mode 100644 index 0000000..0f1538d --- /dev/null +++ b/leetcode/leetcode/0189-rotate-array/README.md @@ -0,0 +1,39 @@ +

189. Rotate Array

Medium


Given an integer array nums, rotate the array to the right by k steps, where k is non-negative.

+ +

 

+

Example 1:

+ +
Input: nums = [1,2,3,4,5,6,7], k = 3
+Output: [5,6,7,1,2,3,4]
+Explanation:
+rotate 1 steps to the right: [7,1,2,3,4,5,6]
+rotate 2 steps to the right: [6,7,1,2,3,4,5]
+rotate 3 steps to the right: [5,6,7,1,2,3,4]
+
+ +

Example 2:

+ +
Input: nums = [-1,-100,3,99], k = 2
+Output: [3,99,-1,-100]
+Explanation: 
+rotate 1 steps to the right: [99,-1,-100,3]
+rotate 2 steps to the right: [3,99,-1,-100]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • -231 <= nums[i] <= 231 - 1
  • +
  • 0 <= k <= 105
  • +
+ +

 

+

Follow up:

+ +
    +
  • Try to come up with as many solutions as you can. There are at least three different ways to solve this problem.
  • +
  • Could you do it in-place with O(1) extra space?
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0191-number-of-1-bits/0191-number-of-1-bits.java b/leetcode/leetcode/0191-number-of-1-bits/0191-number-of-1-bits.java new file mode 100644 index 0000000..4ae471e --- /dev/null +++ b/leetcode/leetcode/0191-number-of-1-bits/0191-number-of-1-bits.java @@ -0,0 +1,12 @@ +class Solution { + public int hammingWeight(int n) { + int ans =0; + while(n!=0){ + if(n%2==1){ + ans++; + } + n = n/2; + } + return ans; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0191-number-of-1-bits/README.md b/leetcode/leetcode/0191-number-of-1-bits/README.md new file mode 100644 index 0000000..d530441 --- /dev/null +++ b/leetcode/leetcode/0191-number-of-1-bits/README.md @@ -0,0 +1,48 @@ +

191. Number of 1 Bits

Easy


Given a positive integer n, write a function that returns the number of set bits in its binary representation (also known as the Hamming weight).

+ +

 

+

Example 1:

+ +
+

Input: n = 11

+ +

Output: 3

+ +

Explanation:

+ +

The input binary string 1011 has a total of three set bits.

+
+ +

Example 2:

+ +
+

Input: n = 128

+ +

Output: 1

+ +

Explanation:

+ +

The input binary string 10000000 has a total of one set bit.

+
+ +

Example 3:

+ +
+

Input: n = 2147483645

+ +

Output: 30

+ +

Explanation:

+ +

The input binary string 1111111111111111111111111111101 has a total of thirty set bits.

+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= n <= 231 - 1
  • +
+ +

 

+Follow up: If this function is called many times, how would you optimize it? \ No newline at end of file diff --git a/leetcode/leetcode/0196-delete-duplicate-emails/0196-delete-duplicate-emails.sql b/leetcode/leetcode/0196-delete-duplicate-emails/0196-delete-duplicate-emails.sql new file mode 100644 index 0000000..eee706b --- /dev/null +++ b/leetcode/leetcode/0196-delete-duplicate-emails/0196-delete-duplicate-emails.sql @@ -0,0 +1,2 @@ +delete p1 from person p1,person p2 +where p1.email=p2.email and p1.id>p2.id; \ No newline at end of file diff --git a/leetcode/leetcode/0196-delete-duplicate-emails/NOTES.md b/leetcode/leetcode/0196-delete-duplicate-emails/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0196-delete-duplicate-emails/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0198-house-robber/0198-house-robber.java b/leetcode/leetcode/0198-house-robber/0198-house-robber.java new file mode 100644 index 0000000..ba5317d --- /dev/null +++ b/leetcode/leetcode/0198-house-robber/0198-house-robber.java @@ -0,0 +1,66 @@ + +// Method: 1 - Recusrison [Time Limit Exceed (TLE)] +// class Solution { +// public int helper(int[] nums, int currentIndex){ +// if(currentIndex >= nums.length) return 0; +// int currentHouse = nums[currentIndex] + helper(nums,currentIndex+2); +// return Math.max(currentHouse, helper(nums,currentIndex+1)); +// } +// public int rob(int[] nums) { +// return helper(nums,0); +// } +// } + + +// Method 2 : Memoization: Accepted +// Time complexity : O(n) +// Space Complexity : O(n) + recursion stack memory +// class Solution { +// public int helper(int[] nums, int[] dp, int currentIndex){ +// if(currentIndex >= nums.length) return 0; +// if(dp[currentIndex] != -1) return dp[currentIndex]; +// int currentHouse = nums[currentIndex] + helper(nums,dp,currentIndex+2); +// dp[currentIndex] = Math.max(currentHouse, helper(nums,dp,currentIndex+1)); +// return dp[currentIndex]; +// } +// public int rob(int[] nums) { +// int[] dp = new int[nums.length]; +// for(int i =0;i=house.length) return 0; + if(memo[currentHouse] != -1) return memo[currentHouse]; + + int currentHouseLoot = house[currentHouse] + helper(house,currentHouse+2,memo); + int notLoot = helper(house,currentHouse+1,memo); + + memo[currentHouse] = Math.max(currentHouseLoot,notLoot); + return memo[currentHouse]; + } + + + + public int rob(int[] nums) { + int[] memo = new int[nums.length]; + for(int i = 0;i int: + n = len(nums) + memo = [-1]*n + def max_ans(nums,index): + if(index>=n): + return 0 + if(index == len(nums)-1): + return nums[-1] + if(memo[index]!=-1): + return memo[index] + + memo[index] = max(nums[index]+max_ans(nums,index+2),max_ans(nums,index+1)) + return memo[index] + return max_ans(nums,0) + + diff --git a/leetcode/leetcode/0198-house-robber/README.md b/leetcode/leetcode/0198-house-robber/README.md new file mode 100644 index 0000000..c491b96 --- /dev/null +++ b/leetcode/leetcode/0198-house-robber/README.md @@ -0,0 +1,30 @@ +

198. House Robber

Medium


You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed, the only constraint stopping you from robbing each of them is that adjacent houses have security systems connected and it will automatically contact the police if two adjacent houses were broken into on the same night.

+ +

Given an integer array nums representing the amount of money of each house, return the maximum amount of money you can rob tonight without alerting the police.

+ +

 

+

Example 1:

+ +
+Input: nums = [1,2,3,1]
+Output: 4
+Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3).
+Total amount you can rob = 1 + 3 = 4.
+
+ +

Example 2:

+ +
+Input: nums = [2,7,9,3,1]
+Output: 12
+Explanation: Rob house 1 (money = 2), rob house 3 (money = 9) and rob house 5 (money = 1).
+Total amount you can rob = 2 + 9 + 1 = 12.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 100
  • +
  • 0 <= nums[i] <= 400
  • +
diff --git a/leetcode/leetcode/0199-binary-tree-right-side-view/0199-binary-tree-right-side-view.java b/leetcode/leetcode/0199-binary-tree-right-side-view/0199-binary-tree-right-side-view.java new file mode 100644 index 0000000..920aad6 --- /dev/null +++ b/leetcode/leetcode/0199-binary-tree-right-side-view/0199-binary-tree-right-side-view.java @@ -0,0 +1,35 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public List rightSideView(TreeNode root) { + List result = new ArrayList<>(); + if(root == null) return result; + + Queue q = new LinkedList<>(); + + q.add(root); + while(!q.isEmpty()){ + for(int i = q.size();i!=0;i--){ + root = q.poll(); + if(i == 1) result.add(root.val); + + if(root.left!=null) q.add(root.left); + if(root.right!=null) q.add(root.right); + } + } + return result; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0199-binary-tree-right-side-view/README.md b/leetcode/leetcode/0199-binary-tree-right-side-view/README.md new file mode 100644 index 0000000..e5e81cc --- /dev/null +++ b/leetcode/leetcode/0199-binary-tree-right-side-view/README.md @@ -0,0 +1,50 @@ +

199. Binary Tree Right Side View

Medium


Given the root of a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.

+ +

 

+

Example 1:

+ +
+

Input: root = [1,2,3,null,5,null,4]

+ +

Output: [1,3,4]

+ +

Explanation:

+ +

+
+ +

Example 2:

+ +
+

Input: root = [1,2,3,4,null,null,null,5]

+ +

Output: [1,3,4,5]

+ +

Explanation:

+ +

+
+ +

Example 3:

+ +
+

Input: root = [1,null,3]

+ +

Output: [1,3]

+
+ +

Example 4:

+ +
+

Input: root = []

+ +

Output: []

+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 100].
  • +
  • -100 <= Node.val <= 100
  • +
diff --git a/leetcode/leetcode/0200-number-of-islands/0200-number-of-islands.java b/leetcode/leetcode/0200-number-of-islands/0200-number-of-islands.java new file mode 100644 index 0000000..e84b64a --- /dev/null +++ b/leetcode/leetcode/0200-number-of-islands/0200-number-of-islands.java @@ -0,0 +1,31 @@ +class Solution { + public void helper(char[][] grid, int rows, int cols, int row, int col, boolean[][] visited){ + if(row<0 || col<0 || row>=rows || col>= cols) return; + if(visited[row][col]) return; + if(grid[row][col] == '0') return; + visited[row][col] = true; + helper(grid,rows,cols,row+1,col,visited); + helper(grid,rows,cols,row,col+1,visited); + helper(grid,rows,cols,row-1,col,visited); + helper(grid,rows,cols,row,col-1,visited); + return; + } + + public int numIslands(char[][] grid) { + int rows = grid.length; + int cols = grid[0].length; + + boolean[][] visited = new boolean[rows][cols]; + int ans = 0; + for(int row = 0;row200. Number of Islands

Medium


Given an m x n 2D binary grid grid which represents a map of '1's (land) and '0's (water), return the number of islands.

+ +

An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may assume all four edges of the grid are all surrounded by water.

+ +

 

+

Example 1:

+ +
+Input: grid = [
+  ["1","1","1","1","0"],
+  ["1","1","0","1","0"],
+  ["1","1","0","0","0"],
+  ["0","0","0","0","0"]
+]
+Output: 1
+
+ +

Example 2:

+ +
+Input: grid = [
+  ["1","1","0","0","0"],
+  ["1","1","0","0","0"],
+  ["0","0","1","0","0"],
+  ["0","0","0","1","1"]
+]
+Output: 3
+
+ +

 

+

Constraints:

+ +
    +
  • m == grid.length
  • +
  • n == grid[i].length
  • +
  • 1 <= m, n <= 300
  • +
  • grid[i][j] is '0' or '1'.
  • +
diff --git a/leetcode/leetcode/0201-bitwise-and-of-numbers-range/0201-bitwise-and-of-numbers-range.java b/leetcode/leetcode/0201-bitwise-and-of-numbers-range/0201-bitwise-and-of-numbers-range.java new file mode 100644 index 0000000..dd79d09 --- /dev/null +++ b/leetcode/leetcode/0201-bitwise-and-of-numbers-range/0201-bitwise-and-of-numbers-range.java @@ -0,0 +1,11 @@ +class Solution { + public int rangeBitwiseAnd(int left, int right) { + int index = 0; + while(left!=right){ + left = left >> 1; + right = right >> 1; + index++; + } + return left << index; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0201-bitwise-and-of-numbers-range/README.md b/leetcode/leetcode/0201-bitwise-and-of-numbers-range/README.md new file mode 100644 index 0000000..e55e5e5 --- /dev/null +++ b/leetcode/leetcode/0201-bitwise-and-of-numbers-range/README.md @@ -0,0 +1,30 @@ +

201. Bitwise AND of Numbers Range

Medium


Given two integers left and right that represent the range [left, right], return the bitwise AND of all numbers in this range, inclusive.

+ +

 

+

Example 1:

+ +
+Input: left = 5, right = 7
+Output: 4
+
+ +

Example 2:

+ +
+Input: left = 0, right = 0
+Output: 0
+
+ +

Example 3:

+ +
+Input: left = 1, right = 2147483647
+Output: 0
+
+ +

 

+

Constraints:

+ +
    +
  • 0 <= left <= right <= 231 - 1
  • +
diff --git a/leetcode/leetcode/0205-isomorphic-strings/0205-isomorphic-strings.java b/leetcode/leetcode/0205-isomorphic-strings/0205-isomorphic-strings.java new file mode 100644 index 0000000..5346ebb --- /dev/null +++ b/leetcode/leetcode/0205-isomorphic-strings/0205-isomorphic-strings.java @@ -0,0 +1,21 @@ +class Solution { + public boolean isIsomorphic(String s, String t) { + HashMap map = new HashMap<>(); + for(int i = 0;i205. Isomorphic Strings

Easy


Given two strings s and t, determine if they are isomorphic.

+ +

Two strings s and t are isomorphic if the characters in s can be replaced to get t.

+ +

All occurrences of a character must be replaced with another character while preserving the order of characters. No two characters may map to the same character, but a character may map to itself.

+ +

 

+

Example 1:

+
Input: s = "egg", t = "add"
+Output: true
+

Example 2:

+
Input: s = "foo", t = "bar"
+Output: false
+

Example 3:

+
Input: s = "paper", t = "title"
+Output: true
+
+

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 5 * 104
  • +
  • t.length == s.length
  • +
  • s and t consist of any valid ascii character.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0206-reverse-linked-list/0206-reverse-linked-list.java b/leetcode/leetcode/0206-reverse-linked-list/0206-reverse-linked-list.java new file mode 100644 index 0000000..b4daf0b --- /dev/null +++ b/leetcode/leetcode/0206-reverse-linked-list/0206-reverse-linked-list.java @@ -0,0 +1,50 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + public ListNode reverseList(ListNode head) { + // // Approach 1: Copy Linked list to array. + // // TC : O(N) + // // SC : O(N) + // // Initialize a list + // ArrayList list = new ArrayList<>(); + // // Traversal + // ListNode temp = head; + // while(temp!=null){ + // list.add(temp.val); + // temp = temp.next; + // } + // temp = head; + // for(int i = list.size()-1;i!=-1;i--){ + // System.out.println(list.get(i)); + // temp.val = list.get(i); + // temp = temp.next; + // } + // return head; + + + // Approach 2: Optimial + + if(head == null || head.next == null) return head; + + ListNode prev = null; + ListNode curr = head; + ListNode next = head.next; + while(next!=null){ + curr.next = prev; + prev =curr; + curr = next; + next = next.next; + } + curr.next = prev; + return curr; + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0206-reverse-linked-list/0206-reverse-linked-list.py b/leetcode/leetcode/0206-reverse-linked-list/0206-reverse-linked-list.py new file mode 100644 index 0000000..03d4c66 --- /dev/null +++ b/leetcode/leetcode/0206-reverse-linked-list/0206-reverse-linked-list.py @@ -0,0 +1,19 @@ +# Definition for singly-linked list. +# class ListNode: +# def __init__(self, val=0, next=None): +# self.val = val +# self.next = next +class Solution: + def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: + if(head == None or head.next == None): + return head + + newHead = self.reverseList(head.next) + + + tail = head.next + + tail.next = head + head.next = None + + return newHead \ No newline at end of file diff --git a/leetcode/leetcode/0206-reverse-linked-list/README.md b/leetcode/leetcode/0206-reverse-linked-list/README.md new file mode 100644 index 0000000..d0e5a22 --- /dev/null +++ b/leetcode/leetcode/0206-reverse-linked-list/README.md @@ -0,0 +1,34 @@ +

206. Reverse Linked List

Easy


Given the head of a singly linked list, reverse the list, and return the reversed list.

+ +

 

+

Example 1:

+ +
+Input: head = [1,2,3,4,5]
+Output: [5,4,3,2,1]
+
+ +

Example 2:

+ +
+Input: head = [1,2]
+Output: [2,1]
+
+ +

Example 3:

+ +
+Input: head = []
+Output: []
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is the range [0, 5000].
  • +
  • -5000 <= Node.val <= 5000
  • +
+ +

 

+

Follow up: A linked list can be reversed either iteratively or recursively. Could you implement both?

diff --git a/leetcode/leetcode/0209-minimum-size-subarray-sum/0209-minimum-size-subarray-sum.java b/leetcode/leetcode/0209-minimum-size-subarray-sum/0209-minimum-size-subarray-sum.java new file mode 100644 index 0000000..b50f8f4 --- /dev/null +++ b/leetcode/leetcode/0209-minimum-size-subarray-sum/0209-minimum-size-subarray-sum.java @@ -0,0 +1,19 @@ +class Solution { + public int minSubArrayLen(int target, int[] nums) { + int start = 0; + int end = 0; + int sum = 0; + int ans = Integer.MAX_VALUE; + while(end=target){ + ans = Math.min(ans,end-start+1); + sum-=nums[start]; + start++; + } + end++; + } + if(ans == Integer.MAX_VALUE) return 0; + return ans; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0209-minimum-size-subarray-sum/README.md b/leetcode/leetcode/0209-minimum-size-subarray-sum/README.md new file mode 100644 index 0000000..6175d13 --- /dev/null +++ b/leetcode/leetcode/0209-minimum-size-subarray-sum/README.md @@ -0,0 +1,36 @@ +

209. Minimum Size Subarray Sum

Medium


Given an array of positive integers nums and a positive integer target, return the minimal length of a subarray whose sum is greater than or equal to target. If there is no such subarray, return 0 instead.

+ +

 

+

Example 1:

+ +
+Input: target = 7, nums = [2,3,1,2,4,3]
+Output: 2
+Explanation: The subarray [4,3] has the minimal length under the problem constraint.
+
+ +

Example 2:

+ +
+Input: target = 4, nums = [1,4,4]
+Output: 1
+
+ +

Example 3:

+ +
+Input: target = 11, nums = [1,1,1,1,1,1,1,1]
+Output: 0
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= target <= 109
  • +
  • 1 <= nums.length <= 105
  • +
  • 1 <= nums[i] <= 104
  • +
+ +

 

+Follow up: If you have figured out the O(n) solution, try coding another solution of which the time complexity is O(n log(n)). \ No newline at end of file diff --git a/leetcode/leetcode/0213-house-robber-ii/0213-house-robber-ii.java b/leetcode/leetcode/0213-house-robber-ii/0213-house-robber-ii.java new file mode 100644 index 0000000..7fa4cb7 --- /dev/null +++ b/leetcode/leetcode/0213-house-robber-ii/0213-house-robber-ii.java @@ -0,0 +1,30 @@ +class Solution { + public int helper(int[] nums, int[] memo, int index, int exclude){ + if(index== exclude) return 0; + if(index>=nums.length) return 0; + if(memo[index]!=-1) return memo[index]; + + int currentHouseLoot = nums[index]+ helper(nums, memo, index+2,exclude); + int notLoot = helper(nums,memo,index+1,exclude); + memo[index] = Math.max(currentHouseLoot,notLoot); + return memo[index]; + + } + + public int rob(int[] nums) { + if(nums.length ==1) return nums[0]; + + int[] memo = new int[nums.length]; + for(int i = 0;i213. House Robber II

Medium


You are a professional robber planning to rob houses along a street. Each house has a certain amount of money stashed. All houses at this place are arranged in a circle. That means the first house is the neighbor of the last one. Meanwhile, adjacent houses have a security system connected, and it will automatically contact the police if two adjacent houses were broken into on the same night.

+ +

Given an integer array nums representing the amount of money of each house, return the maximum amount of money you can rob tonight without alerting the police.

+ +

 

+

Example 1:

+ +
+Input: nums = [2,3,2]
+Output: 3
+Explanation: You cannot rob house 1 (money = 2) and then rob house 3 (money = 2), because they are adjacent houses.
+
+ +

Example 2:

+ +
+Input: nums = [1,2,3,1]
+Output: 4
+Explanation: Rob house 1 (money = 1) and then rob house 3 (money = 3).
+Total amount you can rob = 1 + 3 = 4.
+
+ +

Example 3:

+ +
+Input: nums = [1,2,3]
+Output: 3
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 100
  • +
  • 0 <= nums[i] <= 1000
  • +
diff --git a/leetcode/leetcode/0214-shortest-palindrome/0214-shortest-palindrome.java b/leetcode/leetcode/0214-shortest-palindrome/0214-shortest-palindrome.java new file mode 100644 index 0000000..1eaeb60 --- /dev/null +++ b/leetcode/leetcode/0214-shortest-palindrome/0214-shortest-palindrome.java @@ -0,0 +1,18 @@ +class Solution { + + public String shortestPalindrome(String s) { + int length = s.length(); + String reversedString = new StringBuilder(s).reverse().toString(); + + for (int i = 0; i < length; i++) { + if ( + s.substring(0, length - i).equals(reversedString.substring(i)) + ) { + return new StringBuilder(reversedString.substring(0, i)) + .append(s) + .toString(); + } + } + return ""; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0214-shortest-palindrome/NOTES.md b/leetcode/leetcode/0214-shortest-palindrome/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0214-shortest-palindrome/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0214-shortest-palindrome/README.md b/leetcode/leetcode/0214-shortest-palindrome/README.md new file mode 100644 index 0000000..127c954 --- /dev/null +++ b/leetcode/leetcode/0214-shortest-palindrome/README.md @@ -0,0 +1,20 @@ +

214. Shortest Palindrome

Hard


You are given a string s. You can convert s to a palindrome by adding characters in front of it.

+ +

Return the shortest palindrome you can find by performing this transformation.

+ +

 

+

Example 1:

+
Input: s = "aacecaaa"
+Output: "aaacecaaa"
+

Example 2:

+
Input: s = "abcd"
+Output: "dcbabcd"
+
+

 

+

Constraints:

+ +
    +
  • 0 <= s.length <= 5 * 104
  • +
  • s consists of lowercase English letters only.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0215-kth-largest-element-in-an-array/0215-kth-largest-element-in-an-array.java b/leetcode/leetcode/0215-kth-largest-element-in-an-array/0215-kth-largest-element-in-an-array.java new file mode 100644 index 0000000..389260a --- /dev/null +++ b/leetcode/leetcode/0215-kth-largest-element-in-an-array/0215-kth-largest-element-in-an-array.java @@ -0,0 +1,11 @@ +class Solution { + public int findKthLargest(int[] nums, int k) { + PriorityQueue pq = new PriorityQueue<>(); + + for(int num: nums){ + pq.add(num); + if(pq.size()>k) pq.remove(); + } + return pq.remove(); + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0215-kth-largest-element-in-an-array/NOTES.md b/leetcode/leetcode/0215-kth-largest-element-in-an-array/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0215-kth-largest-element-in-an-array/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0215-kth-largest-element-in-an-array/README.md b/leetcode/leetcode/0215-kth-largest-element-in-an-array/README.md new file mode 100644 index 0000000..298cc5a --- /dev/null +++ b/leetcode/leetcode/0215-kth-largest-element-in-an-array/README.md @@ -0,0 +1,21 @@ +

215. Kth Largest Element in an Array

Medium


Given an integer array nums and an integer k, return the kth largest element in the array.

+ +

Note that it is the kth largest element in the sorted order, not the kth distinct element.

+ +

Can you solve it without sorting?

+ +

 

+

Example 1:

+
Input: nums = [3,2,1,5,6,4], k = 2
+Output: 5
+

Example 2:

+
Input: nums = [3,2,3,1,2,4,5,5,6], k = 4
+Output: 4
+
+

 

+

Constraints:

+ +
    +
  • 1 <= k <= nums.length <= 105
  • +
  • -104 <= nums[i] <= 104
  • +
diff --git a/leetcode/leetcode/0217-contains-duplicate/0217-contains-duplicate.java b/leetcode/leetcode/0217-contains-duplicate/0217-contains-duplicate.java new file mode 100644 index 0000000..b0e3233 --- /dev/null +++ b/leetcode/leetcode/0217-contains-duplicate/0217-contains-duplicate.java @@ -0,0 +1,10 @@ +class Solution { + public boolean containsDuplicate(int[] nums) { + HashSet seen = new HashSet<>(); + for(int num: nums){ + if(seen.contains(num)) return true; + seen.add(num); + } + return false; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0217-contains-duplicate/README.md b/leetcode/leetcode/0217-contains-duplicate/README.md new file mode 100644 index 0000000..32f1258 --- /dev/null +++ b/leetcode/leetcode/0217-contains-duplicate/README.md @@ -0,0 +1,42 @@ +

217. Contains Duplicate

Easy


Given an integer array nums, return true if any value appears at least twice in the array, and return false if every element is distinct.

+ +

 

+

Example 1:

+ +
+

Input: nums = [1,2,3,1]

+ +

Output: true

+ +

Explanation:

+ +

The element 1 occurs at the indices 0 and 3.

+
+ +

Example 2:

+ +
+

Input: nums = [1,2,3,4]

+ +

Output: false

+ +

Explanation:

+ +

All elements are distinct.

+
+ +

Example 3:

+ +
+

Input: nums = [1,1,1,3,3,4,3,2,4,2]

+ +

Output: true

+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • -109 <= nums[i] <= 109
  • +
diff --git a/leetcode/leetcode/0225-implement-stack-using-queues/0225-implement-stack-using-queues.java b/leetcode/leetcode/0225-implement-stack-using-queues/0225-implement-stack-using-queues.java new file mode 100644 index 0000000..1debbde --- /dev/null +++ b/leetcode/leetcode/0225-implement-stack-using-queues/0225-implement-stack-using-queues.java @@ -0,0 +1,45 @@ +class MyStack { + + Queue q1; + Queue q2; + + public MyStack() { + q1 = new LinkedList<>(); + q2 = new LinkedList<>(); + } + // O(n) time + public void push(int x) { + if(q1.isEmpty()){ + q1.add(x); + }else{ + q2.add(x); + while(!q1.isEmpty()){ + q2.add(q1.remove()); + } + Queue q = q1; + q1 = q2; + q2 = q; + } + } + + public int pop() { + return q1.remove(); + } + + public int top() { + return q1.peek(); + } + + public boolean empty() { + return q1.isEmpty(); + } +} + +/** + * Your MyStack object will be instantiated and called as such: + * MyStack obj = new MyStack(); + * obj.push(x); + * int param_2 = obj.pop(); + * int param_3 = obj.top(); + * boolean param_4 = obj.empty(); + */ \ No newline at end of file diff --git a/leetcode/leetcode/0225-implement-stack-using-queues/README.md b/leetcode/leetcode/0225-implement-stack-using-queues/README.md new file mode 100644 index 0000000..b654d83 --- /dev/null +++ b/leetcode/leetcode/0225-implement-stack-using-queues/README.md @@ -0,0 +1,48 @@ +

225. Implement Stack using Queues

Easy


Implement a last-in-first-out (LIFO) stack using only two queues. The implemented stack should support all the functions of a normal stack (push, top, pop, and empty).

+ +

Implement the MyStack class:

+ +
    +
  • void push(int x) Pushes element x to the top of the stack.
  • +
  • int pop() Removes the element on the top of the stack and returns it.
  • +
  • int top() Returns the element on the top of the stack.
  • +
  • boolean empty() Returns true if the stack is empty, false otherwise.
  • +
+ +

Notes:

+ +
    +
  • You must use only standard operations of a queue, which means that only push to back, peek/pop from front, size and is empty operations are valid.
  • +
  • Depending on your language, the queue may not be supported natively. You may simulate a queue using a list or deque (double-ended queue) as long as you use only a queue's standard operations.
  • +
+ +

 

+

Example 1:

+ +
+Input
+["MyStack", "push", "push", "top", "pop", "empty"]
+[[], [1], [2], [], [], []]
+Output
+[null, null, null, 2, 2, false]
+
+Explanation
+MyStack myStack = new MyStack();
+myStack.push(1);
+myStack.push(2);
+myStack.top(); // return 2
+myStack.pop(); // return 2
+myStack.empty(); // return False
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= x <= 9
  • +
  • At most 100 calls will be made to push, pop, top, and empty.
  • +
  • All the calls to pop and top are valid.
  • +
+ +

 

+

Follow-up: Can you implement the stack using only one queue?

diff --git a/leetcode/leetcode/0226-invert-binary-tree/0226-invert-binary-tree.java b/leetcode/leetcode/0226-invert-binary-tree/0226-invert-binary-tree.java new file mode 100644 index 0000000..5697955 --- /dev/null +++ b/leetcode/leetcode/0226-invert-binary-tree/0226-invert-binary-tree.java @@ -0,0 +1,40 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + + // Approach 2: Swap Nodes + public TreeNode invertTree(TreeNode root) { + if(root == null) return root; + + + TreeNode temp = root.left; + root.left = root.right; + root.right = temp; + invertTree(root.left); + invertTree(root.right); + return root; + + } + + // Approach 1: Create New Tree + // public TreeNode invertTree(TreeNode root) { + // if(root == null) return null; + // TreeNode node = new TreeNode(root.val); + // node.left = invertTree(root.right); + // node.right = invertTree(root.left); + // return node; + // } +} \ No newline at end of file diff --git a/leetcode/leetcode/0226-invert-binary-tree/README.md b/leetcode/leetcode/0226-invert-binary-tree/README.md new file mode 100644 index 0000000..50f4a63 --- /dev/null +++ b/leetcode/leetcode/0226-invert-binary-tree/README.md @@ -0,0 +1,31 @@ +

226. Invert Binary Tree

Easy


Given the root of a binary tree, invert the tree, and return its root.

+ +

 

+

Example 1:

+ +
+Input: root = [4,2,7,1,3,6,9]
+Output: [4,7,2,9,6,3,1]
+
+ +

Example 2:

+ +
+Input: root = [2,1,3]
+Output: [2,3,1]
+
+ +

Example 3:

+ +
+Input: root = []
+Output: []
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [0, 100].
  • +
  • -100 <= Node.val <= 100
  • +
diff --git a/leetcode/leetcode/0229-majority-element-ii/0229-majority-element-ii.java b/leetcode/leetcode/0229-majority-element-ii/0229-majority-element-ii.java new file mode 100644 index 0000000..d513056 --- /dev/null +++ b/leetcode/leetcode/0229-majority-element-ii/0229-majority-element-ii.java @@ -0,0 +1,43 @@ +class Solution { + public List majorityElement(int[] nums) { + int count1 = 0; + int count2 = 0; + int majority1 = 0; + int majority2 = 0; + for(int num: nums){ + if(num == majority1) count1++; + else if(num == majority2) count2++; + else if(count1 == 0){ + majority1 = num; + count1++; + }else if(count2 == 0){ + majority2 = num; + count2++; + }else{ + count1--; + count2--; + } + } + count1 = 0; + count2 = 0; + for(int num: nums){ + if(num == majority1){ + count1++; + }else if(num == majority2){ + count2++; + } + } + + List res = new ArrayList<>(); + int n = nums.length; + + if (count1 > n / 3) { + res.add(majority1); + } + if (count2 > n / 3) { + res.add(majority2); + } + + return res; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0229-majority-element-ii/README.md b/leetcode/leetcode/0229-majority-element-ii/README.md new file mode 100644 index 0000000..91109a2 --- /dev/null +++ b/leetcode/leetcode/0229-majority-element-ii/README.md @@ -0,0 +1,34 @@ +

229. Majority Element II

Medium


Given an integer array of size n, find all elements that appear more than ⌊ n/3 ⌋ times.

+ +

 

+

Example 1:

+ +
+Input: nums = [3,2,3]
+Output: [3]
+
+ +

Example 2:

+ +
+Input: nums = [1]
+Output: [1]
+
+ +

Example 3:

+ +
+Input: nums = [1,2]
+Output: [1,2]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 5 * 104
  • +
  • -109 <= nums[i] <= 109
  • +
+ +

 

+

Follow up: Could you solve the problem in linear time and in O(1) space?

diff --git a/leetcode/leetcode/0230-kth-smallest-element-in-a-bst/0230-kth-smallest-element-in-a-bst.java b/leetcode/leetcode/0230-kth-smallest-element-in-a-bst/0230-kth-smallest-element-in-a-bst.java new file mode 100644 index 0000000..d331bc4 --- /dev/null +++ b/leetcode/leetcode/0230-kth-smallest-element-in-a-bst/0230-kth-smallest-element-in-a-bst.java @@ -0,0 +1,74 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + int count = 0; + + public int helper(TreeNode root, int k){ + if(root == null) return -1; + if(count == k) return root.val; + int left = helper(root.left,k); + if(count == k) return left; + count++; + if(count == k) return root.val; + return helper(root.right,k); + + + } + + public int kthSmallest(TreeNode root, int k) { + return helper(root,k); + } + + + + // Approach 2: Save only k elements + // ArrayList result = new ArrayList<>(); + + // public void helper(TreeNode root, int k){ + // if(root == null) return; + // if(result.size() == k) return; + + // helper(root.left,k); + // if(result.size() == k) return; + // result.add(root.val); + // if(result.size() == k) return; + // helper(root.right,k); + + // } + + // public int kthSmallest(TreeNode root, int k) { + // helper(root,k); + // return result.get(k-1); + // } + + + // Approach: 1 Brute Forc + // ArrayList result = new ArrayList<>(); + + // public void inorder(TreeNode root){ + // if(root == null) return; + // inorder(root.left); + // result.add(root.val); + // inorder(root.right); + // } + + // public int kthSmallest(TreeNode root, int k) { + // inorder(root); + // return result.get(k-1); + + + +} \ No newline at end of file diff --git a/leetcode/leetcode/0230-kth-smallest-element-in-a-bst/README.md b/leetcode/leetcode/0230-kth-smallest-element-in-a-bst/README.md new file mode 100644 index 0000000..b85079c --- /dev/null +++ b/leetcode/leetcode/0230-kth-smallest-element-in-a-bst/README.md @@ -0,0 +1,28 @@ +

230. Kth Smallest Element in a BST

Medium


Given the root of a binary search tree, and an integer k, return the kth smallest value (1-indexed) of all the values of the nodes in the tree.

+ +

 

+

Example 1:

+ +
+Input: root = [3,1,4,null,2], k = 1
+Output: 1
+
+ +

Example 2:

+ +
+Input: root = [5,3,6,2,4,null,null,1], k = 3
+Output: 3
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is n.
  • +
  • 1 <= k <= n <= 104
  • +
  • 0 <= Node.val <= 104
  • +
+ +

 

+

Follow up: If the BST is modified often (i.e., we can do insert and delete operations) and you need to find the kth smallest frequently, how would you optimize?

diff --git a/leetcode/leetcode/0232-implement-queue-using-stacks/0232-implement-queue-using-stacks.java b/leetcode/leetcode/0232-implement-queue-using-stacks/0232-implement-queue-using-stacks.java new file mode 100644 index 0000000..bfdeb22 --- /dev/null +++ b/leetcode/leetcode/0232-implement-queue-using-stacks/0232-implement-queue-using-stacks.java @@ -0,0 +1,44 @@ +class MyQueue { + + Stack s1; + Stack s2; + + + public MyQueue() { + s1 = new Stack<>(); + s2 = new Stack<>(); + + } + + public void push(int x) { + while(!s1.isEmpty()){ + s2.push(s1.pop()); + } + s1.push(x); + + while(!s2.isEmpty()){ + s1.push(s2.pop()); + } + } + + public int pop() { + return s1.pop(); + } + + public int peek() { + return s1.peek(); + } + + public boolean empty() { + return s1.isEmpty(); + } +} + +/** + * Your MyQueue object will be instantiated and called as such: + * MyQueue obj = new MyQueue(); + * obj.push(x); + * int param_2 = obj.pop(); + * int param_3 = obj.peek(); + * boolean param_4 = obj.empty(); + */ \ No newline at end of file diff --git a/leetcode/leetcode/0232-implement-queue-using-stacks/README.md b/leetcode/leetcode/0232-implement-queue-using-stacks/README.md new file mode 100644 index 0000000..d0de1ae --- /dev/null +++ b/leetcode/leetcode/0232-implement-queue-using-stacks/README.md @@ -0,0 +1,48 @@ +

232. Implement Queue using Stacks

Easy


Implement a first in first out (FIFO) queue using only two stacks. The implemented queue should support all the functions of a normal queue (push, peek, pop, and empty).

+ +

Implement the MyQueue class:

+ +
    +
  • void push(int x) Pushes element x to the back of the queue.
  • +
  • int pop() Removes the element from the front of the queue and returns it.
  • +
  • int peek() Returns the element at the front of the queue.
  • +
  • boolean empty() Returns true if the queue is empty, false otherwise.
  • +
+ +

Notes:

+ +
    +
  • You must use only standard operations of a stack, which means only push to top, peek/pop from top, size, and is empty operations are valid.
  • +
  • Depending on your language, the stack may not be supported natively. You may simulate a stack using a list or deque (double-ended queue) as long as you use only a stack's standard operations.
  • +
+ +

 

+

Example 1:

+ +
+Input
+["MyQueue", "push", "push", "peek", "pop", "empty"]
+[[], [1], [2], [], [], []]
+Output
+[null, null, null, 1, 1, false]
+
+Explanation
+MyQueue myQueue = new MyQueue();
+myQueue.push(1); // queue is: [1]
+myQueue.push(2); // queue is: [1, 2] (leftmost is front of the queue)
+myQueue.peek(); // return 1
+myQueue.pop(); // return 1, queue is [2]
+myQueue.empty(); // return false
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= x <= 9
  • +
  • At most 100 calls will be made to push, pop, peek, and empty.
  • +
  • All the calls to pop and peek are valid.
  • +
+ +

 

+

Follow-up: Can you implement the queue such that each operation is amortized O(1) time complexity? In other words, performing n operations will take overall O(n) time even if one of those operations may take longer.

diff --git a/leetcode/leetcode/0234-palindrome-linked-list/0234-palindrome-linked-list.java b/leetcode/leetcode/0234-palindrome-linked-list/0234-palindrome-linked-list.java new file mode 100644 index 0000000..dbf2552 --- /dev/null +++ b/leetcode/leetcode/0234-palindrome-linked-list/0234-palindrome-linked-list.java @@ -0,0 +1,52 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode() {} + * ListNode(int val) { this.val = val; } + * ListNode(int val, ListNode next) { this.val = val; this.next = next; } + * } + */ +class Solution { + // null <- 1<- 2<-3 null + // p c n + public ListNode reverse(ListNode head){ + ListNode prev = null; + ListNode curr = head; + ListNode next = head.next; + while(next!=null){ + curr.next = prev; + prev = curr; + curr = next; + next = next.next; + } + curr.next = prev; + return curr; + } + // 1->2 + // 1->2->3 + public boolean isPalindrome(ListNode head) { + if(head==null || head.next==null) return true; + ListNode prev = null; + ListNode slow = head; + ListNode fast = head; + while(fast!=null && fast.next !=null){ + prev = slow; + slow = slow.next; + fast = fast.next.next; + } + prev.next = null; + slow = reverse(slow); + + ListNode temp = head; + while(temp!=null && slow!=null){ + if(temp.val!=slow.val) return false; + temp = temp.next; + slow = slow.next; + } + return true; + + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0234-palindrome-linked-list/README.md b/leetcode/leetcode/0234-palindrome-linked-list/README.md new file mode 100644 index 0000000..7576eb7 --- /dev/null +++ b/leetcode/leetcode/0234-palindrome-linked-list/README.md @@ -0,0 +1,27 @@ +

234. Palindrome Linked List

Easy


Given the head of a singly linked list, return true if it is a palindrome or false otherwise.

+ +

 

+

Example 1:

+ +
+Input: head = [1,2,2,1]
+Output: true
+
+ +

Example 2:

+ +
+Input: head = [1,2]
+Output: false
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the list is in the range [1, 105].
  • +
  • 0 <= Node.val <= 9
  • +
+ +

 

+Follow up: Could you do it in O(n) time and O(1) space? \ No newline at end of file diff --git a/leetcode/leetcode/0235-lowest-common-ancestor-of-a-binary-search-tree/0235-lowest-common-ancestor-of-a-binary-search-tree.java b/leetcode/leetcode/0235-lowest-common-ancestor-of-a-binary-search-tree/0235-lowest-common-ancestor-of-a-binary-search-tree.java new file mode 100644 index 0000000..c88b12b --- /dev/null +++ b/leetcode/leetcode/0235-lowest-common-ancestor-of-a-binary-search-tree/0235-lowest-common-ancestor-of-a-binary-search-tree.java @@ -0,0 +1,36 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ + +class Solution { + + public TreeNode helper(TreeNode root, TreeNode p, TreeNode q) { + if (root == null) + return null; + + if (root == p || root == q) + return root; + TreeNode left = helper(root.left, p, q); + TreeNode right = helper(root.right, p, q); + + if (left != null && right != null) + return root; + if (left == null && right != null) + return right; + if (left != null && right == null) + return left; + return null; + + } + + public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { + return helper(root, p, q); + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0235-lowest-common-ancestor-of-a-binary-search-tree/README.md b/leetcode/leetcode/0235-lowest-common-ancestor-of-a-binary-search-tree/README.md new file mode 100644 index 0000000..ccc587c --- /dev/null +++ b/leetcode/leetcode/0235-lowest-common-ancestor-of-a-binary-search-tree/README.md @@ -0,0 +1,38 @@ +

235. Lowest Common Ancestor of a Binary Search Tree

Medium


Given a binary search tree (BST), find the lowest common ancestor (LCA) node of two given nodes in the BST.

+ +

According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself).”

+ +

 

+

Example 1:

+ +
+Input: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 8
+Output: 6
+Explanation: The LCA of nodes 2 and 8 is 6.
+
+ +

Example 2:

+ +
+Input: root = [6,2,8,0,4,7,9,null,null,3,5], p = 2, q = 4
+Output: 2
+Explanation: The LCA of nodes 2 and 4 is 2, since a node can be a descendant of itself according to the LCA definition.
+
+ +

Example 3:

+ +
+Input: root = [2,1], p = 2, q = 1
+Output: 2
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [2, 105].
  • +
  • -109 <= Node.val <= 109
  • +
  • All Node.val are unique.
  • +
  • p != q
  • +
  • p and q will exist in the BST.
  • +
diff --git a/leetcode/leetcode/0236-lowest-common-ancestor-of-a-binary-tree/0236-lowest-common-ancestor-of-a-binary-tree.java b/leetcode/leetcode/0236-lowest-common-ancestor-of-a-binary-tree/0236-lowest-common-ancestor-of-a-binary-tree.java new file mode 100644 index 0000000..5da51b7 --- /dev/null +++ b/leetcode/leetcode/0236-lowest-common-ancestor-of-a-binary-tree/0236-lowest-common-ancestor-of-a-binary-tree.java @@ -0,0 +1,30 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode(int x) { val = x; } + * } + */ +class Solution { + public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { + if(root == null) return null; + + + if(root == p || root == q) return root; + + TreeNode left = lowestCommonAncestor(root.left,p,q); + TreeNode right = lowestCommonAncestor(root.right,p,q); + + if(left!=null && right== null){ + return left; + }else if(left==null && right !=null){ + return right; + }else if(left !=null && right !=null){ + return root; + }else{ + return null; + } + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0236-lowest-common-ancestor-of-a-binary-tree/README.md b/leetcode/leetcode/0236-lowest-common-ancestor-of-a-binary-tree/README.md new file mode 100644 index 0000000..2e41005 --- /dev/null +++ b/leetcode/leetcode/0236-lowest-common-ancestor-of-a-binary-tree/README.md @@ -0,0 +1,38 @@ +

236. Lowest Common Ancestor of a Binary Tree

Medium


Given a binary tree, find the lowest common ancestor (LCA) of two given nodes in the tree.

+ +

According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself).”

+ +

 

+

Example 1:

+ +
+Input: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1
+Output: 3
+Explanation: The LCA of nodes 5 and 1 is 3.
+
+ +

Example 2:

+ +
+Input: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4
+Output: 5
+Explanation: The LCA of nodes 5 and 4 is 5, since a node can be a descendant of itself according to the LCA definition.
+
+ +

Example 3:

+ +
+Input: root = [1,2], p = 1, q = 2
+Output: 1
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [2, 105].
  • +
  • -109 <= Node.val <= 109
  • +
  • All Node.val are unique.
  • +
  • p != q
  • +
  • p and q will exist in the tree.
  • +
diff --git a/leetcode/leetcode/0237-delete-node-in-a-linked-list/0237-delete-node-in-a-linked-list.java b/leetcode/leetcode/0237-delete-node-in-a-linked-list/0237-delete-node-in-a-linked-list.java new file mode 100644 index 0000000..8d38454 --- /dev/null +++ b/leetcode/leetcode/0237-delete-node-in-a-linked-list/0237-delete-node-in-a-linked-list.java @@ -0,0 +1,15 @@ +/** + * Definition for singly-linked list. + * public class ListNode { + * int val; + * ListNode next; + * ListNode(int x) { val = x; } + * } + */ +class Solution { + public void deleteNode(ListNode node) { + node.val = node.next.val; + node.next = node.next.next; + return; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0237-delete-node-in-a-linked-list/NOTES.md b/leetcode/leetcode/0237-delete-node-in-a-linked-list/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0237-delete-node-in-a-linked-list/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0237-delete-node-in-a-linked-list/README.md b/leetcode/leetcode/0237-delete-node-in-a-linked-list/README.md new file mode 100644 index 0000000..3fc46f1 --- /dev/null +++ b/leetcode/leetcode/0237-delete-node-in-a-linked-list/README.md @@ -0,0 +1,48 @@ +

237. Delete Node in a Linked List

Medium


There is a singly-linked list head and we want to delete a node node in it.

+ +

You are given the node to be deleted node. You will not be given access to the first node of head.

+ +

All the values of the linked list are unique, and it is guaranteed that the given node node is not the last node in the linked list.

+ +

Delete the given node. Note that by deleting the node, we do not mean removing it from memory. We mean:

+ +
    +
  • The value of the given node should not exist in the linked list.
  • +
  • The number of nodes in the linked list should decrease by one.
  • +
  • All the values before node should be in the same order.
  • +
  • All the values after node should be in the same order.
  • +
+ +

Custom testing:

+ +
    +
  • For the input, you should provide the entire linked list head and the node to be given node. node should not be the last node of the list and should be an actual node in the list.
  • +
  • We will build the linked list and pass the node to your function.
  • +
  • The output will be the entire list after calling your function.
  • +
+ +

 

+

Example 1:

+ +
Input: head = [4,5,1,9], node = 5
+Output: [4,1,9]
+Explanation: You are given the second node with value 5, the linked list should become 4 -> 1 -> 9 after calling your function.
+
+ +

Example 2:

+ +
Input: head = [4,5,1,9], node = 1
+Output: [4,5,9]
+Explanation: You are given the third node with value 1, the linked list should become 4 -> 5 -> 9 after calling your function.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of the nodes in the given list is in the range [2, 1000].
  • +
  • -1000 <= Node.val <= 1000
  • +
  • The value of each node in the list is unique.
  • +
  • The node to be deleted is in the list and is not a tail node.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0238-product-of-array-except-self/0238-product-of-array-except-self.java b/leetcode/leetcode/0238-product-of-array-except-self/0238-product-of-array-except-self.java new file mode 100644 index 0000000..eba3bf7 --- /dev/null +++ b/leetcode/leetcode/0238-product-of-array-except-self/0238-product-of-array-except-self.java @@ -0,0 +1,15 @@ +class Solution { + public int[] productExceptSelf(int[] nums) { + int[] result = new int[nums.length]; + result[0] = 1; + for(int i = 1;i238. Product of Array Except Self

Medium


Given an integer array nums, return an array answer such that answer[i] is equal to the product of all the elements of nums except nums[i].

+ +

The product of any prefix or suffix of nums is guaranteed to fit in a 32-bit integer.

+ +

You must write an algorithm that runs in O(n) time and without using the division operation.

+ +

 

+

Example 1:

+
Input: nums = [1,2,3,4]
+Output: [24,12,8,6]
+

Example 2:

+
Input: nums = [-1,1,0,-3,3]
+Output: [0,0,9,0,0]
+
+

 

+

Constraints:

+ +
    +
  • 2 <= nums.length <= 105
  • +
  • -30 <= nums[i] <= 30
  • +
  • The input is generated such that answer[i] is guaranteed to fit in a 32-bit integer.
  • +
+ +

 

+

Follow up: Can you solve the problem in O(1) extra space complexity? (The output array does not count as extra space for space complexity analysis.)

diff --git a/leetcode/leetcode/0239-sliding-window-maximum/0239-sliding-window-maximum.java b/leetcode/leetcode/0239-sliding-window-maximum/0239-sliding-window-maximum.java new file mode 100644 index 0000000..6a93027 --- /dev/null +++ b/leetcode/leetcode/0239-sliding-window-maximum/0239-sliding-window-maximum.java @@ -0,0 +1,15 @@ +class Solution { + public int[] maxSlidingWindow(int[] nums, int k) { + int n = nums.length; + Deque dq = new ArrayDeque<>(); + int[] result = new int[n-k+1]; + int currentIndex = 0; + for(int i = 0;i=k-1) result[currentIndex++] = nums[dq.peekFirst()]; + } + return result; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0239-sliding-window-maximum/README.md b/leetcode/leetcode/0239-sliding-window-maximum/README.md new file mode 100644 index 0000000..e74bbc2 --- /dev/null +++ b/leetcode/leetcode/0239-sliding-window-maximum/README.md @@ -0,0 +1,36 @@ +

239. Sliding Window Maximum

Hard


You are given an array of integers nums, there is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves right by one position.

+ +

Return the max sliding window.

+ +

 

+

Example 1:

+ +
+Input: nums = [1,3,-1,-3,5,3,6,7], k = 3
+Output: [3,3,5,5,6,7]
+Explanation: 
+Window position                Max
+---------------               -----
+[1  3  -1] -3  5  3  6  7       3
+ 1 [3  -1  -3] 5  3  6  7       3
+ 1  3 [-1  -3  5] 3  6  7       5
+ 1  3  -1 [-3  5  3] 6  7       5
+ 1  3  -1  -3 [5  3  6] 7       6
+ 1  3  -1  -3  5 [3  6  7]      7
+
+ +

Example 2:

+ +
+Input: nums = [1], k = 1
+Output: [1]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • -104 <= nums[i] <= 104
  • +
  • 1 <= k <= nums.length
  • +
diff --git a/leetcode/leetcode/0241-different-ways-to-add-parentheses/0241-different-ways-to-add-parentheses.java b/leetcode/leetcode/0241-different-ways-to-add-parentheses/0241-different-ways-to-add-parentheses.java new file mode 100644 index 0000000..01bdd7c --- /dev/null +++ b/leetcode/leetcode/0241-different-ways-to-add-parentheses/0241-different-ways-to-add-parentheses.java @@ -0,0 +1,49 @@ +class Solution { + public List diffWaysToCompute(String expression) { + List results = new ArrayList<>(); + if (expression.length() == 0) return results; + + if (expression.length() == 1) { + results.add(Integer.parseInt(expression)); + return results; + } + if(expression.length() == 2 && Character.isDigit(expression.charAt(0))){ + results.add(Integer.parseInt(expression)); + return results; + } + for (int i = 0; i < expression.length(); i++) { + char currentChar = expression.charAt(i); + + if (Character.isDigit(currentChar)) continue; + + List leftResults = diffWaysToCompute( + expression.substring(0, i) + ); + List rightResults = diffWaysToCompute( + expression.substring(i + 1) + ); + + for (int leftValue : leftResults) { + for (int rightValue : rightResults) { + int computedResult = 0; + + switch (currentChar) { + case '+': + computedResult = leftValue + rightValue; + break; + case '-': + computedResult = leftValue - rightValue; + break; + case '*': + computedResult = leftValue * rightValue; + break; + } + + results.add(computedResult); + } + } + } + + return results; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0241-different-ways-to-add-parentheses/NOTES.md b/leetcode/leetcode/0241-different-ways-to-add-parentheses/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0241-different-ways-to-add-parentheses/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0241-different-ways-to-add-parentheses/README.md b/leetcode/leetcode/0241-different-ways-to-add-parentheses/README.md new file mode 100644 index 0000000..9e125c0 --- /dev/null +++ b/leetcode/leetcode/0241-different-ways-to-add-parentheses/README.md @@ -0,0 +1,35 @@ +

241. Different Ways to Add Parentheses

Medium


Given a string expression of numbers and operators, return all possible results from computing all the different possible ways to group numbers and operators. You may return the answer in any order.

+ +

The test cases are generated such that the output values fit in a 32-bit integer and the number of different results does not exceed 104.

+ +

 

+

Example 1:

+ +
Input: expression = "2-1-1"
+Output: [0,2]
+Explanation:
+((2-1)-1) = 0 
+(2-(1-1)) = 2
+
+ +

Example 2:

+ +
Input: expression = "2*3-4*5"
+Output: [-34,-14,-10,-10,10]
+Explanation:
+(2*(3-(4*5))) = -34 
+((2*3)-(4*5)) = -14 
+((2*(3-4))*5) = -10 
+(2*((3-4)*5)) = -10 
+(((2*3)-4)*5) = 10
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= expression.length <= 20
  • +
  • expression consists of digits and the operator '+', '-', and '*'.
  • +
  • All the integer values in the input expression are in the range [0, 99].
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0242-valid-anagram/0242-valid-anagram.java b/leetcode/leetcode/0242-valid-anagram/0242-valid-anagram.java new file mode 100644 index 0000000..3e05e81 --- /dev/null +++ b/leetcode/leetcode/0242-valid-anagram/0242-valid-anagram.java @@ -0,0 +1,17 @@ +class Solution { + public boolean isAnagram(String s, String t) { + HashMap map = new HashMap<>(); + for(int i = 0;i242. Valid Anagram

Easy


Given two strings s and t, return true if t is an anagram of s, and false otherwise.

+ +

An Anagram is a word or phrase formed by rearranging the letters of a different word or phrase, typically using all the original letters exactly once.

+ +

 

+

Example 1:

+
Input: s = "anagram", t = "nagaram"
+Output: true
+

Example 2:

+
Input: s = "rat", t = "car"
+Output: false
+
+

 

+

Constraints:

+ +
    +
  • 1 <= s.length, t.length <= 5 * 104
  • +
  • s and t consist of lowercase English letters.
  • +
+ +

 

+

Follow up: What if the inputs contain Unicode characters? How would you adapt your solution to such a case?

+
\ No newline at end of file diff --git a/leetcode/leetcode/0257-binary-tree-paths/0257-binary-tree-paths.py b/leetcode/leetcode/0257-binary-tree-paths/0257-binary-tree-paths.py new file mode 100644 index 0000000..fce9e5d --- /dev/null +++ b/leetcode/leetcode/0257-binary-tree-paths/0257-binary-tree-paths.py @@ -0,0 +1,34 @@ +# Definition for a binary tree node. +# class TreeNode: +# def __init__(self, val=0, left=None, right=None): +# self.val = val +# self.left = left +# self.right = right +class Solution: + + def binaryTreePaths(self, root: Optional[TreeNode]) -> List[str]: + res = [] + + if(root.left == root.right == None): + res.append(str(root.val)) + return res + if(root == None): + return [] + def helper(root, curr_path=""): + if(root == None): + return + + if(root.left == root.right == None): + res.append(curr_path + "->" + str(root.val)) + return + + helper(root.left,curr_path + "->" + str(root.val)) + helper(root.right,curr_path + "->" + str(root.val)) + + helper(root.left,str(root.val)) + helper(root.right,str(root.val)) + return res + + + + diff --git a/leetcode/leetcode/0257-binary-tree-paths/README.md b/leetcode/leetcode/0257-binary-tree-paths/README.md new file mode 100644 index 0000000..d0a5987 --- /dev/null +++ b/leetcode/leetcode/0257-binary-tree-paths/README.md @@ -0,0 +1,26 @@ +

257. Binary Tree Paths

Easy


Given the root of a binary tree, return all root-to-leaf paths in any order.

+ +

A leaf is a node with no children.

+ +

 

+

Example 1:

+ +
+Input: root = [1,2,3,null,5]
+Output: ["1->2->5","1->3"]
+
+ +

Example 2:

+ +
+Input: root = [1]
+Output: ["1"]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [1, 100].
  • +
  • -100 <= Node.val <= 100
  • +
diff --git a/leetcode/leetcode/0268-missing-number/0268-missing-number.java b/leetcode/leetcode/0268-missing-number/0268-missing-number.java new file mode 100644 index 0000000..8551ad2 --- /dev/null +++ b/leetcode/leetcode/0268-missing-number/0268-missing-number.java @@ -0,0 +1,8 @@ +class Solution { + public int missingNumber(int[] nums) { + int n = nums.length; + int Tsum = (n * (n + 1)) / 2; + int actualSum = Arrays.stream(nums).sum(); + return Tsum - actualSum; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0268-missing-number/README.md b/leetcode/leetcode/0268-missing-number/README.md new file mode 100644 index 0000000..9910f82 --- /dev/null +++ b/leetcode/leetcode/0268-missing-number/README.md @@ -0,0 +1,69 @@ +

268. Missing Number

Easy


Given an array nums containing n distinct numbers in the range [0, n], return the only number in the range that is missing from the array.

+ +

 

+

Example 1:

+ +
+

Input: nums = [3,0,1]

+ +

Output: 2

+ +

Explanation:

+ +

n = 3 since there are 3 numbers, so all numbers are in the range [0,3]. 2 is the missing number in the range since it does not appear in nums.

+
+ +

Example 2:

+ +
+

Input: nums = [0,1]

+ +

Output: 2

+ +

Explanation:

+ +

n = 2 since there are 2 numbers, so all numbers are in the range [0,2]. 2 is the missing number in the range since it does not appear in nums.

+
+ +

Example 3:

+ +
+

Input: nums = [9,6,4,2,3,5,7,0,1]

+ +

Output: 8

+ +

Explanation:

+ +

n = 9 since there are 9 numbers, so all numbers are in the range [0,9]. 8 is the missing number in the range since it does not appear in nums.

+
+ +
+
+
 
+ +
+
+
 
+ +
+

 

+ +

 

+
+
+
+
+
+ +

 

+

Constraints:

+ +
    +
  • n == nums.length
  • +
  • 1 <= n <= 104
  • +
  • 0 <= nums[i] <= n
  • +
  • All the numbers of nums are unique.
  • +
+ +

 

+

Follow up: Could you implement a solution using only O(1) extra space complexity and O(n) runtime complexity?

diff --git a/leetcode/leetcode/0283-move-zeroes/0283-move-zeroes.java b/leetcode/leetcode/0283-move-zeroes/0283-move-zeroes.java new file mode 100644 index 0000000..189f83d --- /dev/null +++ b/leetcode/leetcode/0283-move-zeroes/0283-move-zeroes.java @@ -0,0 +1,21 @@ +class Solution { + public void swap(int[] nums, int i, int j){ + int temp = nums[i]; + nums[i] = nums[j]; + nums[j] = temp; + } + public void moveZeroes(int[] nums) { + if(nums.length == 1) return; + int count = 0; + int indexToSwap = 0; + for(int i = 0;i283. Move Zeroes

Easy


Given an integer array nums, move all 0's to the end of it while maintaining the relative order of the non-zero elements.

+ +

Note that you must do this in-place without making a copy of the array.

+ +

 

+

Example 1:

+
Input: nums = [0,1,0,3,12]
+Output: [1,3,12,0,0]
+

Example 2:

+
Input: nums = [0]
+Output: [0]
+
+

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 104
  • +
  • -231 <= nums[i] <= 231 - 1
  • +
+ +

 

+Follow up: Could you minimize the total number of operations done?
\ No newline at end of file diff --git a/leetcode/leetcode/0287-find-the-duplicate-number/0287-find-the-duplicate-number.java b/leetcode/leetcode/0287-find-the-duplicate-number/0287-find-the-duplicate-number.java new file mode 100644 index 0000000..8decd49 --- /dev/null +++ b/leetcode/leetcode/0287-find-the-duplicate-number/0287-find-the-duplicate-number.java @@ -0,0 +1,10 @@ +class Solution { + public int findDuplicate(int[] nums) { + for(int num: nums){ + int index = Math.abs(num) - 1; + if(nums[index]<0) return index+1; + nums[index] = -nums[index]; + } + return -1; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0287-find-the-duplicate-number/README.md b/leetcode/leetcode/0287-find-the-duplicate-number/README.md new file mode 100644 index 0000000..ba4e856 --- /dev/null +++ b/leetcode/leetcode/0287-find-the-duplicate-number/README.md @@ -0,0 +1,44 @@ +

287. Find the Duplicate Number

Medium


Given an array of integers nums containing n + 1 integers where each integer is in the range [1, n] inclusive.

+ +

There is only one repeated number in nums, return this repeated number.

+ +

You must solve the problem without modifying the array nums and using only constant extra space.

+ +

 

+

Example 1:

+ +
+Input: nums = [1,3,4,2,2]
+Output: 2
+
+ +

Example 2:

+ +
+Input: nums = [3,1,3,4,2]
+Output: 3
+
+ +

Example 3:

+ +
+Input: nums = [3,3,3,3,3]
+Output: 3
+ +

 

+

Constraints:

+ +
    +
  • 1 <= n <= 105
  • +
  • nums.length == n + 1
  • +
  • 1 <= nums[i] <= n
  • +
  • All the integers in nums appear only once except for precisely one integer which appears two or more times.
  • +
+ +

 

+

Follow up:

+ +
    +
  • How can we prove that at least one duplicate number must exist in nums?
  • +
  • Can you solve the problem in linear runtime complexity?
  • +
diff --git a/leetcode/leetcode/0300-longest-increasing-subsequence/0300-longest-increasing-subsequence.java b/leetcode/leetcode/0300-longest-increasing-subsequence/0300-longest-increasing-subsequence.java new file mode 100644 index 0000000..31dc936 --- /dev/null +++ b/leetcode/leetcode/0300-longest-increasing-subsequence/0300-longest-increasing-subsequence.java @@ -0,0 +1,20 @@ +class Solution { + public int lengthOfLIS(int[] nums) { + int n = nums.length; + int[] dp = new int[n]; + dp[0] = 1; + for(int i = 1;inums[j]){ + dp[i] = Math.max(dp[i],dp[j]+1); + } + } + } + int ans =1; + for(int num: dp){ + ans = Math.max(ans,num); + } + return ans; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0300-longest-increasing-subsequence/NOTES.md b/leetcode/leetcode/0300-longest-increasing-subsequence/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0300-longest-increasing-subsequence/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0300-longest-increasing-subsequence/README.md b/leetcode/leetcode/0300-longest-increasing-subsequence/README.md new file mode 100644 index 0000000..598ddc0 --- /dev/null +++ b/leetcode/leetcode/0300-longest-increasing-subsequence/README.md @@ -0,0 +1,35 @@ +

300. Longest Increasing Subsequence

Medium


Given an integer array nums, return the length of the longest strictly increasing subsequence.

+ +

 

+

Example 1:

+ +
+Input: nums = [10,9,2,5,3,7,101,18]
+Output: 4
+Explanation: The longest increasing subsequence is [2,3,7,101], therefore the length is 4.
+
+ +

Example 2:

+ +
+Input: nums = [0,1,0,3,2,3]
+Output: 4
+
+ +

Example 3:

+ +
+Input: nums = [7,7,7,7,7,7,7]
+Output: 1
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 2500
  • +
  • -104 <= nums[i] <= 104
  • +
+ +

 

+

Follow up: Can you come up with an algorithm that runs in O(n log(n)) time complexity?

diff --git a/leetcode/leetcode/0303-range-sum-query-immutable/0303-range-sum-query-immutable.java b/leetcode/leetcode/0303-range-sum-query-immutable/0303-range-sum-query-immutable.java new file mode 100644 index 0000000..23f3216 --- /dev/null +++ b/leetcode/leetcode/0303-range-sum-query-immutable/0303-range-sum-query-immutable.java @@ -0,0 +1,22 @@ +class NumArray { + int[] prefixSum; + + public NumArray(int[] nums) { + prefixSum = new int[nums.length]; + prefixSum[0] = nums[0]; + for(int i =1;i303. Range Sum Query - Immutable

Easy


Given an integer array nums, handle multiple queries of the following type:

+ +
    +
  1. Calculate the sum of the elements of nums between indices left and right inclusive where left <= right.
  2. +
+ +

Implement the NumArray class:

+ +
    +
  • NumArray(int[] nums) Initializes the object with the integer array nums.
  • +
  • int sumRange(int left, int right) Returns the sum of the elements of nums between indices left and right inclusive (i.e. nums[left] + nums[left + 1] + ... + nums[right]).
  • +
+ +

 

+

Example 1:

+ +
+Input
+["NumArray", "sumRange", "sumRange", "sumRange"]
+[[[-2, 0, 3, -5, 2, -1]], [0, 2], [2, 5], [0, 5]]
+Output
+[null, 1, -1, -3]
+
+Explanation
+NumArray numArray = new NumArray([-2, 0, 3, -5, 2, -1]);
+numArray.sumRange(0, 2); // return (-2) + 0 + 3 = 1
+numArray.sumRange(2, 5); // return 3 + (-5) + 2 + (-1) = -1
+numArray.sumRange(0, 5); // return (-2) + 0 + 3 + (-5) + 2 + (-1) = -3
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 104
  • +
  • -105 <= nums[i] <= 105
  • +
  • 0 <= left <= right < nums.length
  • +
  • At most 104 calls will be made to sumRange.
  • +
diff --git a/leetcode/leetcode/0322-coin-change/0322-coin-change.java b/leetcode/leetcode/0322-coin-change/0322-coin-change.java new file mode 100644 index 0000000..0d728ee --- /dev/null +++ b/leetcode/leetcode/0322-coin-change/0322-coin-change.java @@ -0,0 +1,38 @@ +class Solution { + + public int coinChange(int[] coins, int amount, int index, int[][] dp){ + if(amount == 0) return 0; + if(index>=coins.length) return -1; + if(dp[amount][index] != -2) return dp[amount][index]; + int ans = Integer.MAX_VALUE; + if(coins[index]<=amount){ + int temp = coinChange(coins,amount-coins[index],index,dp); + int temp3 = coinChange(coins,amount,index+1,dp); + if(temp == -1 && temp3 == -1) ans = -1; + else{ + if(temp == -1) ans = temp3; + else if(temp3 == -1) ans = temp + 1; + else ans = Math.min(1+temp,temp3); + + + } + }else{ + ans = coinChange(coins,amount,index+1,dp); + } + dp[amount][index] = ans; + return ans; + + + } + + public int coinChange(int[] coins, int amount) { + int n = coins.length; + int[][] dp = new int[amount+1][n]; + for(int i = 0;i322. Coin Change

Medium


You are given an integer array coins representing coins of different denominations and an integer amount representing a total amount of money.

+ +

Return the fewest number of coins that you need to make up that amount. If that amount of money cannot be made up by any combination of the coins, return -1.

+ +

You may assume that you have an infinite number of each kind of coin.

+ +

 

+

Example 1:

+ +
+Input: coins = [1,2,5], amount = 11
+Output: 3
+Explanation: 11 = 5 + 5 + 1
+
+ +

Example 2:

+ +
+Input: coins = [2], amount = 3
+Output: -1
+
+ +

Example 3:

+ +
+Input: coins = [1], amount = 0
+Output: 0
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= coins.length <= 12
  • +
  • 1 <= coins[i] <= 231 - 1
  • +
  • 0 <= amount <= 104
  • +
diff --git a/leetcode/leetcode/0326-power-of-three/0326-power-of-three.java b/leetcode/leetcode/0326-power-of-three/0326-power-of-three.java new file mode 100644 index 0000000..de32f8a --- /dev/null +++ b/leetcode/leetcode/0326-power-of-three/0326-power-of-three.java @@ -0,0 +1,11 @@ +class Solution { + public boolean isPowerOfThree(int n) { + if(n<=0) return false; + if(n==1) return true; + while(n!=1){ + if(n%3!=0) return false; + n/=3; + } + return true; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0326-power-of-three/README.md b/leetcode/leetcode/0326-power-of-three/README.md new file mode 100644 index 0000000..bb5baa8 --- /dev/null +++ b/leetcode/leetcode/0326-power-of-three/README.md @@ -0,0 +1,38 @@ +

326. Power of Three

Easy


Given an integer n, return true if it is a power of three. Otherwise, return false.

+ +

An integer n is a power of three, if there exists an integer x such that n == 3x.

+ +

 

+

Example 1:

+ +
+Input: n = 27
+Output: true
+Explanation: 27 = 33
+
+ +

Example 2:

+ +
+Input: n = 0
+Output: false
+Explanation: There is no x where 3x = 0.
+
+ +

Example 3:

+ +
+Input: n = -1
+Output: false
+Explanation: There is no x where 3x = (-1).
+
+ +

 

+

Constraints:

+ +
    +
  • -231 <= n <= 231 - 1
  • +
+ +

 

+Follow up: Could you solve it without loops/recursion? \ No newline at end of file diff --git a/leetcode/leetcode/0328-odd-even-linked-list/0328-odd-even-linked-list.cpp b/leetcode/leetcode/0328-odd-even-linked-list/0328-odd-even-linked-list.cpp new file mode 100644 index 0000000..874d13c --- /dev/null +++ b/leetcode/leetcode/0328-odd-even-linked-list/0328-odd-even-linked-list.cpp @@ -0,0 +1,29 @@ +/** + * Definition for singly-linked list. + * struct ListNode { + * int val; + * ListNode *next; + * ListNode() : val(0), next(nullptr) {} + * ListNode(int x) : val(x), next(nullptr) {} + * ListNode(int x, ListNode *next) : val(x), next(next) {} + * }; + */ +class Solution { +public: + ListNode* oddEvenList(ListNode* head) { + if(!head || !head->next) return head; + ListNode *even=head->next,*odd=head,*temp=even; + while(odd->next && odd->next->next){ + ListNode *nodd=even?even->next:nullptr; + ListNode *neven=nodd?nodd->next:nullptr; + if(even) + even->next=neven; + if(odd) + odd->next=nodd; + even=neven; + odd=nodd; + } + odd->next=temp; + return head; + } +}; \ No newline at end of file diff --git a/leetcode/leetcode/0328-odd-even-linked-list/README.md b/leetcode/leetcode/0328-odd-even-linked-list/README.md new file mode 100644 index 0000000..6e8419b --- /dev/null +++ b/leetcode/leetcode/0328-odd-even-linked-list/README.md @@ -0,0 +1,30 @@ +

328. Odd Even Linked List

Medium


Given the head of a singly linked list, group all the nodes with odd indices together followed by the nodes with even indices, and return the reordered list.

+ +

The first node is considered odd, and the second node is even, and so on.

+ +

Note that the relative order inside both the even and odd groups should remain as it was in the input.

+ +

You must solve the problem in O(1) extra space complexity and O(n) time complexity.

+ +

 

+

Example 1:

+ +
+Input: head = [1,2,3,4,5]
+Output: [1,3,5,2,4]
+
+ +

Example 2:

+ +
+Input: head = [2,1,3,5,6,4,7]
+Output: [2,3,6,7,1,5,4]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the linked list is in the range [0, 104].
  • +
  • -106 <= Node.val <= 106
  • +
diff --git a/leetcode/leetcode/0334-increasing-triplet-subsequence/0334-increasing-triplet-subsequence.java b/leetcode/leetcode/0334-increasing-triplet-subsequence/0334-increasing-triplet-subsequence.java new file mode 100644 index 0000000..f1b2a89 --- /dev/null +++ b/leetcode/leetcode/0334-increasing-triplet-subsequence/0334-increasing-triplet-subsequence.java @@ -0,0 +1,24 @@ +class Solution { + public boolean increasingTriplet(int[] nums) { + if(nums.length<3) return false; + int maxAfterThat[] = new int[nums.length]; + int minBeforeThat[] = new int[nums.length]; + int min ; + int max; + max = maxAfterThat[nums.length-1] = nums[nums.length-1]; + min = minBeforeThat[0] = nums[0]; + for(int i = nums.length-2;i!=-1;i--){ + max = Math.max(max,nums[i]); + maxAfterThat[i] = max; + min = Math.min(min,nums[nums.length - i-1]); + minBeforeThat[nums.length-i-1] = min; + } + for(int i = 1;i334. Increasing Triplet Subsequence

Medium


Given an integer array nums, return true if there exists a triple of indices (i, j, k) such that i < j < k and nums[i] < nums[j] < nums[k]. If no such indices exists, return false.

+ +

 

+

Example 1:

+ +
Input: nums = [1,2,3,4,5]
+Output: true
+Explanation: Any triplet where i < j < k is valid.
+
+ +

Example 2:

+ +
Input: nums = [5,4,3,2,1]
+Output: false
+Explanation: No triplet exists.
+
+ +

Example 3:

+ +
Input: nums = [2,1,5,0,4,6]
+Output: true
+Explanation: The triplet (3, 4, 5) is valid because nums[3] == 0 < nums[4] == 4 < nums[5] == 6.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 5 * 105
  • +
  • -231 <= nums[i] <= 231 - 1
  • +
+ +

 

+Follow up: Could you implement a solution that runs in O(n) time complexity and O(1) space complexity?
\ No newline at end of file diff --git a/leetcode/leetcode/0337-house-robber-iii/0337-house-robber-iii.java b/leetcode/leetcode/0337-house-robber-iii/0337-house-robber-iii.java new file mode 100644 index 0000000..4258c15 --- /dev/null +++ b/leetcode/leetcode/0337-house-robber-iii/0337-house-robber-iii.java @@ -0,0 +1,34 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public int[] helper(TreeNode root){ + if(root==null){ + int[] ans = {0,0}; + return ans; + } + int[] left = helper(root.left); + int[] right = helper(root.right); + int[] ans = {0,0}; + ans[0] = root.val + left[1] + right[1]; + ans[1] = Math.max(left[0],left[1]) + Math.max(right[0],right[1]); + return ans; + } + public int rob(TreeNode root) { + int[] ans = helper(root); + return Math.max(ans[0],ans[1]); + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0337-house-robber-iii/README.md b/leetcode/leetcode/0337-house-robber-iii/README.md new file mode 100644 index 0000000..e63c52a --- /dev/null +++ b/leetcode/leetcode/0337-house-robber-iii/README.md @@ -0,0 +1,30 @@ +

337. House Robber III

Medium


The thief has found himself a new place for his thievery again. There is only one entrance to this area, called root.

+ +

Besides the root, each house has one and only one parent house. After a tour, the smart thief realized that all houses in this place form a binary tree. It will automatically contact the police if two directly-linked houses were broken into on the same night.

+ +

Given the root of the binary tree, return the maximum amount of money the thief can rob without alerting the police.

+ +

 

+

Example 1:

+ +
+Input: root = [3,2,3,null,3,null,1]
+Output: 7
+Explanation: Maximum amount of money the thief can rob = 3 + 3 + 1 = 7.
+
+ +

Example 2:

+ +
+Input: root = [3,4,5,1,3,null,1]
+Output: 9
+Explanation: Maximum amount of money the thief can rob = 4 + 5 = 9.
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [1, 104].
  • +
  • 0 <= Node.val <= 104
  • +
diff --git a/leetcode/leetcode/0338-counting-bits/0338-counting-bits.java b/leetcode/leetcode/0338-counting-bits/0338-counting-bits.java new file mode 100644 index 0000000..c26306b --- /dev/null +++ b/leetcode/leetcode/0338-counting-bits/0338-counting-bits.java @@ -0,0 +1,10 @@ +class Solution { + public int[] countBits(int n) { + int[] ans = new int[n+1]; + ans[0] = 0; + for(int i = 1;i<=n;i++){ + ans[i] = ans[i>>1]+(i%2); + } + return ans; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0338-counting-bits/README.md b/leetcode/leetcode/0338-counting-bits/README.md new file mode 100644 index 0000000..49b28d8 --- /dev/null +++ b/leetcode/leetcode/0338-counting-bits/README.md @@ -0,0 +1,42 @@ +

338. Counting Bits

Easy


Given an integer n, return an array ans of length n + 1 such that for each i (0 <= i <= n), ans[i] is the number of 1's in the binary representation of i.

+ +

 

+

Example 1:

+ +
+Input: n = 2
+Output: [0,1,1]
+Explanation:
+0 --> 0
+1 --> 1
+2 --> 10
+
+ +

Example 2:

+ +
+Input: n = 5
+Output: [0,1,1,2,1,2]
+Explanation:
+0 --> 0
+1 --> 1
+2 --> 10
+3 --> 11
+4 --> 100
+5 --> 101
+
+ +

 

+

Constraints:

+ +
    +
  • 0 <= n <= 105
  • +
+ +

 

+

Follow up:

+ +
    +
  • It is very easy to come up with a solution with a runtime of O(n log n). Can you do it in linear time O(n) and possibly in a single pass?
  • +
  • Can you do it without using any built-in function (i.e., like __builtin_popcount in C++)?
  • +
diff --git a/leetcode/leetcode/0342-power-of-four/0342-power-of-four.java b/leetcode/leetcode/0342-power-of-four/0342-power-of-four.java new file mode 100644 index 0000000..7d2c53f --- /dev/null +++ b/leetcode/leetcode/0342-power-of-four/0342-power-of-four.java @@ -0,0 +1,11 @@ +class Solution { + public boolean isPowerOfFour(int n) { + if(n==1) return true; + if(n<=0 || n%4 !=0) return false; + + while(n%4==0){ + n = n/4; + } + return n==1; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0342-power-of-four/README.md b/leetcode/leetcode/0342-power-of-four/README.md new file mode 100644 index 0000000..151e06f --- /dev/null +++ b/leetcode/leetcode/0342-power-of-four/README.md @@ -0,0 +1,24 @@ +

342. Power of Four

Easy


Given an integer n, return true if it is a power of four. Otherwise, return false.

+ +

An integer n is a power of four, if there exists an integer x such that n == 4x.

+ +

 

+

Example 1:

+
Input: n = 16
+Output: true
+

Example 2:

+
Input: n = 5
+Output: false
+

Example 3:

+
Input: n = 1
+Output: true
+
+

 

+

Constraints:

+ +
    +
  • -231 <= n <= 231 - 1
  • +
+ +

 

+Follow up: Could you solve it without loops/recursion? \ No newline at end of file diff --git a/leetcode/leetcode/0345-reverse-vowels-of-a-string/0345-reverse-vowels-of-a-string.java b/leetcode/leetcode/0345-reverse-vowels-of-a-string/0345-reverse-vowels-of-a-string.java new file mode 100644 index 0000000..cd97906 --- /dev/null +++ b/leetcode/leetcode/0345-reverse-vowels-of-a-string/0345-reverse-vowels-of-a-string.java @@ -0,0 +1,31 @@ +class Solution { + public String reverseVowels(String s) { + if(s.length()==1) return s; + List list = new ArrayList<>(); + for(int i = 0;i345. Reverse Vowels of a String

Easy


Given a string s, reverse only all the vowels in the string and return it.

+ +

The vowels are 'a', 'e', 'i', 'o', and 'u', and they can appear in both lower and upper cases, more than once.

+ +

 

+

Example 1:

+
Input: s = "hello"
+Output: "holle"
+

Example 2:

+
Input: s = "leetcode"
+Output: "leotcede"
+
+

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 3 * 105
  • +
  • s consist of printable ASCII characters.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0347-top-k-frequent-elements/0347-top-k-frequent-elements.java b/leetcode/leetcode/0347-top-k-frequent-elements/0347-top-k-frequent-elements.java new file mode 100644 index 0000000..b379f74 --- /dev/null +++ b/leetcode/leetcode/0347-top-k-frequent-elements/0347-top-k-frequent-elements.java @@ -0,0 +1,36 @@ + + +// Approach - 1: HashMap with Priority queue + +class Solution { + public class Node implements Comparable{ + int num; + int frequency; + Node(int num, int frequency){ + this.num = num; + this.frequency = frequency; + } + @Override + public int compareTo(Node node){ + return Integer.compare(this.frequency,node.frequency); + } + } + public int[] topKFrequent(int[] nums, int k) { + HashMap map = new HashMap<>(); + for(int num: nums){ + map.put(num, map.getOrDefault(num,0)+1); + } + PriorityQueue pq = new PriorityQueue<>(); + for (Map.Entry mapElement : map.entrySet()){ + pq.add(new Node(mapElement.getKey(),mapElement.getValue())); + if(pq.size()>k) pq.remove(); + } + int[] ans = new int[k]; + for(int i =0;i347. Top K Frequent Elements

Medium


Given an integer array nums and an integer k, return the k most frequent elements. You may return the answer in any order.

+ +

 

+

Example 1:

+
Input: nums = [1,1,1,2,2,3], k = 2
+Output: [1,2]
+

Example 2:

+
Input: nums = [1], k = 1
+Output: [1]
+
+

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • -104 <= nums[i] <= 104
  • +
  • k is in the range [1, the number of unique elements in the array].
  • +
  • It is guaranteed that the answer is unique.
  • +
+ +

 

+

Follow up: Your algorithm's time complexity must be better than O(n log n), where n is the array's size.

diff --git a/leetcode/leetcode/0350-intersection-of-two-arrays-ii/0350-intersection-of-two-arrays-ii.java b/leetcode/leetcode/0350-intersection-of-two-arrays-ii/0350-intersection-of-two-arrays-ii.java new file mode 100644 index 0000000..d019f85 --- /dev/null +++ b/leetcode/leetcode/0350-intersection-of-two-arrays-ii/0350-intersection-of-two-arrays-ii.java @@ -0,0 +1,18 @@ +class Solution { + public int[] intersect(int[] nums1, int[] nums2) { + HashMap map = new HashMap<>(); + for(int num: nums1){ + map.put(num,map.getOrDefault(num,0)+1); + } + ArrayList ans = new ArrayList<>(); + for(int num: nums2){ + if(map.getOrDefault(num,0)!=0){ + ans.add(num); + map.put(num,map.get(num)-1); + } + } + + int[] arr = ans.stream().mapToInt(i -> i).toArray(); + return arr; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0350-intersection-of-two-arrays-ii/NOTES.md b/leetcode/leetcode/0350-intersection-of-two-arrays-ii/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0350-intersection-of-two-arrays-ii/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0350-intersection-of-two-arrays-ii/README.md b/leetcode/leetcode/0350-intersection-of-two-arrays-ii/README.md new file mode 100644 index 0000000..20f1306 --- /dev/null +++ b/leetcode/leetcode/0350-intersection-of-two-arrays-ii/README.md @@ -0,0 +1,33 @@ +

350. Intersection of Two Arrays II

Easy


Given two integer arrays nums1 and nums2, return an array of their intersection. Each element in the result must appear as many times as it shows in both arrays and you may return the result in any order.

+ +

 

+

Example 1:

+ +
Input: nums1 = [1,2,2,1], nums2 = [2,2]
+Output: [2,2]
+
+ +

Example 2:

+ +
Input: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
+Output: [4,9]
+Explanation: [9,4] is also accepted.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums1.length, nums2.length <= 1000
  • +
  • 0 <= nums1[i], nums2[i] <= 1000
  • +
+ +

 

+

Follow up:

+ +
    +
  • What if the given array is already sorted? How would you optimize your algorithm?
  • +
  • What if nums1's size is small compared to nums2's size? Which algorithm is better?
  • +
  • What if elements of nums2 are stored on disk, and the memory is limited such that you cannot load all elements into the memory at once?
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0374-guess-number-higher-or-lower/0374-guess-number-higher-or-lower.java b/leetcode/leetcode/0374-guess-number-higher-or-lower/0374-guess-number-higher-or-lower.java new file mode 100644 index 0000000..b673d23 --- /dev/null +++ b/leetcode/leetcode/0374-guess-number-higher-or-lower/0374-guess-number-higher-or-lower.java @@ -0,0 +1,26 @@ +/** + * Forward declaration of guess API. + * @param num your guess + * @return -1 if num is higher than the picked number + * 1 if num is lower than the picked number + * otherwise return 0 + * int guess(int num); + */ + +public class Solution extends GuessGame { + public int guessNumber(int n) { + int low = 0; + int high = n; + while(low<=high){ + int mid = (int)(low+(high-low)/2); + int isMid = guess(mid); + if(isMid==0) return mid; + else if(isMid==1){ + low = mid+1; + } else{ + high = mid -1; + } + } + return -1; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0374-guess-number-higher-or-lower/README.md b/leetcode/leetcode/0374-guess-number-higher-or-lower/README.md new file mode 100644 index 0000000..3dd24cd --- /dev/null +++ b/leetcode/leetcode/0374-guess-number-higher-or-lower/README.md @@ -0,0 +1,45 @@ +

374. Guess Number Higher or Lower

Easy


We are playing the Guess Game. The game is as follows:

+ +

I pick a number from 1 to n. You have to guess which number I picked.

+ +

Every time you guess wrong, I will tell you whether the number I picked is higher or lower than your guess.

+ +

You call a pre-defined API int guess(int num), which returns three possible results:

+ +
    +
  • -1: Your guess is higher than the number I picked (i.e. num > pick).
  • +
  • 1: Your guess is lower than the number I picked (i.e. num < pick).
  • +
  • 0: your guess is equal to the number I picked (i.e. num == pick).
  • +
+ +

Return the number that I picked.

+ +

 

+

Example 1:

+ +
+Input: n = 10, pick = 6
+Output: 6
+
+ +

Example 2:

+ +
+Input: n = 1, pick = 1
+Output: 1
+
+ +

Example 3:

+ +
+Input: n = 2, pick = 1
+Output: 1
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= n <= 231 - 1
  • +
  • 1 <= pick <= n
  • +
diff --git a/leetcode/leetcode/0380-insert-delete-getrandom-o1/README.md b/leetcode/leetcode/0380-insert-delete-getrandom-o1/README.md new file mode 100644 index 0000000..fc1cda7 --- /dev/null +++ b/leetcode/leetcode/0380-insert-delete-getrandom-o1/README.md @@ -0,0 +1,40 @@ +

380. Insert Delete GetRandom O(1)

Medium


Implement the RandomizedSet class:

+ +
    +
  • RandomizedSet() Initializes the RandomizedSet object.
  • +
  • bool insert(int val) Inserts an item val into the set if not present. Returns true if the item was not present, false otherwise.
  • +
  • bool remove(int val) Removes an item val from the set if present. Returns true if the item was present, false otherwise.
  • +
  • int getRandom() Returns a random element from the current set of elements (it's guaranteed that at least one element exists when this method is called). Each element must have the same probability of being returned.
  • +
+ +

You must implement the functions of the class such that each function works in average O(1) time complexity.

+ +

 

+

Example 1:

+ +
Input
+["RandomizedSet", "insert", "remove", "insert", "getRandom", "remove", "insert", "getRandom"]
+[[], [1], [2], [2], [], [1], [2], []]
+Output
+[null, true, false, true, 2, true, false, 2]
+
+Explanation
+RandomizedSet randomizedSet = new RandomizedSet();
+randomizedSet.insert(1); // Inserts 1 to the set. Returns true as 1 was inserted successfully.
+randomizedSet.remove(2); // Returns false as 2 does not exist in the set.
+randomizedSet.insert(2); // Inserts 2 to the set, returns true. Set now contains [1,2].
+randomizedSet.getRandom(); // getRandom() should return either 1 or 2 randomly.
+randomizedSet.remove(1); // Removes 1 from the set, returns true. Set now contains [2].
+randomizedSet.insert(2); // 2 was already in the set, so return false.
+randomizedSet.getRandom(); // Since 2 is the only number in the set, getRandom() will always return 2.
+
+ +

 

+

Constraints:

+ +
    +
  • -231 <= val <= 231 - 1
  • +
  • At most 2 * 105 calls will be made to insert, remove, and getRandom.
  • +
  • There will be at least one element in the data structure when getRandom is called.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0386-lexicographical-numbers/0386-lexicographical-numbers.java b/leetcode/leetcode/0386-lexicographical-numbers/0386-lexicographical-numbers.java new file mode 100644 index 0000000..3a415fd --- /dev/null +++ b/leetcode/leetcode/0386-lexicographical-numbers/0386-lexicographical-numbers.java @@ -0,0 +1,21 @@ +class Solution { + public List lexicalOrder(int n) { + List result = new ArrayList<>(); + for(int i = 1;i<=9;i++){ + generate(result,i,n); + } + return result; + } + public void generate(List result, int current, int limit){ + if(current>limit) return; + result.add(current); + for(int nextDigit = 0;nextDigit<=9;nextDigit++){ + int nextNumber = current * 10 + nextDigit; + if(nextNumber<=limit){ + generate(result, nextNumber, limit); + }else{ + break; + } + } + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0386-lexicographical-numbers/README.md b/leetcode/leetcode/0386-lexicographical-numbers/README.md new file mode 100644 index 0000000..075d992 --- /dev/null +++ b/leetcode/leetcode/0386-lexicographical-numbers/README.md @@ -0,0 +1,19 @@ +

386. Lexicographical Numbers

Medium


Given an integer n, return all the numbers in the range [1, n] sorted in lexicographical order.

+ +

You must write an algorithm that runs in O(n) time and uses O(1) extra space. 

+ +

 

+

Example 1:

+
Input: n = 13
+Output: [1,10,11,12,13,2,3,4,5,6,7,8,9]
+

Example 2:

+
Input: n = 2
+Output: [1,2]
+
+

 

+

Constraints:

+ +
    +
  • 1 <= n <= 5 * 104
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0392-is-subsequence/0392-is-subsequence.java b/leetcode/leetcode/0392-is-subsequence/0392-is-subsequence.java new file mode 100644 index 0000000..a9d5518 --- /dev/null +++ b/leetcode/leetcode/0392-is-subsequence/0392-is-subsequence.java @@ -0,0 +1,18 @@ +class Solution { + public boolean isSubsequence(String s, String t) { + if(t.length()392. Is Subsequence

Easy


Given two strings s and t, return true if s is a subsequence of t, or false otherwise.

+ +

A subsequence of a string is a new string that is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (i.e., "ace" is a subsequence of "abcde" while "aec" is not).

+ +

 

+

Example 1:

+
Input: s = "abc", t = "ahbgdc"
+Output: true
+

Example 2:

+
Input: s = "axc", t = "ahbgdc"
+Output: false
+
+

 

+

Constraints:

+ +
    +
  • 0 <= s.length <= 100
  • +
  • 0 <= t.length <= 104
  • +
  • s and t consist only of lowercase English letters.
  • +
+ +

 

+Follow up: Suppose there are lots of incoming s, say s1, s2, ..., sk where k >= 109, and you want to check one by one to see if t has its subsequence. In this scenario, how would you change your code?
\ No newline at end of file diff --git a/leetcode/leetcode/0402-remove-k-digits/0402-remove-k-digits.java b/leetcode/leetcode/0402-remove-k-digits/0402-remove-k-digits.java new file mode 100644 index 0000000..1015084 --- /dev/null +++ b/leetcode/leetcode/0402-remove-k-digits/0402-remove-k-digits.java @@ -0,0 +1,36 @@ +class Solution { + public String removeKdigits(String num, int k) { + if(k == num.length()) return "0"; + Stack s = new Stack<>(); + for(int i = 0;i0 && s.peek() > num.charAt(i) ){ + s.pop(); + k--; + } + s.push(num.charAt(i)); + } + + while(!s.isEmpty() && k>0 ){ + s.pop(); + k--; + } + StringBuilder sb = new StringBuilder(); + + // for(char ch: s){ + // sb.append(ch); + // } + + while(!s.isEmpty()){ + sb.append(s.pop()); + } + sb.reverse(); + + while(sb.length()>0 && sb.charAt(0) == '0'){ + sb.deleteCharAt(0); + } + + return sb.length() == 0 ? "0" : sb.toString(); + + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0402-remove-k-digits/README.md b/leetcode/leetcode/0402-remove-k-digits/README.md new file mode 100644 index 0000000..eaaadea --- /dev/null +++ b/leetcode/leetcode/0402-remove-k-digits/README.md @@ -0,0 +1,35 @@ +

402. Remove K Digits

Medium


Given string num representing a non-negative integer num, and an integer k, return the smallest possible integer after removing k digits from num.

+ +

 

+

Example 1:

+ +
+Input: num = "1432219", k = 3
+Output: "1219"
+Explanation: Remove the three digits 4, 3, and 2 to form the new number 1219 which is the smallest.
+
+ +

Example 2:

+ +
+Input: num = "10200", k = 1
+Output: "200"
+Explanation: Remove the leading 1 and the number is 200. Note that the output must not contain leading zeroes.
+
+ +

Example 3:

+ +
+Input: num = "10", k = 2
+Output: "0"
+Explanation: Remove all the digits from the number and it is left with nothing which is 0.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= k <= num.length <= 105
  • +
  • num consists of only digits.
  • +
  • num does not have any leading zeros except for the zero itself.
  • +
diff --git a/leetcode/leetcode/0404-sum-of-left-leaves/0404-sum-of-left-leaves.java b/leetcode/leetcode/0404-sum-of-left-leaves/0404-sum-of-left-leaves.java new file mode 100644 index 0000000..eff7875 --- /dev/null +++ b/leetcode/leetcode/0404-sum-of-left-leaves/0404-sum-of-left-leaves.java @@ -0,0 +1,32 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + int ans = 0; + + public void helper(TreeNode root){ + if(root == null) return; + + if(root.left!=null){ + if(root.left.left == null && root.left.right == null) ans+=root.left.val; + } + helper(root.left); + helper(root.right); + } + public int sumOfLeftLeaves(TreeNode root) { + helper(root); + return ans; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0404-sum-of-left-leaves/README.md b/leetcode/leetcode/0404-sum-of-left-leaves/README.md new file mode 100644 index 0000000..ac38605 --- /dev/null +++ b/leetcode/leetcode/0404-sum-of-left-leaves/README.md @@ -0,0 +1,27 @@ +

404. Sum of Left Leaves

Easy


Given the root of a binary tree, return the sum of all left leaves.

+ +

A leaf is a node with no children. A left leaf is a leaf that is the left child of another node.

+ +

 

+

Example 1:

+ +
+Input: root = [3,9,20,null,null,15,7]
+Output: 24
+Explanation: There are two left leaves in the binary tree, with values 9 and 15 respectively.
+
+ +

Example 2:

+ +
+Input: root = [1]
+Output: 0
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [1, 1000].
  • +
  • -1000 <= Node.val <= 1000
  • +
diff --git a/leetcode/leetcode/0416-partition-equal-subset-sum/0416-partition-equal-subset-sum.java b/leetcode/leetcode/0416-partition-equal-subset-sum/0416-partition-equal-subset-sum.java new file mode 100644 index 0000000..f477246 --- /dev/null +++ b/leetcode/leetcode/0416-partition-equal-subset-sum/0416-partition-equal-subset-sum.java @@ -0,0 +1,76 @@ +// Approach: 1 Recurssion TLE +// class Solution { +// public boolean findSum(int[] nums, int size, long sum){ +// if(size<1) return false; +// if(size == 1){ +// if(sum == nums[size-1]) return true; +// return false; +// } +// return findSum(nums,size-1,sum) || findSum(nums,size-1,sum-nums[size-1]); +// } +// public boolean canPartition(int[] nums) { +// long sum = 0; +// for(int num: nums) sum+=num; +// if(sum % 2 != 0) return false; +// sum = sum/2; +// return findSum(nums, nums.length,sum); +// } +// } + +// Approach 2: Memoization +// class Solution { +// public boolean findSum(int[] nums, int[][] memo, int size, int sum){ +// if(size<1 || sum<0) return false; +// if(size == 1){ +// if(sum == nums[size-1]) return true; +// return false; +// } +// if(memo[size][sum] != -1) return (memo[size][sum] == 1); +// if(findSum(nums,memo,size-1,sum) || findSum(nums,memo,size-1,sum-nums[size-1])){ +// memo[size][sum] = 1; +// }else{ +// memo[size][sum] = 0; +// } +// return memo[size][sum] == 1; +// } +// public boolean canPartition(int[] nums) { +// long sum = 0; +// for(int num: nums) sum+=num; +// if(sum % 2 != 0) return false; +// sum = sum/2; +// int[][] memo = new int[nums.length+1][(int) sum+1]; +// for(int i = 0;i0){ + dp[i][j] = dp[i-1][j-nums[i-1]]; + } + } + } + } + return dp[nums.length][sum]; + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0416-partition-equal-subset-sum/README.md b/leetcode/leetcode/0416-partition-equal-subset-sum/README.md new file mode 100644 index 0000000..6928b40 --- /dev/null +++ b/leetcode/leetcode/0416-partition-equal-subset-sum/README.md @@ -0,0 +1,26 @@ +

416. Partition Equal Subset Sum

Medium


Given an integer array nums, return true if you can partition the array into two subsets such that the sum of the elements in both subsets is equal or false otherwise.

+ +

 

+

Example 1:

+ +
+Input: nums = [1,5,11,5]
+Output: true
+Explanation: The array can be partitioned as [1, 5, 5] and [11].
+
+ +

Example 2:

+ +
+Input: nums = [1,2,3,5]
+Output: false
+Explanation: The array cannot be partitioned into equal sum subsets.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 200
  • +
  • 1 <= nums[i] <= 100
  • +
diff --git a/leetcode/leetcode/0424-longest-repeating-character-replacement/0424-longest-repeating-character-replacement.java b/leetcode/leetcode/0424-longest-repeating-character-replacement/0424-longest-repeating-character-replacement.java new file mode 100644 index 0000000..50825c3 --- /dev/null +++ b/leetcode/leetcode/0424-longest-repeating-character-replacement/0424-longest-repeating-character-replacement.java @@ -0,0 +1,23 @@ +class Solution { + public boolean isValid(int[] freq, int k, int len){ + int maxFreq = freq[0]; + for(int i = 1;i<26;i++) maxFreq = Math.max(maxFreq,freq[i]); + + return len - maxFreq <= k; + } + public int characterReplacement(String s, int k) { + int[] freq = new int[26]; + int l,r; + int ans = Integer.MIN_VALUE; + for(l=0,r=0;r424. Longest Repeating Character Replacement

Medium


You are given a string s and an integer k. You can choose any character of the string and change it to any other uppercase English character. You can perform this operation at most k times.

+ +

Return the length of the longest substring containing the same letter you can get after performing the above operations.

+ +

 

+

Example 1:

+ +
+Input: s = "ABAB", k = 2
+Output: 4
+Explanation: Replace the two 'A's with two 'B's or vice versa.
+
+ +

Example 2:

+ +
+Input: s = "AABABBA", k = 1
+Output: 4
+Explanation: Replace the one 'A' in the middle with 'B' and form "AABBBBA".
+The substring "BBBB" has the longest repeating letters, which is 4.
+There may exists other ways to achieve this answer too.
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 105
  • +
  • s consists of only uppercase English letters.
  • +
  • 0 <= k <= s.length
  • +
diff --git a/leetcode/leetcode/0435-non-overlapping-intervals/0435-non-overlapping-intervals.java b/leetcode/leetcode/0435-non-overlapping-intervals/0435-non-overlapping-intervals.java new file mode 100644 index 0000000..68811c3 --- /dev/null +++ b/leetcode/leetcode/0435-non-overlapping-intervals/0435-non-overlapping-intervals.java @@ -0,0 +1,16 @@ +class Solution { + public int eraseOverlapIntervals(int[][] intervals) { + Arrays.sort(intervals,(a,b)->Integer.compare(a[1],b[1])); + int safe_intervals = 1; + int prev_start = intervals[0][0]; + int prev_end = intervals[0][1]; + for(int i = 1;i435. Non-overlapping Intervals

Medium


Given an array of intervals intervals where intervals[i] = [starti, endi], return the minimum number of intervals you need to remove to make the rest of the intervals non-overlapping.

+ +

Note that intervals which only touch at a point are non-overlapping. For example, [1, 2] and [2, 3] are non-overlapping.

+ +

 

+

Example 1:

+ +
+Input: intervals = [[1,2],[2,3],[3,4],[1,3]]
+Output: 1
+Explanation: [1,3] can be removed and the rest of the intervals are non-overlapping.
+
+ +

Example 2:

+ +
+Input: intervals = [[1,2],[1,2],[1,2]]
+Output: 2
+Explanation: You need to remove two [1,2] to make the rest of the intervals non-overlapping.
+
+ +

Example 3:

+ +
+Input: intervals = [[1,2],[2,3]]
+Output: 0
+Explanation: You don't need to remove any of the intervals since they're already non-overlapping.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= intervals.length <= 105
  • +
  • intervals[i].length == 2
  • +
  • -5 * 104 <= starti < endi <= 5 * 104
  • +
diff --git a/leetcode/leetcode/0440-k-th-smallest-in-lexicographical-order/NOTES.md b/leetcode/leetcode/0440-k-th-smallest-in-lexicographical-order/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0440-k-th-smallest-in-lexicographical-order/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0440-k-th-smallest-in-lexicographical-order/README.md b/leetcode/leetcode/0440-k-th-smallest-in-lexicographical-order/README.md new file mode 100644 index 0000000..519a677 --- /dev/null +++ b/leetcode/leetcode/0440-k-th-smallest-in-lexicographical-order/README.md @@ -0,0 +1,23 @@ +

440. K-th Smallest in Lexicographical Order

Hard


Given two integers n and k, return the kth lexicographically smallest integer in the range [1, n].

+ +

 

+

Example 1:

+ +
Input: n = 13, k = 2
+Output: 10
+Explanation: The lexicographical order is [1, 10, 11, 12, 13, 2, 3, 4, 5, 6, 7, 8, 9], so the second smallest number is 10.
+
+ +

Example 2:

+ +
Input: n = 1, k = 1
+Output: 1
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= k <= n <= 109
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0443-string-compression/0443-string-compression.java b/leetcode/leetcode/0443-string-compression/0443-string-compression.java new file mode 100644 index 0000000..db61f51 --- /dev/null +++ b/leetcode/leetcode/0443-string-compression/0443-string-compression.java @@ -0,0 +1,29 @@ +class Solution { + + public int compress(char[] chars) { + if(chars.length == 1) return 1; + int index = 0; + int internalIndex = 0; + while(index!=chars.length){ + int count = 0; + int lastChar = (int) chars[index]; + while(lastChar == ((int) chars[index])){ + count++; + index++; + if(index == chars.length) break; + } + if(count == 1){ + chars[internalIndex++] = (char) lastChar; + } + else{ + String s = String.format("%d",count); + chars[internalIndex++] = (char) lastChar; + int tempIndex = 0; + while(tempIndex!=s.length()){ + chars[internalIndex++] = s.charAt(tempIndex++); + } + } + } + return internalIndex; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0443-string-compression/NOTES.md b/leetcode/leetcode/0443-string-compression/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0443-string-compression/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0443-string-compression/README.md b/leetcode/leetcode/0443-string-compression/README.md new file mode 100644 index 0000000..5392816 --- /dev/null +++ b/leetcode/leetcode/0443-string-compression/README.md @@ -0,0 +1,44 @@ +

443. String Compression

Medium


Given an array of characters chars, compress it using the following algorithm:

+ +

Begin with an empty string s. For each group of consecutive repeating characters in chars:

+ +
    +
  • If the group's length is 1, append the character to s.
  • +
  • Otherwise, append the character followed by the group's length.
  • +
+ +

The compressed string s should not be returned separately, but instead, be stored in the input character array chars. Note that group lengths that are 10 or longer will be split into multiple characters in chars.

+ +

After you are done modifying the input array, return the new length of the array.

+ +

You must write an algorithm that uses only constant extra space.

+ +

 

+

Example 1:

+ +
Input: chars = ["a","a","b","b","c","c","c"]
+Output: Return 6, and the first 6 characters of the input array should be: ["a","2","b","2","c","3"]
+Explanation: The groups are "aa", "bb", and "ccc". This compresses to "a2b2c3".
+
+ +

Example 2:

+ +
Input: chars = ["a"]
+Output: Return 1, and the first character of the input array should be: ["a"]
+Explanation: The only group is "a", which remains uncompressed since it's a single character.
+
+ +

Example 3:

+ +
Input: chars = ["a","b","b","b","b","b","b","b","b","b","b","b","b"]
+Output: Return 4, and the first 4 characters of the input array should be: ["a","b","1","2"].
+Explanation: The groups are "a" and "bbbbbbbbbbbb". This compresses to "ab12".
+ +

 

+

Constraints:

+ +
    +
  • 1 <= chars.length <= 2000
  • +
  • chars[i] is a lowercase English letter, uppercase English letter, digit, or symbol.
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0451-sort-characters-by-frequency/0451-sort-characters-by-frequency.java b/leetcode/leetcode/0451-sort-characters-by-frequency/0451-sort-characters-by-frequency.java new file mode 100644 index 0000000..1bb9419 --- /dev/null +++ b/leetcode/leetcode/0451-sort-characters-by-frequency/0451-sort-characters-by-frequency.java @@ -0,0 +1,28 @@ +class Solution { + public String frequencySort(String s) { + if(s.length()<3) return s; + int[] freq = new int[256]; + for(int i = 0;i> sortedMap = new TreeMap<>(Collections.reverseOrder()); + for (int i = 0; i < 256; i++) { + if (freq[i] > 0) { + sortedMap.putIfAbsent(freq[i], new ArrayList<>()); + sortedMap.get(freq[i]).add((char) i); + } + } + StringBuilder sb = new StringBuilder(); + for (Map.Entry> entry : sortedMap.entrySet()) { + int frequency = entry.getKey(); + List characters = entry.getValue(); + for (char c : characters) { + for (int i = 0; i < frequency; i++) { + sb.append(c); + } + } + } + return sb.toString(); + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0451-sort-characters-by-frequency/README.md b/leetcode/leetcode/0451-sort-characters-by-frequency/README.md new file mode 100644 index 0000000..1d68915 --- /dev/null +++ b/leetcode/leetcode/0451-sort-characters-by-frequency/README.md @@ -0,0 +1,39 @@ +

451. Sort Characters By Frequency

Medium


Given a string s, sort it in decreasing order based on the frequency of the characters. The frequency of a character is the number of times it appears in the string.

+ +

Return the sorted string. If there are multiple answers, return any of them.

+ +

 

+

Example 1:

+ +
+Input: s = "tree"
+Output: "eert"
+Explanation: 'e' appears twice while 'r' and 't' both appear once.
+So 'e' must appear before both 'r' and 't'. Therefore "eetr" is also a valid answer.
+
+ +

Example 2:

+ +
+Input: s = "cccaaa"
+Output: "aaaccc"
+Explanation: Both 'c' and 'a' appear three times, so both "cccaaa" and "aaaccc" are valid answers.
+Note that "cacaca" is incorrect, as the same characters must be together.
+
+ +

Example 3:

+ +
+Input: s = "Aabb"
+Output: "bbAa"
+Explanation: "bbaA" is also a valid answer, but "Aabb" is incorrect.
+Note that 'A' and 'a' are treated as two different characters.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 5 * 105
  • +
  • s consists of uppercase and lowercase English letters and digits.
  • +
diff --git a/leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/0452-minimum-number-of-arrows-to-burst-balloons.java b/leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/0452-minimum-number-of-arrows-to-burst-balloons.java new file mode 100644 index 0000000..4ce7416 --- /dev/null +++ b/leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/0452-minimum-number-of-arrows-to-burst-balloons.java @@ -0,0 +1,14 @@ +class Solution { + public int findMinArrowShots(int[][] points) { + int res = 1; + Arrays.sort(points,(a,b)-> Integer.compare(a[1],b[1])); + int end = points[0][1]; + for(int i = 0;i end){ + res++; + end = points[i][1]; + } + } + return res; + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/NOTES.md b/leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/README.md b/leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/README.md new file mode 100644 index 0000000..2223a5e --- /dev/null +++ b/leetcode/leetcode/0452-minimum-number-of-arrows-to-burst-balloons/README.md @@ -0,0 +1,41 @@ +

452. Minimum Number of Arrows to Burst Balloons

Medium


There are some spherical balloons taped onto a flat wall that represents the XY-plane. The balloons are represented as a 2D integer array points where points[i] = [xstart, xend] denotes a balloon whose horizontal diameter stretches between xstart and xend. You do not know the exact y-coordinates of the balloons.

+ +

Arrows can be shot up directly vertically (in the positive y-direction) from different points along the x-axis. A balloon with xstart and xend is burst by an arrow shot at x if xstart <= x <= xend. There is no limit to the number of arrows that can be shot. A shot arrow keeps traveling up infinitely, bursting any balloons in its path.

+ +

Given the array points, return the minimum number of arrows that must be shot to burst all balloons.

+ +

 

+

Example 1:

+ +
Input: points = [[10,16],[2,8],[1,6],[7,12]]
+Output: 2
+Explanation: The balloons can be burst by 2 arrows:
+- Shoot an arrow at x = 6, bursting the balloons [2,8] and [1,6].
+- Shoot an arrow at x = 11, bursting the balloons [10,16] and [7,12].
+
+ +

Example 2:

+ +
Input: points = [[1,2],[3,4],[5,6],[7,8]]
+Output: 4
+Explanation: One arrow needs to be shot for each balloon for a total of 4 arrows.
+
+ +

Example 3:

+ +
Input: points = [[1,2],[2,3],[3,4],[4,5]]
+Output: 2
+Explanation: The balloons can be burst by 2 arrows:
+- Shoot an arrow at x = 2, bursting the balloons [1,2] and [2,3].
+- Shoot an arrow at x = 4, bursting the balloons [3,4] and [4,5].
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= points.length <= 105
  • +
  • points[i].length == 2
  • +
  • -231 <= xstart < xend <= 231 - 1
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0480-sliding-window-median/0480-sliding-window-median.java b/leetcode/leetcode/0480-sliding-window-median/0480-sliding-window-median.java new file mode 100644 index 0000000..4adf9b3 --- /dev/null +++ b/leetcode/leetcode/0480-sliding-window-median/0480-sliding-window-median.java @@ -0,0 +1,141 @@ +class Solution { + public class Pair implements Comparable{ + long val; + double noise; + Pair(long val, double random) { + this.val = val; + this.noise = random; + } + + public int compareTo(Pair p){ + if(this.val == p.val){ + return Double.compare(this.noise,p.noise); + } + return Long.compare(this.val,p.val); + } + } + public double[] medianSlidingWindow(int[] nums, int k) { + int n = nums.length; + + double[] ans = new double[n-k+1]; + + if(k == 1){ + for(int i = 0;i left = new TreeSet<>(); + TreeSet right = new TreeSet<>(); + int index = 0; + int min = Integer.MIN_VALUE; + while(index left, TreeSet right, int k){ + if(k%2==0){ + return (left.last().val + right.first().val)/2.0; + }else{ + return left.last().val; + } + } + public void remove(TreeSet left, TreeSet right, int ele){ + if(left.last().val>=ele){ + Pair p = left.higher(new Pair(ele,-1)); + left.remove(p); + }else{ + Pair p = right.higher(new Pair(ele,-1)); + right.remove(p); + } + } + + public void add(TreeSet left, TreeSet right, int ele, int k){ + if(left.last().val left, TreeSet right, int k){ + if(k%2==0){ + rebalanceEven(left, right); + }else{ + rebalanceOdd(left,right); + } + } + + public void rebalanceOdd(TreeSet left, TreeSet right){ + if(left.size()>right.size()){ + if(left.size()-right.size() == 1) return; + else{ + while(left.size()-right.size() != 1){ + Pair p = left.pollLast(); + right.add(p); + } + } + }else{ + while(left.size()-right.size() != 1){ + Pair p = right.pollFirst(); + left.add(p); + } + + } + } + + public void rebalanceEven(TreeSet left, TreeSet right){ + if(left.size()==right.size()) return; + + else if(left.size()>right.size()){ + while(left.size()-right.size() != 0){ + Pair p = left.pollLast(); + right.add(p); + } + + }else{ + while(left.size()-right.size() != 0){ + Pair p = right.pollFirst(); + left.add(p); + } + + } + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0480-sliding-window-median/README.md b/leetcode/leetcode/0480-sliding-window-median/README.md new file mode 100644 index 0000000..7d669f5 --- /dev/null +++ b/leetcode/leetcode/0480-sliding-window-median/README.md @@ -0,0 +1,42 @@ +

480. Sliding Window Median

Hard


The median is the middle value in an ordered integer list. If the size of the list is even, there is no middle value. So the median is the mean of the two middle values.

+ +
    +
  • For examples, if arr = [2,3,4], the median is 3.
  • +
  • For examples, if arr = [1,2,3,4], the median is (2 + 3) / 2 = 2.5.
  • +
+ +

You are given an integer array nums and an integer k. There is a sliding window of size k which is moving from the very left of the array to the very right. You can only see the k numbers in the window. Each time the sliding window moves right by one position.

+ +

Return the median array for each window in the original array. Answers within 10-5 of the actual value will be accepted.

+ +

 

+

Example 1:

+ +
+Input: nums = [1,3,-1,-3,5,3,6,7], k = 3
+Output: [1.00000,-1.00000,-1.00000,3.00000,5.00000,6.00000]
+Explanation: 
+Window position                Median
+---------------                -----
+[1  3  -1] -3  5  3  6  7        1
+ 1 [3  -1  -3] 5  3  6  7       -1
+ 1  3 [-1  -3  5] 3  6  7       -1
+ 1  3  -1 [-3  5  3] 6  7        3
+ 1  3  -1  -3 [5  3  6] 7        5
+ 1  3  -1  -3  5 [3  6  7]       6
+
+ +

Example 2:

+ +
+Input: nums = [1,2,3,4,2,3,1,4,2], k = 3
+Output: [2.00000,3.00000,3.00000,3.00000,2.00000,3.00000,2.00000]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= k <= nums.length <= 105
  • +
  • -231 <= nums[i] <= 231 - 1
  • +
diff --git a/leetcode/leetcode/0485-max-consecutive-ones/0485-max-consecutive-ones.java b/leetcode/leetcode/0485-max-consecutive-ones/0485-max-consecutive-ones.java new file mode 100644 index 0000000..31a5093 --- /dev/null +++ b/leetcode/leetcode/0485-max-consecutive-ones/0485-max-consecutive-ones.java @@ -0,0 +1,17 @@ +class Solution { + public int findMaxConsecutiveOnes(int[] nums) { + int maxNo=0; + int currNo=0; + for (int i=0; i485. Max Consecutive Ones

Easy


Given a binary array nums, return the maximum number of consecutive 1's in the array.

+ +

 

+

Example 1:

+ +
+Input: nums = [1,1,0,1,1,1]
+Output: 3
+Explanation: The first two digits or the last three digits are consecutive 1s. The maximum number of consecutive 1s is 3.
+
+ +

Example 2:

+ +
+Input: nums = [1,0,1,1,0,1]
+Output: 2
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • nums[i] is either 0 or 1.
  • +
diff --git a/leetcode/leetcode/0503-next-greater-element-ii/0503-next-greater-element-ii.java b/leetcode/leetcode/0503-next-greater-element-ii/0503-next-greater-element-ii.java new file mode 100644 index 0000000..045903d --- /dev/null +++ b/leetcode/leetcode/0503-next-greater-element-ii/0503-next-greater-element-ii.java @@ -0,0 +1,47 @@ +class Solution { + class Pair{ + public int index; + public int value; + Pair(int i, int v){ + this.index = i; + this.value = v; + } + } + public int[] nextGreaterElements(int[] arr) { + int[] list = new int[arr.length]; + for(int i =0;i s = new Stack<>(); + int index = 0; + while(index!=arr.length){ + if(s.isEmpty()) { + s.push(new Pair(index,arr[index])); + index++; + continue; + } + while(!s.isEmpty() && s.peek().value503. Next Greater Element II

Medium


Given a circular integer array nums (i.e., the next element of nums[nums.length - 1] is nums[0]), return the next greater number for every element in nums.

+ +

The next greater number of a number x is the first greater number to its traversing-order next in the array, which means you could search circularly to find its next greater number. If it doesn't exist, return -1 for this number.

+ +

 

+

Example 1:

+ +
+Input: nums = [1,2,1]
+Output: [2,-1,2]
+Explanation: The first 1's next greater number is 2; 
+The number 2 can't find next greater number. 
+The second 1's next greater number needs to search circularly, which is also 2.
+
+ +

Example 2:

+ +
+Input: nums = [1,2,3,4,3]
+Output: [2,3,4,-1,4]
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 104
  • +
  • -109 <= nums[i] <= 109
  • +
diff --git a/leetcode/leetcode/0509-fibonacci-number/NOTES.md b/leetcode/leetcode/0509-fibonacci-number/NOTES.md new file mode 100644 index 0000000..38c1374 --- /dev/null +++ b/leetcode/leetcode/0509-fibonacci-number/NOTES.md @@ -0,0 +1 @@ +​ \ No newline at end of file diff --git a/leetcode/leetcode/0509-fibonacci-number/README.md b/leetcode/leetcode/0509-fibonacci-number/README.md new file mode 100644 index 0000000..328aa57 --- /dev/null +++ b/leetcode/leetcode/0509-fibonacci-number/README.md @@ -0,0 +1,37 @@ +

509. Fibonacci Number

Easy


The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such that each number is the sum of the two preceding ones, starting from 0 and 1. That is,

+ +
F(0) = 0, F(1) = 1
+F(n) = F(n - 1) + F(n - 2), for n > 1.
+
+ +

Given n, calculate F(n).

+ +

 

+

Example 1:

+ +
Input: n = 2
+Output: 1
+Explanation: F(2) = F(1) + F(0) = 1 + 0 = 1.
+
+ +

Example 2:

+ +
Input: n = 3
+Output: 2
+Explanation: F(3) = F(2) + F(1) = 1 + 1 = 2.
+
+ +

Example 3:

+ +
Input: n = 4
+Output: 3
+Explanation: F(4) = F(3) + F(2) = 2 + 1 = 3.
+
+ +

 

+

Constraints:

+ +
    +
  • 0 <= n <= 30
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0513-find-bottom-left-tree-value/0513-find-bottom-left-tree-value.java b/leetcode/leetcode/0513-find-bottom-left-tree-value/0513-find-bottom-left-tree-value.java new file mode 100644 index 0000000..150077e --- /dev/null +++ b/leetcode/leetcode/0513-find-bottom-left-tree-value/0513-find-bottom-left-tree-value.java @@ -0,0 +1,35 @@ +/** + * Definition for a binary tree node. + * public class TreeNode { + * int val; + * TreeNode left; + * TreeNode right; + * TreeNode() {} + * TreeNode(int val) { this.val = val; } + * TreeNode(int val, TreeNode left, TreeNode right) { + * this.val = val; + * this.left = left; + * this.right = right; + * } + * } + */ +class Solution { + public int findBottomLeftValue(TreeNode root) { + Queue q = new LinkedList<>(); + int ans = -1; + q.add(root); + while(!q.isEmpty()){ + ans = q.peek().val; + for(int i = q.size(); i!=0;i--){ + root = q.poll(); + if(root.left!=null) q.add(root.left); + if(root.right!=null) q.add(root.right); + // System.out.print(root.val + " "); + } + // System.out.println(); + } + return ans; + + + } +} \ No newline at end of file diff --git a/leetcode/leetcode/0513-find-bottom-left-tree-value/README.md b/leetcode/leetcode/0513-find-bottom-left-tree-value/README.md new file mode 100644 index 0000000..579cbb8 --- /dev/null +++ b/leetcode/leetcode/0513-find-bottom-left-tree-value/README.md @@ -0,0 +1,24 @@ +

513. Find Bottom Left Tree Value

Medium


Given the root of a binary tree, return the leftmost value in the last row of the tree.

+ +

 

+

Example 1:

+ +
+Input: root = [2,1,3]
+Output: 1
+
+ +

Example 2:

+ +
+Input: root = [1,2,3,4,null,5,6,null,null,7]
+Output: 7
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree is in the range [1, 104].
  • +
  • -231 <= Node.val <= 231 - 1
  • +
diff --git a/leetcode/leetcode/0515-find-largest-value-in-each-tree-row/README.md b/leetcode/leetcode/0515-find-largest-value-in-each-tree-row/README.md new file mode 100644 index 0000000..95bb431 --- /dev/null +++ b/leetcode/leetcode/0515-find-largest-value-in-each-tree-row/README.md @@ -0,0 +1,23 @@ +

515. Find Largest Value in Each Tree Row

Medium


Given the root of a binary tree, return an array of the largest value in each row of the tree (0-indexed).

+ +

 

+

Example 1:

+ +
Input: root = [1,3,2,5,3,null,9]
+Output: [1,3,9]
+
+ +

Example 2:

+ +
Input: root = [1,2,3]
+Output: [1,3]
+
+ +

 

+

Constraints:

+ +
    +
  • The number of nodes in the tree will be in the range [0, 104].
  • +
  • -231 <= Node.val <= 231 - 1
  • +
+
\ No newline at end of file diff --git a/leetcode/leetcode/0516-longest-palindromic-subsequence/0516-longest-palindromic-subsequence.java b/leetcode/leetcode/0516-longest-palindromic-subsequence/0516-longest-palindromic-subsequence.java new file mode 100644 index 0000000..795d3bb --- /dev/null +++ b/leetcode/leetcode/0516-longest-palindromic-subsequence/0516-longest-palindromic-subsequence.java @@ -0,0 +1,57 @@ +// class Solution { +// public int LCS(String s, int m, int n) { +// if (m <= 0 || n > s.length()) +// return 0; +// if (s.charAt(m - 1) == s.charAt(n - 1)) +// return 1 + LCS(s, m - 1, n + 1); +// else +// return Math.max(LCS(s, m - 1, n), LCS(s, m, n + 1)); +// } + +// public int longestPalindromeSubseq(String s) { +// return LCS(s, s.length(), 1); +// } +// } + +// class Solution { +// public int LCS(String s, int[][] memo, int m, int n) { +// if (m <= 0 || n > s.length()) +// return 0; +// if (memo[m - 1][n - 1] != -1) +// return memo[m - 1][n - 1]; +// if (s.charAt(m - 1) == s.charAt(n - 1)) +// memo[m - 1][n - 1] = 1 + LCS(s, memo, m - 1, n + 1); +// else +// memo[m - 1][n - 1] = Math.max(LCS(s, memo, m - 1, n), LCS(s, memo, m, n + 1)); +// return memo[m - 1][n - 1]; +// } + +// public int longestPalindromeSubseq(String s) { +// int[][] memo = new int[s.length() + 1][s.length() + 1]; +// for (int i = 0; i <= s.length(); i++) { +// for (int j = 0; j <= s.length(); j++) { +// memo[i][j] = -1; +// } +// } +// return LCS(s, memo, s.length(), 1); +// } +// } + +class Solution { + + + public int longestPalindromeSubseq(String s) { + int[][] dp = new int[s.length() + 1][s.length() + 1]; + + for (int m = 1; m <= s.length(); m++) { + for (int n = 1; n <= s.length(); n++) { + if (s.charAt(m - 1) == s.charAt(s.length() - n)) + dp[m][n] = 1 + dp[m - 1][n - 1]; + else + dp[m][n] = Math.max(dp[m - 1][n], dp[m][n - 1]); + } + } + + return dp[s.length()][s.length()]; + } +} diff --git a/leetcode/leetcode/0516-longest-palindromic-subsequence/README.md b/leetcode/leetcode/0516-longest-palindromic-subsequence/README.md new file mode 100644 index 0000000..f772e50 --- /dev/null +++ b/leetcode/leetcode/0516-longest-palindromic-subsequence/README.md @@ -0,0 +1,28 @@ +

516. Longest Palindromic Subsequence

Medium


Given a string s, find the longest palindromic subsequence's length in s.

+ +

A subsequence is a sequence that can be derived from another sequence by deleting some or no elements without changing the order of the remaining elements.

+ +

 

+

Example 1:

+ +
+Input: s = "bbbab"
+Output: 4
+Explanation: One possible longest palindromic subsequence is "bbbb".
+
+ +

Example 2:

+ +
+Input: s = "cbbd"
+Output: 2
+Explanation: One possible longest palindromic subsequence is "bb".
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= s.length <= 1000
  • +
  • s consists only of lowercase English letters.
  • +
diff --git a/leetcode/leetcode/0525-contiguous-array/0525-contiguous-array.java b/leetcode/leetcode/0525-contiguous-array/0525-contiguous-array.java new file mode 100644 index 0000000..d87b426 --- /dev/null +++ b/leetcode/leetcode/0525-contiguous-array/0525-contiguous-array.java @@ -0,0 +1,23 @@ +class Solution { + public int findMaxLength(int[] nums) { + int count = 0; + HashMap map = new HashMap<>(); + int ans = 0; + map.put(0,0); + for(int i = 0;i525. Contiguous Array

Medium


Given a binary array nums, return the maximum length of a contiguous subarray with an equal number of 0 and 1.

+ +

 

+

Example 1:

+ +
+Input: nums = [0,1]
+Output: 2
+Explanation: [0, 1] is the longest contiguous subarray with an equal number of 0 and 1.
+
+ +

Example 2:

+ +
+Input: nums = [0,1,0]
+Output: 2
+Explanation: [0, 1] (or [1, 0]) is a longest contiguous subarray with equal number of 0 and 1.
+
+ +

Example 3:

+ +
+Input: nums = [0,1,1,1,1,1,0,0,0]
+Output: 6
+Explanation: [1,1,1,0,0,0] is the longest contiguous subarray with equal number of 0 and 1.
+
+ +

 

+

Constraints:

+ +
    +
  • 1 <= nums.length <= 105
  • +
  • nums[i] is either 0 or 1.
  • +
diff --git a/leetcode/leetcode/0539-minimum-time-difference/0539-minimum-time-difference.java b/leetcode/leetcode/0539-minimum-time-difference/0539-minimum-time-difference.java new file mode 100644 index 0000000..4ddd45e --- /dev/null +++ b/leetcode/leetcode/0539-minimum-time-difference/0539-minimum-time-difference.java @@ -0,0 +1,40 @@ +class Solution { +// public class Time implements Comparable