diff --git a/README.md b/README.md index df6b9110..43d0ccef 100644 --- a/README.md +++ b/README.md @@ -456,183 +456,184 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/). ### Medium -| Name | Link to LeetCode | Link to solution | Link to tests | -| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------- | -| 2. Add Two Numbers | [Link](https://leetcode.com/problems/add-two-numbers/) | [Link](./lib/medium/2_add_two_numbers.rb) | [Link](./test/medium/test_2_add_two_numbers.rb) | -| 3. Longest Substring Without Repeating Characters | [Link](https://leetcode.com/problems/longest-substring-without-repeating-characters/) | [Link](./lib/medium/3_longest_substring_without_repeating_characters.rb) | [Link](./test/medium/test_3_longest_substring_without_repeating_characters.rb) | -| 5. Longest Palindromic Substring | [Link](https://leetcode.com/problems/longest-palindromic-substring/) | [Link](./lib/medium/5_longest_palindromic_substring.rb) | [Link](./test/medium/test_5_longest_palindromic_substring.rb) | -| 7. Reverse Integer | [Link](https://leetcode.com/problems/reverse-integer/) | [Link](./lib/medium/7_reverse_integer.rb) | [Link](./test/medium/test_7_reverse_integer.rb) | -| 8. String to Integer (atoi) | [Link](https://leetcode.com/problems/string-to-integer-atoi/) | [Link](./lib/medium/8_string_to_integer_atoi.rb) | [Link](./test/medium/test_8_string_to_integer_atoi.rb) | -| 11. Container With Most Water | [Link](https://leetcode.com/problems/container-with-most-water/) | [Link](./lib/medium/11_container_with_most_water.rb) | [Link](./test/medium/test_11_container_with_most_water.rb) | -| 12. Integer to Roman | [Link](https://leetcode.com/problems/integer-to-roman/) | [Link](./lib/medium/12_integer_to_roman.rb) | [Link](./test/medium/test_12_integer_to_roman.rb) | -| 15. 3Sum | [Link](https://leetcode.com/problems/3sum/) | [Link](./lib/medium/15_3sum.rb) | [Link](./test/medium/test_15_3sum.rb) | -| 16. 3Sum Closest | [Link](https://leetcode.com/problems/3sum-closest/) | [Link](./lib/medium/16_3sum_closest.rb) | [Link](./test/medium/test_16_3sum_closest.rb) | -| 17. Letter Combinations of a Phone Number | [Link](https://leetcode.com/problems/letter-combinations-of-a-phone-number/) | [Link](./lib/medium/17_letter_combinations_of_a_phone_number.rb) | [Link](./test/medium/test_17_letter_combinations_of_a_phone_number.rb) | -| 19. Remove Nth Node From End of List | [Link](https://leetcode.com/problems/remove-nth-node-from-end-of-list/) | [Link](./lib/medium/19_remove_nth_node_from_end_of_list.rb) | [Link](./test/medium/test_19_remove_nth_node_from_end_of_list.rb) | -| 22. Generate Parentheses | [Link](https://leetcode.com/problems/generate-parentheses/) | [Link](./lib/medium/22_generate_parentheses.rb) | [Link](./test/medium/test_22_generate_parentheses.rb) | -| 24. Swap Nodes in Pairs | [Link](https://leetcode.com/problems/swap-nodes-in-pairs/) | [Link](./lib/medium/24_swap_nodes_in_pairs.rb) | [Link](./test/medium/test_24_swap_nodes_in_pairs.rb) | -| 29. Divide Two Integers | [Link](https://leetcode.com/problems/divide-two-integers/) | [Link](./lib/medium/29_divide_two_integers.rb) | [Link](./test/medium/test_29_divide_two_integers.rb) | -| 33. Search in Rotated Sorted Array | [Link](https://leetcode.com/problems/search-in-rotated-sorted-array/) | [Link](./lib/medium/33_search_in_rotated_sorted_array.rb) | [Link](./test/medium/test_33_search_in_rotated_sorted_array.rb) | -| 34. Find First and Last Position of Element in Sorted Array | [Link](https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/) | [Link](./lib/medium/34_find_first_and_last_position_of_element_in_sorted_array.rb) | [Link](./test/medium/test_34_find_first_and_last_position_of_element_in_sorted_array.rb) | -| 36. Valid Sudoku | [Link](https://leetcode.com/problems/valid-sudoku/) | [Link](./lib/medium/36_valid_sudoku.rb) | [Link](./test/medium/test_36_valid_sudoku.rb) | -| 38. Count and Say | [Link](https://leetcode.com/problems/count-and-say/) | [Link](./lib/medium/38_count_and_say.rb) | [Link](./test/medium/test_38_count_and_say.rb) | -| 39. Combination Sum | [Link](https://leetcode.com/problems/combination-sum/) | [Link](./lib/medium/39_combination_sum.rb) | [Link](./test/medium/test_39_combination_sum.rb) | -| 43. Multiply Strings | [Link](https://leetcode.com/problems/multiply-strings/) | [Link](./lib/medium/43_multiply_strings.rb) | [Link](./test/medium/test_43_multiply_strings.rb) | -| 46. Permutations | [Link](https://leetcode.com/problems/permutations/) | [Link](./lib/medium/46_permutations.rb) | [Link](./test/medium/test_46_permutations.rb) | -| 48. Rotate Image | [Link](https://leetcode.com/problems/rotate-image/) | [Link](./lib/medium/48_rotate_image.rb) | [Link](./test/medium/test_48_rotate_image.rb) | -| 49. Group Anagrams | [Link](https://leetcode.com/problems/group-anagrams/) | [Link](./lib/medium/49_group_anagrams.rb) | [Link](./test/medium/test_49_group_anagrams.rb) | -| 53. Maximum Subarray | [Link](https://leetcode.com/problems/maximum-subarray/) | [Link](./lib/medium/53_maximum_subarray.rb) | [Link](./test/medium/test_53_maximum_subarray.rb) | -| 54. Spiral Matrix | [Link](https://leetcode.com/problems/spiral-matrix/) | [Link](./lib/medium/54_spiral_matrix.rb) | [Link](./test/medium/test_54_spiral_matrix.rb) | -| 55. Jump Game | [Link](https://leetcode.com/problems/jump-game/) | [Link](./lib/medium/55_jump_game.rb) | [Link](./test/medium/test_55_jump_game.rb) | -| 56. Merge Intervals | [Link](https://leetcode.com/problems/merge-intervals/) | [Link](./lib/medium/56_merge_intervals.rb) | [Link](./test/medium/test_56_merge_intervals.rb) | -| 57. Insert Interval | [Link](https://leetcode.com/problems/insert-interval/) | [Link](./lib/medium/57_insert_interval.rb) | [Link](./test/medium/test_57_insert_interval.rb) | -| 59. Spiral Matrix II | [Link](https://leetcode.com/problems/spiral-matrix-ii/) | [Link](./lib/medium/59_spiral_matrix_ii.rb) | [Link](./test/medium/test_59_spiral_matrix_ii.rb) | -| 61. Rotate List | [Link](https://leetcode.com/problems/rotate-list/) | [Link](./lib/medium/61_rotate_list.rb) | [Link](./test/medium/test_61_rotate_list.rb) | -| 62. Unique Paths | [Link](https://leetcode.com/problems/unique-paths/) | [Link](./lib/medium/62_unique_paths.rb) | [Link](./test/medium/test_62_unique_paths.rb) | -| 71. Simplify Path | [Link](https://leetcode.com/problems/simplify-path/) | [Link](./lib/medium/71_simplify_path.rb) | [Link](./test/medium/test_71_simplify_path.rb) | -| 74. Search a 2D Matrix | [Link](https://leetcode.com/problems/search-a-2d-matrix/) | [Link](./lib/medium/74_search_a_2d_matrix.rb) | [Link](./test/medium/test_74_search_a_2d_matrix.rb) | -| 75. Sort Colors | [Link](https://leetcode.com/problems/sort-colors/) | [Link](./lib/medium/75_sort_colors.rb) | [Link](./test/medium/test_75_sort_colors.rb) | -| 78. Subsets | [Link](https://leetcode.com/problems/subsets/) | [Link](./lib/medium/78_subsets.rb) | [Link](./test/medium/test_78_subsets.rb) | -| 82. Remove Duplicates from Sorted List II | [Link](https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/) | [Link](./lib/medium/82_remove_duplicates_from_sorted_list_ii.rb) | [Link](./test/medium/test_82_remove_duplicates_from_sorted_list_ii.rb) | -| 86. Partition List | [Link](https://leetcode.com/problems/partition-list/) | [Link](./lib/medium/86_partition_list.rb) | [Link](./test/medium/test_86_partition_list.rb) | -| 92. Reverse Linked List II | [Link](https://leetcode.com/problems/reverse-linked-list-ii/) | [Link](./lib/medium/92_reverse_linked_list_ii.rb) | [Link](./test/medium/test_92_reverse_linked_list_ii.rb) | -| 95. Unique Binary Search Trees II | [Link](https://leetcode.com/problems/unique-binary-search-trees-ii/) | [Link](./lib/medium/95_unique_binary_search_trees_ii.rb) | [Link](./test/medium/test_95_unique_binary_search_trees_ii.rb) | -| 96. Unique Binary Search Trees | [Link](https://leetcode.com/problems/unique-binary-search-trees/) | [Link](./lib/medium/96_unique_binary_search_trees.rb) | [Link](./test/medium/test_96_unique_binary_search_trees.rb) | -| 98. Validate Binary Search Tree | [Link](https://leetcode.com/problems/validate-binary-search-tree/) | [Link](./lib/medium/98_validate_binary_search_tree.rb) | [Link](./test/medium/test_98_validate_binary_search_tree.rb) | -| 99. Recover Binary Search Tree | [Link](https://leetcode.com/problems/recover-binary-search-tree/) | [Link](./lib/medium/99_recover_binary_search_tree.rb) | [Link](./test/medium/test_99_recover_binary_search_tree.rb) | -| 102. Binary Tree Level Order Traversal | [Link](https://leetcode.com/problems/binary-tree-level-order-traversal/) | [Link](./lib/medium/102_binary_tree_level_order_traversal.rb) | [Link](./test/medium/test_102_binary_tree_level_order_traversal.rb) | -| 103. Binary Tree Zigzag Level Order Traversal | [Link](https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/) | [Link](./lib/medium/103_binary_tree_zigzag_level_order_traversal.rb) | [Link](./test/medium/test_103_binary_tree_zigzag_level_order_traversal.rb) | -| 105. Construct Binary Tree from Preorder and Inorder Traversal | [Link](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [Link](./lib/medium/105_construct_binary_tree_from_preorder_and_inorder_traversal.rb) | [Link](./test/medium/test_105_construct_binary_tree_from_preorder_and_inorder_traversal.rb) | -| 106. Construct Binary Tree from Inorder and Postorder Traversal | [Link](https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [Link](./lib/medium/106_construct_binary_tree_from_inorder_and_postorder_traversal.rb) | [Link](./test/medium/test_106_construct_binary_tree_from_inorder_and_postorder_traversal.rb) | -| 107. Binary Tree Level Order Traversal II | [Link](https://leetcode.com/problems/binary-tree-level-order-traversal-ii/) | [Link](./lib/medium/107_binary_tree_level_order_traversal_ii.rb) | [Link](./test/medium/test_107_binary_tree_level_order_traversal_ii.rb) | -| 109. Convert Sorted List to Binary Search Tree | [Link](https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/) | [Link](./lib/medium/109_convert_sorted_list_to_binary_search_tree.rb) | [Link](./test/medium/test_109_convert_sorted_list_to_binary_search_tree.rb) | -| 113. Path Sum II | [Link](https://leetcode.com/problems/path-sum-ii/) | [Link](./lib/medium/113_path_sum_ii.rb) | [Link](./test/medium/test_113_path_sum_ii.rb) | -| 114. Flatten Binary Tree to Linked List | [Link](https://leetcode.com/problems/flatten-binary-tree-to-linked-list/) | [Link](./lib/medium/114_flatten_binary_tree_to_linked_list.rb) | [Link](./test/medium/test_114_flatten_binary_tree_to_linked_list.rb) | -| 116. Populating Next Right Pointers in Each Node | [Link](https://leetcode.com/problems/populating-next-right-pointers-in-each-node/) | [Link](./lib/medium/116_populating_next_right_pointers_in_each_node.rb) | [Link](./test/medium/test_116_populating_next_right_pointers_in_each_node.rb) | -| 117. Populating Next Right Pointers in Each Node II | [Link](https://leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/) | [Link](./lib/medium/117_populating_next_right_pointers_in_each_node_ii.rb) | [Link](./test/medium/test_117_populating_next_right_pointers_in_each_node_ii.rb) | -| 120. Triangle | [Link](https://leetcode.com/problems/triangle/) | [Link](./lib/medium/120_triangle.rb) | [Link](./test/medium/test_120_triangle.rb) | -| 128. Longest Consecutive Sequence | [Link](https://leetcode.com/problems/longest-consecutive-sequence/) | [Link](./lib/medium/128_longest_consecutive_sequence.rb) | [Link](./test/medium/test_128_longest_consecutive_sequence.rb) | -| 129. Sum Root to Leaf Numbers | [Link](https://leetcode.com/problems/sum-root-to-leaf-numbers/) | [Link](./lib/medium/129_sum_root_to_leaf_numbers.rb) | [Link](./test/medium/test_129_sum_root_to_leaf_numbers.rb) | -| 133. Clone Graph | [Link](https://leetcode.com/problems/clone-graph/) | [Link](./lib/medium/133_clone_graph.rb) | [Link](./test/medium/test_133_clone_graph.rb) | -| 134. Gas Station | [Link](https://leetcode.com/problems/gas-station/) | [Link](./lib/medium/134_gas_station.rb) | [Link](./test/medium/test_134_gas_station.rb) | -| 138. Copy List with Random Pointer | [Link](https://leetcode.com/problems/copy-list-with-random-pointer/) | [Link](./lib/medium/138_copy_list_with_random_pointer.rb) | [Link](./test/medium/test_138_copy_list_with_random_pointer.rb) | -| 142. Linked List Cycle II | [Link](https://leetcode.com/problems/linked-list-cycle-ii/) | [Link](./lib/medium/142_linked_list_cycle_ii.rb) | [Link](./test/medium/test_142_linked_list_cycle_ii.rb) | -| 143. Reorder List | [Link](https://leetcode.com/problems/reorder-list/) | [Link](./lib/medium/143_reorder_list.rb) | [Link](./test/medium/test_143_reorder_list.rb) | -| 146. LRU Cache | [Link](https://leetcode.com/problems/lru-cache/) | [Link](./lib/medium/146_lru_cache.rb) | [Link](./test/medium/test_146_lru_cache.rb) | -| 147. Insertion Sort List | [Link](https://leetcode.com/problems/insertion-sort-list/) | [Link](./lib/medium/147_insertion_sort_list.rb) | [Link](./test/medium/test_147_insertion_sort_list.rb) | -| 148. Sort List | [Link](https://leetcode.com/problems/sort-list/) | [Link](./lib/medium/148_sort_list.rb) | [Link](./test/medium/test_148_sort_list.rb) | -| 150. Evaluate Reverse Polish Notation | [Link](https://leetcode.com/problems/evaluate-reverse-polish-notation/) | [Link](./lib/medium/150_evaluate_reverse_polish_notation.rb) | [Link](./test/medium/test_150_evaluate_reverse_polish_notation.rb) | -| 151. Reverse Words in a String | [Link](https://leetcode.com/problems/reverse-words-in-a-string/) | [Link](./lib/medium/151_reverse_words_in_a_string.rb) | [Link](./test/medium/test_151_reverse_words_in_a_string.rb) | -| 155. Min Stack | [Link](https://leetcode.com/problems/min-stack/) | [Link](./lib/medium/155_min_stack.rb) | [Link](./test/medium/test_155_min_stack.rb) | -| 165. Compare Version Numbers | [Link](https://leetcode.com/problems/compare-version-numbers/) | [Link](./lib/medium/165_compare_version_numbers.rb) | [Link](./test/medium/test_165_compare_version_numbers.rb) | -| 167. Two Sum II - Input Array Is Sorted | [Link](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/) | [Link](./lib/medium/167_two_sum_ii_input_array_is_sorted.rb) | [Link](./test/medium/test_167_two_sum_ii_input_array_is_sorted.rb) | -| 173. Binary Search Tree Iterator | [Link](https://leetcode.com/problems/binary-search-tree-iterator/) | [Link](./lib/medium/173_binary_search_tree_iterator.rb) | [Link](./test/medium/test_173_binary_search_tree_iterator.rb) | -| 179. Largest Number | [Link](https://leetcode.com/problems/largest-number/) | [Link](./lib/medium/179_largest_number.rb) | [Link](./test/medium/test_179_largest_number.rb) | -| 187. Repeated DNA Sequences | [Link](https://leetcode.com/problems/repeated-dna-sequences/) | [Link](./lib/medium/187_repeated_dna_sequences.rb) | [Link](./test/medium/test_187_repeated_dna_sequences.rb) | -| 189. Rotate Array | [Link](https://leetcode.com/problems/rotate-array/) | [Link](./lib/medium/189_rotate_array.rb) | [Link](./test/medium/test_189_rotate_array.rb) | -| 199. Binary Tree Right Side View | [Link](https://leetcode.com/problems/binary-tree-right-side-view/) | [Link](./lib/medium/199_binary_tree_right_side_view.rb) | [Link](./test/medium/test_199_binary_tree_right_side_view.rb) | -| 200. Number of Islands | [Link](https://leetcode.com/problems/number-of-islands/) | [Link](./lib/medium/200_number_of_islands.rb) | [Link](./test/medium/test_200_number_of_islands.rb) | -| 204. Count Primes | [Link](https://leetcode.com/problems/count-primes/) | [Link](./lib/medium/204_count_primes.rb) | [Link](./test/medium/test_204_count_primes.rb) | -| 208. Implement Trie (Prefix Tree) | [Link](https://leetcode.com/problems/implement-trie-prefix-tree/) | [Link](./lib/medium/208_implement_trie_prefix_tree.rb) | [Link](./test/medium/test_208_implement_trie_prefix_tree.rb) | -| 209. Minimum Size Subarray Sum | [Link](https://leetcode.com/problems/minimum-size-subarray-sum/) | [Link](./lib/medium/209_minimum_size_subarray_sum.rb) | [Link](./test/medium/test_209_minimum_size_subarray_sum.rb) | -| 215. Kth Largest Element in an Array | [Link](https://leetcode.com/problems/kth-largest-element-in-an-array/) | [Link](./lib/medium/215_kth_largest_element_in_an_array.rb) | [Link](./test/medium/test_215_kth_largest_element_in_an_array.rb) | -| 227. Basic Calculator II | [Link](https://leetcode.com/problems/basic-calculator-ii/) | [Link](./lib/medium/227_basic_calculator_ii.rb) | [Link](./test/medium/test_227_basic_calculator_ii.rb) | -| 230. Kth Smallest Element in a BST | [Link](https://leetcode.com/problems/kth-smallest-element-in-a-bst/) | [Link](./lib/medium/230_kth_smallest_element_in_a_bst.rb) | [Link](./test/medium/test_230_kth_smallest_element_in_a_bst.rb) | -| 235. Lowest Common Ancestor of a Binary Search Tree | [Link](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [Link](./lib/medium/235_lowest_common_ancestor_of_a_binary_search_tree.rb) | [Link](./test/medium/test_235_lowest_common_ancestor_of_a_binary_search_tree.rb) | -| 236. Lowest Common Ancestor of a Binary Tree | [Link](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/) | [Link](./lib/medium/236_lowest_common_ancestor_of_a_binary_tree.rb) | [Link](./test/medium/test_236_lowest_common_ancestor_of_a_binary_tree.rb) | -| 237. Delete Node in a Linked List | [Link](https://leetcode.com/problems/delete-node-in-a-linked-list/) | [Link](./lib/medium/237_delete_node_in_a_linked_list.rb) | [Link](./test/medium/test_237_delete_node_in_a_linked_list.rb) | -| 238. Product of Array Except Self | [Link](https://leetcode.com/problems/product-of-array-except-self/) | [Link](./lib/medium/238_product_of_array_except_self.rb) | [Link](./test/medium/test_238_product_of_array_except_self.rb) | -| 240. Search a 2D Matrix II | [Link](https://leetcode.com/problems/search-a-2d-matrix-ii/) | [Link](./lib/medium/240_search_a_2d_matrix_ii.rb) | [Link](./test/medium/test_240_search_a_2d_matrix_ii.rb) | -| 284. Peeking Iterator | [Link](https://leetcode.com/problems/peeking-iterator/) | [Link](./lib/medium/284_peeking_iterator.rb) | [Link](./test/medium/test_284_peeking_iterator.rb) | -| 287. Find the Duplicate Number | [Link](https://leetcode.com/problems/find-the-duplicate-number/) | [Link](./lib/medium/287_find_the_duplicate_number.rb) | [Link](./test/medium/test_287_find_the_duplicate_number.rb) | -| 299. Bulls and Cows | [Link](https://leetcode.com/problems/bulls-and-cows/) | [Link](./lib/medium/299_bulls_and_cows.rb) | [Link](./test/medium/test_299_bulls_and_cows.rb) | -| 300. Longest Increasing Subsequence | [Link](https://leetcode.com/problems/longest-increasing-subsequence/) | [Link](./lib/medium/300_longest_increasing_subsequence.rb) | [Link](./test/medium/test_300_longest_increasing_subsequence.rb) | -| 304. Range Sum Query 2D - Immutable | [Link](https://leetcode.com/problems/range-sum-query-2d-immutable/) | [Link](./lib/medium/304_range_sum_query_2d_immutable.rb) | [Link](./test/medium/test_304_range_sum_query_2d_immutable.rb) | -| 316. Remove Duplicate Letters | [Link](https://leetcode.com/problems/remove-duplicate-letters/) | [Link](./lib/medium/316_remove_duplicate_letters.rb) | [Link](./test/medium/test_316_remove_duplicate_letters.rb) | -| 318. Maximum Product of Word Lengths | [Link](https://leetcode.com/problems/maximum-product-of-word-lengths/) | [Link](./lib/medium/318_maximum_product_of_word_lengths.rb) | [Link](./test/medium/test_318_maximum_product_of_word_lengths.rb) | -| 328. Odd Even Linked List | [Link](https://leetcode.com/problems/odd-even-linked-list/) | [Link](./lib/medium/328_odd_even_linked_list.rb) | [Link](./test/medium/test_328_odd_even_linked_list.rb) | -| 331. Verify Preorder Serialization of a Binary Tree | [Link](https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/) | [Link](./lib/medium/331_verify_preorder_serialization_of_a_binary_tree.rb) | [Link](./test/medium/test_331_verify_preorder_serialization_of_a_binary_tree.rb) | -| 334. Increasing Triplet Subsequence | [Link](https://leetcode.com/problems/increasing-triplet-subsequence/) | [Link](./lib/medium/334_increasing_triplet_subsequence.rb) | [Link](./test/medium/test_334_increasing_triplet_subsequence.rb) | -| 341. Flatten Nested List Iterator | [Link](https://leetcode.com/problems/flatten-nested-list-iterator/) | [Link](./lib/medium/341_flatten_nested_list_iterator.rb) | [Link](./test/medium/test_341_flatten_nested_list_iterator.rb) | -| 347. Top K Frequent Elements | [Link](https://leetcode.com/problems/top-k-frequent-elements/) | [Link](./lib/medium/347_top_k_frequent_elements.rb) | [Link](./test/medium/test_347_top_k_frequent_elements.rb) | -| 371. Sum of Two Integers | [Link](https://leetcode.com/problems/sum-of-two-integers/) | [Link](./lib/medium/371_sum_of_two_integers.rb) | [Link](./test/medium/test_371_sum_of_two_integers.rb) | -| 377. Combination Sum IV | [Link](https://leetcode.com/problems/combination-sum-iv/) | [Link](./lib/medium/377_combination_sum_iv.rb) | [Link](./test/medium/test_377_combination_sum_iv.rb) | -| 378. Kth Smallest Element in a Sorted Matrix | [Link](https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/) | [Link](./lib/medium/378_kth_smallest_element_in_a_sorted_matrix.rb) | [Link](./test/medium/test_378_kth_smallest_element_in_a_sorted_matrix.rb) | -| 380. Insert Delete GetRandom O(1) | [Link](https://leetcode.com/problems/insert-delete-getrandom-o1/) | [Link](./lib/medium/380_insert_delete_getrandom_o1.rb) | [Link](./test/medium/test_380_insert_delete_getrandom_o1.rb) | -| 382. Linked List Random Node | [Link](https://leetcode.com/problems/linked-list-random-node/) | [Link](./lib/medium/382_linked_list_random_node.rb) | [Link](./test/medium/test_382_linked_list_random_node.rb) | -| 388. Longest Absolute File Path | [Link](https://leetcode.com/problems/longest-absolute-file-path/) | [Link](./lib/medium/388_longest_absolute_file_path.rb) | [Link](./test/medium/test_388_longest_absolute_file_path.rb) | -| 394. Decode String | [Link](https://leetcode.com/problems/decode-string/) | [Link](./lib/medium/394_decode_string.rb) | [Link](./test/medium/test_394_decode_string.rb) | -| 398. Random Pick Index | [Link](https://leetcode.com/problems/random-pick-index/) | [Link](./lib/medium/398_random_pick_index.rb) | [Link](./test/medium/test_398_random_pick_index.rb) | -| 400. Nth Digit | [Link](https://leetcode.com/problems/nth-digit/) | [Link](./lib/medium/400_nth_digit.rb) | [Link](./test/medium/test_400_nth_digit.rb) | -| 402. Remove K Digits | [Link](https://leetcode.com/problems/remove-k-digits/) | [Link](./lib/medium/402_remove_k_digits.rb) | [Link](./test/medium/test_402_remove_k_digits.rb) | -| 417. Pacific Atlantic Water Flow | [Link](https://leetcode.com/problems/pacific-atlantic-water-flow/) | [Link](./lib/medium/417_pacific_atlantic_water_flow.rb) | [Link](./test/medium/test_417_pacific_atlantic_water_flow.rb) | -| 424. Longest Repeating Character Replacement | [Link](https://leetcode.com/problems/longest-repeating-character-replacement/) | [Link](./lib/medium/424_longest_repeating_character_replacement.rb) | [Link](./test/medium/test_424_longest_repeating_character_replacement.rb) | -| 429. N-ary Tree Level Order Traversal | [Link](https://leetcode.com/problems/n-ary-tree-level-order-traversal/) | [Link](./lib/medium/429_n_ary_tree_level_order_traversal.rb) | [Link](./test/medium/test_429_n_ary_tree_level_order_traversal.rb) | -| 435. Non-overlapping Intervals | [Link](https://leetcode.com/problems/non-overlapping-intervals/) | [Link](./lib/medium/435_non_overlapping_intervals.rb) | [Link](./test/medium/test_435_non_overlapping_intervals.rb) | -| 437. Path Sum III | [Link](https://leetcode.com/problems/path-sum-iii/) | [Link](./lib/medium/437_path_sum_iii.rb) | [Link](./test/medium/test_437_path_sum_iii.rb) | -| 438. Find All Anagrams in a String | [Link](https://leetcode.com/problems/find-all-anagrams-in-a-string/) | [Link](./lib/medium/438_find_all_anagrams_in_a_string.rb) | [Link](./test/medium/test_438_find_all_anagrams_in_a_string.rb) | -| 442. Find All Duplicates in an Array | [Link](https://leetcode.com/problems/find-all-duplicates-in-an-array/) | [Link](./lib/medium/442_find_all_duplicates_in_an_array.rb) | [Link](./test/medium/test_442_find_all_duplicates_in_an_array.rb) | -| 443. String Compression | [Link](https://leetcode.com/problems/string-compression/) | [Link](./lib/medium/443_string_compression.rb) | [Link](./test/medium/test_443_string_compression.rb) | -| 445. Add Two Numbers II | [Link](https://leetcode.com/problems/add-two-numbers-ii/) | [Link](./lib/medium/445_add_two_numbers_ii.rb) | [Link](./test/medium/test_445_add_two_numbers_ii.rb) | -| 449. Serialize and Deserialize BST | [Link](https://leetcode.com/problems/serialize-and-deserialize-bst/) | [Link](./lib/medium/449_serialize_and_deserialize_bst.rb) | [Link](./test/medium/test_449_serialize_and_deserialize_bst.rb) | -| 450. Delete Node in a BST | [Link](https://leetcode.com/problems/delete-node-in-a-bst/) | [Link](./lib/medium/450_delete_node_in_a_bst.rb) | [Link](./test/medium/test_450_delete_node_in_a_bst.rb) | -| 451. Sort Characters By Frequency | [Link](https://leetcode.com/problems/sort-characters-by-frequency/) | [Link](./lib/medium/451_sort_characters_by_frequency.rb) | [Link](./test/medium/test_451_sort_characters_by_frequency.rb) | -| 453. Minimum Moves to Equal Array Elements | [Link](https://leetcode.com/problems/minimum-moves-to-equal-array-elements/) | [Link](./lib/medium/453_minimum_moves_to_equal_array_elements.rb) | [Link](./test/medium/test_453_minimum_moves_to_equal_array_elements.rb) | -| 456. 132 Pattern | [Link](https://leetcode.com/problems/132-pattern/) | [Link](./lib/medium/456_132_pattern.rb) | [Link](./test/medium/test_456_132_pattern.rb) | -| 462. Minimum Moves to Equal Array Elements II | [Link](https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/) | [Link](./lib/medium/462_minimum_moves_to_equal_array_elements_ii.rb) | [Link](./test/medium/test_462_minimum_moves_to_equal_array_elements_ii.rb) | -| 468. Validate IP Address | [Link](https://leetcode.com/problems/validate-ip-address/) | [Link](./lib/medium/468_validate_ip_address.rb) | [Link](./test/medium/test_468_validate_ip_address.rb) | -| 474. Ones and Zeroes | [Link](https://leetcode.com/problems/ones-and-zeroes/) | [Link](./lib/medium/474_ones_and_zeroes.rb) | [Link](./test/medium/test_474_ones_and_zeroes.rb) | -| 503. Next Greater Element II | [Link](https://leetcode.com/problems/next-greater-element-ii/) | [Link](./lib/medium/503_next_greater_element_ii.rb) | [Link](./test/medium/test_503_next_greater_element_ii.rb) | -| 508. Most Frequent Subtree Sum | [Link](https://leetcode.com/problems/most-frequent-subtree-sum/) | [Link](./lib/medium/508_most_frequent_subtree_sum.rb) | [Link](./test/medium/test_508_most_frequent_subtree_sum.rb) | -| 513. Find Bottom Left Tree Value | [Link](https://leetcode.com/problems/find-bottom-left-tree-value/) | [Link](./lib/medium/513_find_bottom_left_tree_value.rb) | [Link](./test/medium/test_513_find_bottom_left_tree_value.rb) | -| 515. Find Largest Value in Each Tree Row | [Link](https://leetcode.com/problems/find-largest-value-in-each-tree-row/) | [Link](./lib/medium/515_find_largest_value_in_each_tree_row.rb) | [Link](./test/medium/test_515_find_largest_value_in_each_tree_row.rb) | -| 516. Longest Palindromic Subsequence | [Link](https://leetcode.com/problems/longest-palindromic-subsequence/) | [Link](./lib/medium/516_longest_palindromic_subsequence.rb) | [Link](./test/medium/test_516_longest_palindromic_subsequence.rb) | -| 523. Continuous Subarray Sum | [Link](https://leetcode.com/problems/continuous-subarray-sum/) | [Link](./lib/medium/523_continuous_subarray_sum.rb) | [Link](./test/medium/test_523_continuous_subarray_sum.rb) | -| 524. Longest Word in Dictionary through Deleting | [Link](https://leetcode.com/problems/longest-word-in-dictionary-through-deleting/) | [Link](./lib/medium/524_longest_word_in_dictionary_through_deleting.rb) | [Link](./test/medium/test_524_longest_word_in_dictionary_through_deleting.rb) | -| 535. Encode and Decode TinyURL | [Link](https://leetcode.com/problems/encode-and-decode-tinyurl/) | [Link](./lib/medium/535_encode_and_decode_tinyurl.rb) | [Link](./test/medium/test_535_encode_and_decode_tinyurl.rb) | -| 538. Convert BST to Greater Tree | [Link](https://leetcode.com/problems/convert-bst-to-greater-tree/) | [Link](./lib/medium/538_convert_bst_to_greater_tree.rb) | [Link](./test/medium/test_538_convert_bst_to_greater_tree.rb) | -| 556. Next Greater Element III | [Link](https://leetcode.com/problems/next-greater-element-iii/) | [Link](./lib/medium/556_next_greater_element_iii.rb) | [Link](./test/medium/test_556_next_greater_element_iii.rb) | -| 560. Subarray Sum Equals K | [Link](https://leetcode.com/problems/subarray-sum-equals-k/) | [Link](./lib/medium/560_subarray_sum_equals_k.rb) | [Link](./test/medium/test_560_subarray_sum_equals_k.rb) | -| 581. Shortest Unsorted Continuous Subarray | [Link](https://leetcode.com/problems/shortest-unsorted-continuous-subarray/) | [Link](./lib/medium/581_shortest_unsorted_continuous_subarray.rb) | [Link](./test/medium/test_581_shortest_unsorted_continuous_subarray.rb) | -| 606. Construct String from Binary Tree | [Link](https://leetcode.com/problems/construct-string-from-binary-tree/) | [Link](./lib/medium/606_construct_string_from_binary_tree.rb) | [Link](./test/medium/test_606_construct_string_from_binary_tree.rb) | -| 609. Find Duplicate File in System | [Link](https://leetcode.com/problems/find-duplicate-file-in-system/) | [Link](./lib/medium/609_find_duplicate_file_in_system.rb) | [Link](./test/medium/test_609_find_duplicate_file_in_system.rb) | -| 621. Task Scheduler | [Link](https://leetcode.com/problems/task-scheduler/) | [Link](./lib/medium/621_task_scheduler.rb) | [Link](./test/medium/test_621_task_scheduler.rb) | -| 622. Design Circular Queue | [Link](https://leetcode.com/problems/design-circular-queue/) | [Link](./lib/medium/622_design_circular_queue.rb) | [Link](./test/medium/test_622_design_circular_queue.rb) | -| 623. Add One Row to Tree | [Link](https://leetcode.com/problems/add-one-row-to-tree/) | [Link](./lib/medium/623_add_one_row_to_tree.rb) | [Link](./test/medium/test_623_add_one_row_to_tree.rb) | -| 641. Design Circular Deque | [Link](https://leetcode.com/problems/design-circular-deque/) | [Link](./lib/medium/641_design_circular_deque.rb) | [Link](./test/medium/test_641_design_circular_deque.rb) | -| 647. Palindromic Substrings | [Link](https://leetcode.com/problems/palindromic-substrings/) | [Link](./lib/medium/647_palindromic_substrings.rb) | [Link](./test/medium/test_647_palindromic_substrings.rb) | -| 648. Replace Words | [Link](https://leetcode.com/problems/replace-words/) | [Link](./lib/medium/648_replace_words.rb) | [Link](./test/medium/test_648_replace_words.rb) | -| 652. Find Duplicate Subtrees | [Link](https://leetcode.com/problems/find-duplicate-subtrees/) | [Link](./lib/medium/652_find_duplicate_subtrees.rb) | [Link](./test/medium/test_652_find_duplicate_subtrees.rb) | -| 654. Maximum Binary Tree | [Link](https://leetcode.com/problems/maximum-binary-tree/) | [Link](./lib/medium/654_maximum_binary_tree.rb) | [Link](./test/medium/test_654_maximum_binary_tree.rb) | -| 659. Split Array into Consecutive Subsequences | [Link](https://leetcode.com/problems/split-array-into-consecutive-subsequences/) | [Link](./lib/medium/659_split_array_into_consecutive_subsequences.rb) | [Link](./test/medium/test_659_split_array_into_consecutive_subsequences.rb) | -| 662. Maximum Width of Binary Tree | [Link](https://leetcode.com/problems/maximum-width-of-binary-tree/) | [Link](./lib/medium/662_maximum_width_of_binary_tree.rb) | [Link](./test/medium/test_662_maximum_width_of_binary_tree.rb) | -| 669. Trim a Binary Search Tree | [Link](https://leetcode.com/problems/trim-a-binary-search-tree/) | [Link](./lib/medium/669_trim_a_binary_search_tree.rb) | [Link](./test/medium/test_669_trim_a_binary_search_tree.rb) | -| 677. Map Sum Pairs | [Link](https://leetcode.com/problems/map-sum-pairs/) | [Link](./lib/medium/677_map_sum_pairs.rb) | [Link](./test/medium/test_677_map_sum_pairs.rb) | -| 678. Valid Parenthesis String | [Link](https://leetcode.com/problems/valid-parenthesis-string/) | [Link](./lib/medium/678_valid_parenthesis_string.rb) | [Link](./test/medium/test_678_valid_parenthesis_string.rb) | -| 687. Longest Univalue Path | [Link](https://leetcode.com/problems/longest-univalue-path/) | [Link](./lib/medium/687_longest_univalue_path.rb) | [Link](./test/medium/test_687_longest_univalue_path.rb) | -| 692. Top K Frequent Words | [Link](https://leetcode.com/problems/top-k-frequent-words/) | [Link](./lib/medium/692_top_k_frequent_words.rb) | [Link](./test/medium/test_692_top_k_frequent_words.rb) | -| 701. Insert into a Binary Search Tree | [Link](https://leetcode.com/problems/insert-into-a-binary-search-tree/) | [Link](./lib/medium/701_insert_into_a_binary_search_tree.rb) | [Link](./test/medium/test_701_insert_into_a_binary_search_tree.rb) | -| 707. Design Linked List | [Link](https://leetcode.com/problems/design-linked-list/) | [Link](./lib/medium/707_design_linked_list.rb) | [Link](./test/medium/test_707_design_linked_list.rb) | -| 713. Subarray Product Less Than K | [Link](https://leetcode.com/problems/subarray-product-less-than-k/) | [Link](./lib/medium/713_subarray_product_less_than_k.rb) | [Link](./test/medium/test_713_subarray_product_less_than_k.rb) | -| 720. Longest Word in Dictionary | [Link](https://leetcode.com/problems/longest-word-in-dictionary/) | [Link](./lib/medium/720_longest_word_in_dictionary.rb) | [Link](./test/medium/test_720_longest_word_in_dictionary.rb) | -| 725. Split Linked List in Parts | [Link](https://leetcode.com/problems/split-linked-list-in-parts/) | [Link](./lib/medium/725_split_linked_list_in_parts.rb) | [Link](./test/medium/test_725_split_linked_list_in_parts.rb) | -| 729. My Calendar I | [Link](https://leetcode.com/problems/my-calendar-i/) | [Link](./lib/medium/729_my_calendar_i.rb) | [Link](./test/medium/test_729_my_calendar_i.rb) | -| 735. Asteroid Collision | [Link](https://leetcode.com/problems/asteroid-collision/) | [Link](./lib/medium/735_asteroid_collision.rb) | [Link](./test/medium/test_735_asteroid_collision.rb) | -| 739. Daily Temperatures | [Link](https://leetcode.com/problems/daily-temperatures/) | [Link](./lib/medium/739_daily_temperatures.rb) | [Link](./test/medium/test_739_daily_temperatures.rb) | -| 763. Partition Labels | [Link](https://leetcode.com/problems/partition-labels/) | [Link](./lib/medium/763_partition_labels.rb) | [Link](./test/medium/test_763_partition_labels.rb) | -| 784. Letter Case Permutation | [Link](https://leetcode.com/problems/letter-case-permutation/) | [Link](./lib/medium/784_letter_case_permutation.rb) | [Link](./test/medium/test_784_letter_case_permutation.rb) | -| 797. All Paths From Source to Target | [Link](https://leetcode.com/problems/all-paths-from-source-to-target/) | [Link](./lib/medium/797_all_paths_from_source_to_target.rb) | [Link](./test/medium/test_797_all_paths_from_source_to_target.rb) | -| 814. Binary Tree Pruning | [Link](https://leetcode.com/problems/binary-tree-pruning/) | [Link](./lib/medium/814_binary_tree_pruning.rb) | [Link](./test/medium/test_814_binary_tree_pruning.rb) | -| 817. Linked List Components | [Link](https://leetcode.com/problems/linked-list-components/) | [Link](./lib/medium/817_linked_list_components.rb) | [Link](./test/medium/test_817_linked_list_components.rb) | -| 823. Binary Trees With Factors | [Link](https://leetcode.com/problems/binary-trees-with-factors/) | [Link](./lib/medium/823_binary_trees_with_factors.rb) | [Link](./test/medium/test_823_binary_trees_with_factors.rb) | -| 841. Keys and Rooms | [Link](https://leetcode.com/problems/keys-and-rooms/) | [Link](./lib/medium/841_keys_and_rooms.rb) | [Link](./test/medium/test_841_keys_and_rooms.rb) | -| 852. Peak Index in a Mountain Array | [Link](https://leetcode.com/problems/peak-index-in-a-mountain-array/) | [Link](./lib/medium/852_peak_index_in_a_mountain_array.rb) | [Link](./test/medium/test_852_peak_index_in_a_mountain_array.rb) | -| 856. Score of Parentheses | [Link](https://leetcode.com/problems/score-of-parentheses/) | [Link](./lib/medium/856_score_of_parentheses.rb) | [Link](./test/medium/test_856_score_of_parentheses.rb) | -| 858. Mirror Reflection | [Link](https://leetcode.com/problems/mirror-reflection/) | [Link](./lib/medium/858_mirror_reflection.rb) | [Link](./test/medium/test_858_mirror_reflection.rb) | -| 863. All Nodes Distance K in Binary Tree | [Link](https://leetcode.com/problems/all-nodes-distance-k-in-binary-tree/) | [Link](./lib/medium/863_all_nodes_distance_k_in_binary_tree.rb) | [Link](./test/medium/test_863_all_nodes_distance_k_in_binary_tree.rb) | -| 865. Smallest Subtree with all the Deepest Nodes | [Link](https://leetcode.com/problems/smallest-subtree-with-all-the-deepest-nodes/) | [Link](./lib/medium/865_smallest_subtree_with_all_the_deepest_nodes.rb) | [Link](./test/medium/test_865_smallest_subtree_with_all_the_deepest_nodes.rb) | -| 869. Reordered Power of 2 | [Link](https://leetcode.com/problems/reordered-power-of-2/) | [Link](./lib/medium/869_reordered_power_of_2.rb) | [Link](./test/medium/test_869_reordered_power_of_2.rb) | -| 880. Decoded String at Index | [Link](https://leetcode.com/problems/decoded-string-at-index/) | [Link](./lib/medium/880_decoded_string_at_index.rb) | [Link](./test/medium/test_880_decoded_string_at_index.rb) | +| Name | Link to LeetCode | Link to solution | Link to tests | +| ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- | +| 2. Add Two Numbers | [Link](https://leetcode.com/problems/add-two-numbers/) | [Link](./lib/medium/2_add_two_numbers.rb) | [Link](./test/medium/test_2_add_two_numbers.rb) | +| 3. Longest Substring Without Repeating Characters | [Link](https://leetcode.com/problems/longest-substring-without-repeating-characters/) | [Link](./lib/medium/3_longest_substring_without_repeating_characters.rb) | [Link](./test/medium/test_3_longest_substring_without_repeating_characters.rb) | +| 5. Longest Palindromic Substring | [Link](https://leetcode.com/problems/longest-palindromic-substring/) | [Link](./lib/medium/5_longest_palindromic_substring.rb) | [Link](./test/medium/test_5_longest_palindromic_substring.rb) | +| 7. Reverse Integer | [Link](https://leetcode.com/problems/reverse-integer/) | [Link](./lib/medium/7_reverse_integer.rb) | [Link](./test/medium/test_7_reverse_integer.rb) | +| 8. String to Integer (atoi) | [Link](https://leetcode.com/problems/string-to-integer-atoi/) | [Link](./lib/medium/8_string_to_integer_atoi.rb) | [Link](./test/medium/test_8_string_to_integer_atoi.rb) | +| 11. Container With Most Water | [Link](https://leetcode.com/problems/container-with-most-water/) | [Link](./lib/medium/11_container_with_most_water.rb) | [Link](./test/medium/test_11_container_with_most_water.rb) | +| 12. Integer to Roman | [Link](https://leetcode.com/problems/integer-to-roman/) | [Link](./lib/medium/12_integer_to_roman.rb) | [Link](./test/medium/test_12_integer_to_roman.rb) | +| 15. 3Sum | [Link](https://leetcode.com/problems/3sum/) | [Link](./lib/medium/15_3sum.rb) | [Link](./test/medium/test_15_3sum.rb) | +| 16. 3Sum Closest | [Link](https://leetcode.com/problems/3sum-closest/) | [Link](./lib/medium/16_3sum_closest.rb) | [Link](./test/medium/test_16_3sum_closest.rb) | +| 17. Letter Combinations of a Phone Number | [Link](https://leetcode.com/problems/letter-combinations-of-a-phone-number/) | [Link](./lib/medium/17_letter_combinations_of_a_phone_number.rb) | [Link](./test/medium/test_17_letter_combinations_of_a_phone_number.rb) | +| 19. Remove Nth Node From End of List | [Link](https://leetcode.com/problems/remove-nth-node-from-end-of-list/) | [Link](./lib/medium/19_remove_nth_node_from_end_of_list.rb) | [Link](./test/medium/test_19_remove_nth_node_from_end_of_list.rb) | +| 22. Generate Parentheses | [Link](https://leetcode.com/problems/generate-parentheses/) | [Link](./lib/medium/22_generate_parentheses.rb) | [Link](./test/medium/test_22_generate_parentheses.rb) | +| 24. Swap Nodes in Pairs | [Link](https://leetcode.com/problems/swap-nodes-in-pairs/) | [Link](./lib/medium/24_swap_nodes_in_pairs.rb) | [Link](./test/medium/test_24_swap_nodes_in_pairs.rb) | +| 29. Divide Two Integers | [Link](https://leetcode.com/problems/divide-two-integers/) | [Link](./lib/medium/29_divide_two_integers.rb) | [Link](./test/medium/test_29_divide_two_integers.rb) | +| 33. Search in Rotated Sorted Array | [Link](https://leetcode.com/problems/search-in-rotated-sorted-array/) | [Link](./lib/medium/33_search_in_rotated_sorted_array.rb) | [Link](./test/medium/test_33_search_in_rotated_sorted_array.rb) | +| 34. Find First and Last Position of Element in Sorted Array | [Link](https://leetcode.com/problems/find-first-and-last-position-of-element-in-sorted-array/) | [Link](./lib/medium/34_find_first_and_last_position_of_element_in_sorted_array.rb) | [Link](./test/medium/test_34_find_first_and_last_position_of_element_in_sorted_array.rb) | +| 36. Valid Sudoku | [Link](https://leetcode.com/problems/valid-sudoku/) | [Link](./lib/medium/36_valid_sudoku.rb) | [Link](./test/medium/test_36_valid_sudoku.rb) | +| 38. Count and Say | [Link](https://leetcode.com/problems/count-and-say/) | [Link](./lib/medium/38_count_and_say.rb) | [Link](./test/medium/test_38_count_and_say.rb) | +| 39. Combination Sum | [Link](https://leetcode.com/problems/combination-sum/) | [Link](./lib/medium/39_combination_sum.rb) | [Link](./test/medium/test_39_combination_sum.rb) | +| 43. Multiply Strings | [Link](https://leetcode.com/problems/multiply-strings/) | [Link](./lib/medium/43_multiply_strings.rb) | [Link](./test/medium/test_43_multiply_strings.rb) | +| 46. Permutations | [Link](https://leetcode.com/problems/permutations/) | [Link](./lib/medium/46_permutations.rb) | [Link](./test/medium/test_46_permutations.rb) | +| 48. Rotate Image | [Link](https://leetcode.com/problems/rotate-image/) | [Link](./lib/medium/48_rotate_image.rb) | [Link](./test/medium/test_48_rotate_image.rb) | +| 49. Group Anagrams | [Link](https://leetcode.com/problems/group-anagrams/) | [Link](./lib/medium/49_group_anagrams.rb) | [Link](./test/medium/test_49_group_anagrams.rb) | +| 53. Maximum Subarray | [Link](https://leetcode.com/problems/maximum-subarray/) | [Link](./lib/medium/53_maximum_subarray.rb) | [Link](./test/medium/test_53_maximum_subarray.rb) | +| 54. Spiral Matrix | [Link](https://leetcode.com/problems/spiral-matrix/) | [Link](./lib/medium/54_spiral_matrix.rb) | [Link](./test/medium/test_54_spiral_matrix.rb) | +| 55. Jump Game | [Link](https://leetcode.com/problems/jump-game/) | [Link](./lib/medium/55_jump_game.rb) | [Link](./test/medium/test_55_jump_game.rb) | +| 56. Merge Intervals | [Link](https://leetcode.com/problems/merge-intervals/) | [Link](./lib/medium/56_merge_intervals.rb) | [Link](./test/medium/test_56_merge_intervals.rb) | +| 57. Insert Interval | [Link](https://leetcode.com/problems/insert-interval/) | [Link](./lib/medium/57_insert_interval.rb) | [Link](./test/medium/test_57_insert_interval.rb) | +| 59. Spiral Matrix II | [Link](https://leetcode.com/problems/spiral-matrix-ii/) | [Link](./lib/medium/59_spiral_matrix_ii.rb) | [Link](./test/medium/test_59_spiral_matrix_ii.rb) | +| 61. Rotate List | [Link](https://leetcode.com/problems/rotate-list/) | [Link](./lib/medium/61_rotate_list.rb) | [Link](./test/medium/test_61_rotate_list.rb) | +| 62. Unique Paths | [Link](https://leetcode.com/problems/unique-paths/) | [Link](./lib/medium/62_unique_paths.rb) | [Link](./test/medium/test_62_unique_paths.rb) | +| 71. Simplify Path | [Link](https://leetcode.com/problems/simplify-path/) | [Link](./lib/medium/71_simplify_path.rb) | [Link](./test/medium/test_71_simplify_path.rb) | +| 74. Search a 2D Matrix | [Link](https://leetcode.com/problems/search-a-2d-matrix/) | [Link](./lib/medium/74_search_a_2d_matrix.rb) | [Link](./test/medium/test_74_search_a_2d_matrix.rb) | +| 75. Sort Colors | [Link](https://leetcode.com/problems/sort-colors/) | [Link](./lib/medium/75_sort_colors.rb) | [Link](./test/medium/test_75_sort_colors.rb) | +| 78. Subsets | [Link](https://leetcode.com/problems/subsets/) | [Link](./lib/medium/78_subsets.rb) | [Link](./test/medium/test_78_subsets.rb) | +| 82. Remove Duplicates from Sorted List II | [Link](https://leetcode.com/problems/remove-duplicates-from-sorted-list-ii/) | [Link](./lib/medium/82_remove_duplicates_from_sorted_list_ii.rb) | [Link](./test/medium/test_82_remove_duplicates_from_sorted_list_ii.rb) | +| 86. Partition List | [Link](https://leetcode.com/problems/partition-list/) | [Link](./lib/medium/86_partition_list.rb) | [Link](./test/medium/test_86_partition_list.rb) | +| 92. Reverse Linked List II | [Link](https://leetcode.com/problems/reverse-linked-list-ii/) | [Link](./lib/medium/92_reverse_linked_list_ii.rb) | [Link](./test/medium/test_92_reverse_linked_list_ii.rb) | +| 95. Unique Binary Search Trees II | [Link](https://leetcode.com/problems/unique-binary-search-trees-ii/) | [Link](./lib/medium/95_unique_binary_search_trees_ii.rb) | [Link](./test/medium/test_95_unique_binary_search_trees_ii.rb) | +| 96. Unique Binary Search Trees | [Link](https://leetcode.com/problems/unique-binary-search-trees/) | [Link](./lib/medium/96_unique_binary_search_trees.rb) | [Link](./test/medium/test_96_unique_binary_search_trees.rb) | +| 98. Validate Binary Search Tree | [Link](https://leetcode.com/problems/validate-binary-search-tree/) | [Link](./lib/medium/98_validate_binary_search_tree.rb) | [Link](./test/medium/test_98_validate_binary_search_tree.rb) | +| 99. Recover Binary Search Tree | [Link](https://leetcode.com/problems/recover-binary-search-tree/) | [Link](./lib/medium/99_recover_binary_search_tree.rb) | [Link](./test/medium/test_99_recover_binary_search_tree.rb) | +| 102. Binary Tree Level Order Traversal | [Link](https://leetcode.com/problems/binary-tree-level-order-traversal/) | [Link](./lib/medium/102_binary_tree_level_order_traversal.rb) | [Link](./test/medium/test_102_binary_tree_level_order_traversal.rb) | +| 103. Binary Tree Zigzag Level Order Traversal | [Link](https://leetcode.com/problems/binary-tree-zigzag-level-order-traversal/) | [Link](./lib/medium/103_binary_tree_zigzag_level_order_traversal.rb) | [Link](./test/medium/test_103_binary_tree_zigzag_level_order_traversal.rb) | +| 105. Construct Binary Tree from Preorder and Inorder Traversal | [Link](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/) | [Link](./lib/medium/105_construct_binary_tree_from_preorder_and_inorder_traversal.rb) | [Link](./test/medium/test_105_construct_binary_tree_from_preorder_and_inorder_traversal.rb) | +| 106. Construct Binary Tree from Inorder and Postorder Traversal | [Link](https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/) | [Link](./lib/medium/106_construct_binary_tree_from_inorder_and_postorder_traversal.rb) | [Link](./test/medium/test_106_construct_binary_tree_from_inorder_and_postorder_traversal.rb) | +| 107. Binary Tree Level Order Traversal II | [Link](https://leetcode.com/problems/binary-tree-level-order-traversal-ii/) | [Link](./lib/medium/107_binary_tree_level_order_traversal_ii.rb) | [Link](./test/medium/test_107_binary_tree_level_order_traversal_ii.rb) | +| 109. Convert Sorted List to Binary Search Tree | [Link](https://leetcode.com/problems/convert-sorted-list-to-binary-search-tree/) | [Link](./lib/medium/109_convert_sorted_list_to_binary_search_tree.rb) | [Link](./test/medium/test_109_convert_sorted_list_to_binary_search_tree.rb) | +| 113. Path Sum II | [Link](https://leetcode.com/problems/path-sum-ii/) | [Link](./lib/medium/113_path_sum_ii.rb) | [Link](./test/medium/test_113_path_sum_ii.rb) | +| 114. Flatten Binary Tree to Linked List | [Link](https://leetcode.com/problems/flatten-binary-tree-to-linked-list/) | [Link](./lib/medium/114_flatten_binary_tree_to_linked_list.rb) | [Link](./test/medium/test_114_flatten_binary_tree_to_linked_list.rb) | +| 116. Populating Next Right Pointers in Each Node | [Link](https://leetcode.com/problems/populating-next-right-pointers-in-each-node/) | [Link](./lib/medium/116_populating_next_right_pointers_in_each_node.rb) | [Link](./test/medium/test_116_populating_next_right_pointers_in_each_node.rb) | +| 117. Populating Next Right Pointers in Each Node II | [Link](https://leetcode.com/problems/populating-next-right-pointers-in-each-node-ii/) | [Link](./lib/medium/117_populating_next_right_pointers_in_each_node_ii.rb) | [Link](./test/medium/test_117_populating_next_right_pointers_in_each_node_ii.rb) | +| 120. Triangle | [Link](https://leetcode.com/problems/triangle/) | [Link](./lib/medium/120_triangle.rb) | [Link](./test/medium/test_120_triangle.rb) | +| 128. Longest Consecutive Sequence | [Link](https://leetcode.com/problems/longest-consecutive-sequence/) | [Link](./lib/medium/128_longest_consecutive_sequence.rb) | [Link](./test/medium/test_128_longest_consecutive_sequence.rb) | +| 129. Sum Root to Leaf Numbers | [Link](https://leetcode.com/problems/sum-root-to-leaf-numbers/) | [Link](./lib/medium/129_sum_root_to_leaf_numbers.rb) | [Link](./test/medium/test_129_sum_root_to_leaf_numbers.rb) | +| 133. Clone Graph | [Link](https://leetcode.com/problems/clone-graph/) | [Link](./lib/medium/133_clone_graph.rb) | [Link](./test/medium/test_133_clone_graph.rb) | +| 134. Gas Station | [Link](https://leetcode.com/problems/gas-station/) | [Link](./lib/medium/134_gas_station.rb) | [Link](./test/medium/test_134_gas_station.rb) | +| 138. Copy List with Random Pointer | [Link](https://leetcode.com/problems/copy-list-with-random-pointer/) | [Link](./lib/medium/138_copy_list_with_random_pointer.rb) | [Link](./test/medium/test_138_copy_list_with_random_pointer.rb) | +| 142. Linked List Cycle II | [Link](https://leetcode.com/problems/linked-list-cycle-ii/) | [Link](./lib/medium/142_linked_list_cycle_ii.rb) | [Link](./test/medium/test_142_linked_list_cycle_ii.rb) | +| 143. Reorder List | [Link](https://leetcode.com/problems/reorder-list/) | [Link](./lib/medium/143_reorder_list.rb) | [Link](./test/medium/test_143_reorder_list.rb) | +| 146. LRU Cache | [Link](https://leetcode.com/problems/lru-cache/) | [Link](./lib/medium/146_lru_cache.rb) | [Link](./test/medium/test_146_lru_cache.rb) | +| 147. Insertion Sort List | [Link](https://leetcode.com/problems/insertion-sort-list/) | [Link](./lib/medium/147_insertion_sort_list.rb) | [Link](./test/medium/test_147_insertion_sort_list.rb) | +| 148. Sort List | [Link](https://leetcode.com/problems/sort-list/) | [Link](./lib/medium/148_sort_list.rb) | [Link](./test/medium/test_148_sort_list.rb) | +| 150. Evaluate Reverse Polish Notation | [Link](https://leetcode.com/problems/evaluate-reverse-polish-notation/) | [Link](./lib/medium/150_evaluate_reverse_polish_notation.rb) | [Link](./test/medium/test_150_evaluate_reverse_polish_notation.rb) | +| 151. Reverse Words in a String | [Link](https://leetcode.com/problems/reverse-words-in-a-string/) | [Link](./lib/medium/151_reverse_words_in_a_string.rb) | [Link](./test/medium/test_151_reverse_words_in_a_string.rb) | +| 155. Min Stack | [Link](https://leetcode.com/problems/min-stack/) | [Link](./lib/medium/155_min_stack.rb) | [Link](./test/medium/test_155_min_stack.rb) | +| 165. Compare Version Numbers | [Link](https://leetcode.com/problems/compare-version-numbers/) | [Link](./lib/medium/165_compare_version_numbers.rb) | [Link](./test/medium/test_165_compare_version_numbers.rb) | +| 167. Two Sum II - Input Array Is Sorted | [Link](https://leetcode.com/problems/two-sum-ii-input-array-is-sorted/) | [Link](./lib/medium/167_two_sum_ii_input_array_is_sorted.rb) | [Link](./test/medium/test_167_two_sum_ii_input_array_is_sorted.rb) | +| 173. Binary Search Tree Iterator | [Link](https://leetcode.com/problems/binary-search-tree-iterator/) | [Link](./lib/medium/173_binary_search_tree_iterator.rb) | [Link](./test/medium/test_173_binary_search_tree_iterator.rb) | +| 179. Largest Number | [Link](https://leetcode.com/problems/largest-number/) | [Link](./lib/medium/179_largest_number.rb) | [Link](./test/medium/test_179_largest_number.rb) | +| 187. Repeated DNA Sequences | [Link](https://leetcode.com/problems/repeated-dna-sequences/) | [Link](./lib/medium/187_repeated_dna_sequences.rb) | [Link](./test/medium/test_187_repeated_dna_sequences.rb) | +| 189. Rotate Array | [Link](https://leetcode.com/problems/rotate-array/) | [Link](./lib/medium/189_rotate_array.rb) | [Link](./test/medium/test_189_rotate_array.rb) | +| 199. Binary Tree Right Side View | [Link](https://leetcode.com/problems/binary-tree-right-side-view/) | [Link](./lib/medium/199_binary_tree_right_side_view.rb) | [Link](./test/medium/test_199_binary_tree_right_side_view.rb) | +| 200. Number of Islands | [Link](https://leetcode.com/problems/number-of-islands/) | [Link](./lib/medium/200_number_of_islands.rb) | [Link](./test/medium/test_200_number_of_islands.rb) | +| 204. Count Primes | [Link](https://leetcode.com/problems/count-primes/) | [Link](./lib/medium/204_count_primes.rb) | [Link](./test/medium/test_204_count_primes.rb) | +| 208. Implement Trie (Prefix Tree) | [Link](https://leetcode.com/problems/implement-trie-prefix-tree/) | [Link](./lib/medium/208_implement_trie_prefix_tree.rb) | [Link](./test/medium/test_208_implement_trie_prefix_tree.rb) | +| 209. Minimum Size Subarray Sum | [Link](https://leetcode.com/problems/minimum-size-subarray-sum/) | [Link](./lib/medium/209_minimum_size_subarray_sum.rb) | [Link](./test/medium/test_209_minimum_size_subarray_sum.rb) | +| 215. Kth Largest Element in an Array | [Link](https://leetcode.com/problems/kth-largest-element-in-an-array/) | [Link](./lib/medium/215_kth_largest_element_in_an_array.rb) | [Link](./test/medium/test_215_kth_largest_element_in_an_array.rb) | +| 227. Basic Calculator II | [Link](https://leetcode.com/problems/basic-calculator-ii/) | [Link](./lib/medium/227_basic_calculator_ii.rb) | [Link](./test/medium/test_227_basic_calculator_ii.rb) | +| 230. Kth Smallest Element in a BST | [Link](https://leetcode.com/problems/kth-smallest-element-in-a-bst/) | [Link](./lib/medium/230_kth_smallest_element_in_a_bst.rb) | [Link](./test/medium/test_230_kth_smallest_element_in_a_bst.rb) | +| 235. Lowest Common Ancestor of a Binary Search Tree | [Link](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-search-tree/) | [Link](./lib/medium/235_lowest_common_ancestor_of_a_binary_search_tree.rb) | [Link](./test/medium/test_235_lowest_common_ancestor_of_a_binary_search_tree.rb) | +| 236. Lowest Common Ancestor of a Binary Tree | [Link](https://leetcode.com/problems/lowest-common-ancestor-of-a-binary-tree/) | [Link](./lib/medium/236_lowest_common_ancestor_of_a_binary_tree.rb) | [Link](./test/medium/test_236_lowest_common_ancestor_of_a_binary_tree.rb) | +| 237. Delete Node in a Linked List | [Link](https://leetcode.com/problems/delete-node-in-a-linked-list/) | [Link](./lib/medium/237_delete_node_in_a_linked_list.rb) | [Link](./test/medium/test_237_delete_node_in_a_linked_list.rb) | +| 238. Product of Array Except Self | [Link](https://leetcode.com/problems/product-of-array-except-self/) | [Link](./lib/medium/238_product_of_array_except_self.rb) | [Link](./test/medium/test_238_product_of_array_except_self.rb) | +| 240. Search a 2D Matrix II | [Link](https://leetcode.com/problems/search-a-2d-matrix-ii/) | [Link](./lib/medium/240_search_a_2d_matrix_ii.rb) | [Link](./test/medium/test_240_search_a_2d_matrix_ii.rb) | +| 284. Peeking Iterator | [Link](https://leetcode.com/problems/peeking-iterator/) | [Link](./lib/medium/284_peeking_iterator.rb) | [Link](./test/medium/test_284_peeking_iterator.rb) | +| 287. Find the Duplicate Number | [Link](https://leetcode.com/problems/find-the-duplicate-number/) | [Link](./lib/medium/287_find_the_duplicate_number.rb) | [Link](./test/medium/test_287_find_the_duplicate_number.rb) | +| 299. Bulls and Cows | [Link](https://leetcode.com/problems/bulls-and-cows/) | [Link](./lib/medium/299_bulls_and_cows.rb) | [Link](./test/medium/test_299_bulls_and_cows.rb) | +| 300. Longest Increasing Subsequence | [Link](https://leetcode.com/problems/longest-increasing-subsequence/) | [Link](./lib/medium/300_longest_increasing_subsequence.rb) | [Link](./test/medium/test_300_longest_increasing_subsequence.rb) | +| 304. Range Sum Query 2D - Immutable | [Link](https://leetcode.com/problems/range-sum-query-2d-immutable/) | [Link](./lib/medium/304_range_sum_query_2d_immutable.rb) | [Link](./test/medium/test_304_range_sum_query_2d_immutable.rb) | +| 316. Remove Duplicate Letters | [Link](https://leetcode.com/problems/remove-duplicate-letters/) | [Link](./lib/medium/316_remove_duplicate_letters.rb) | [Link](./test/medium/test_316_remove_duplicate_letters.rb) | +| 318. Maximum Product of Word Lengths | [Link](https://leetcode.com/problems/maximum-product-of-word-lengths/) | [Link](./lib/medium/318_maximum_product_of_word_lengths.rb) | [Link](./test/medium/test_318_maximum_product_of_word_lengths.rb) | +| 328. Odd Even Linked List | [Link](https://leetcode.com/problems/odd-even-linked-list/) | [Link](./lib/medium/328_odd_even_linked_list.rb) | [Link](./test/medium/test_328_odd_even_linked_list.rb) | +| 331. Verify Preorder Serialization of a Binary Tree | [Link](https://leetcode.com/problems/verify-preorder-serialization-of-a-binary-tree/) | [Link](./lib/medium/331_verify_preorder_serialization_of_a_binary_tree.rb) | [Link](./test/medium/test_331_verify_preorder_serialization_of_a_binary_tree.rb) | +| 334. Increasing Triplet Subsequence | [Link](https://leetcode.com/problems/increasing-triplet-subsequence/) | [Link](./lib/medium/334_increasing_triplet_subsequence.rb) | [Link](./test/medium/test_334_increasing_triplet_subsequence.rb) | +| 341. Flatten Nested List Iterator | [Link](https://leetcode.com/problems/flatten-nested-list-iterator/) | [Link](./lib/medium/341_flatten_nested_list_iterator.rb) | [Link](./test/medium/test_341_flatten_nested_list_iterator.rb) | +| 347. Top K Frequent Elements | [Link](https://leetcode.com/problems/top-k-frequent-elements/) | [Link](./lib/medium/347_top_k_frequent_elements.rb) | [Link](./test/medium/test_347_top_k_frequent_elements.rb) | +| 371. Sum of Two Integers | [Link](https://leetcode.com/problems/sum-of-two-integers/) | [Link](./lib/medium/371_sum_of_two_integers.rb) | [Link](./test/medium/test_371_sum_of_two_integers.rb) | +| 377. Combination Sum IV | [Link](https://leetcode.com/problems/combination-sum-iv/) | [Link](./lib/medium/377_combination_sum_iv.rb) | [Link](./test/medium/test_377_combination_sum_iv.rb) | +| 378. Kth Smallest Element in a Sorted Matrix | [Link](https://leetcode.com/problems/kth-smallest-element-in-a-sorted-matrix/) | [Link](./lib/medium/378_kth_smallest_element_in_a_sorted_matrix.rb) | [Link](./test/medium/test_378_kth_smallest_element_in_a_sorted_matrix.rb) | +| 380. Insert Delete GetRandom O(1) | [Link](https://leetcode.com/problems/insert-delete-getrandom-o1/) | [Link](./lib/medium/380_insert_delete_getrandom_o1.rb) | [Link](./test/medium/test_380_insert_delete_getrandom_o1.rb) | +| 382. Linked List Random Node | [Link](https://leetcode.com/problems/linked-list-random-node/) | [Link](./lib/medium/382_linked_list_random_node.rb) | [Link](./test/medium/test_382_linked_list_random_node.rb) | +| 388. Longest Absolute File Path | [Link](https://leetcode.com/problems/longest-absolute-file-path/) | [Link](./lib/medium/388_longest_absolute_file_path.rb) | [Link](./test/medium/test_388_longest_absolute_file_path.rb) | +| 394. Decode String | [Link](https://leetcode.com/problems/decode-string/) | [Link](./lib/medium/394_decode_string.rb) | [Link](./test/medium/test_394_decode_string.rb) | +| 398. Random Pick Index | [Link](https://leetcode.com/problems/random-pick-index/) | [Link](./lib/medium/398_random_pick_index.rb) | [Link](./test/medium/test_398_random_pick_index.rb) | +| 400. Nth Digit | [Link](https://leetcode.com/problems/nth-digit/) | [Link](./lib/medium/400_nth_digit.rb) | [Link](./test/medium/test_400_nth_digit.rb) | +| 402. Remove K Digits | [Link](https://leetcode.com/problems/remove-k-digits/) | [Link](./lib/medium/402_remove_k_digits.rb) | [Link](./test/medium/test_402_remove_k_digits.rb) | +| 417. Pacific Atlantic Water Flow | [Link](https://leetcode.com/problems/pacific-atlantic-water-flow/) | [Link](./lib/medium/417_pacific_atlantic_water_flow.rb) | [Link](./test/medium/test_417_pacific_atlantic_water_flow.rb) | +| 424. Longest Repeating Character Replacement | [Link](https://leetcode.com/problems/longest-repeating-character-replacement/) | [Link](./lib/medium/424_longest_repeating_character_replacement.rb) | [Link](./test/medium/test_424_longest_repeating_character_replacement.rb) | +| 429. N-ary Tree Level Order Traversal | [Link](https://leetcode.com/problems/n-ary-tree-level-order-traversal/) | [Link](./lib/medium/429_n_ary_tree_level_order_traversal.rb) | [Link](./test/medium/test_429_n_ary_tree_level_order_traversal.rb) | +| 435. Non-overlapping Intervals | [Link](https://leetcode.com/problems/non-overlapping-intervals/) | [Link](./lib/medium/435_non_overlapping_intervals.rb) | [Link](./test/medium/test_435_non_overlapping_intervals.rb) | +| 437. Path Sum III | [Link](https://leetcode.com/problems/path-sum-iii/) | [Link](./lib/medium/437_path_sum_iii.rb) | [Link](./test/medium/test_437_path_sum_iii.rb) | +| 438. Find All Anagrams in a String | [Link](https://leetcode.com/problems/find-all-anagrams-in-a-string/) | [Link](./lib/medium/438_find_all_anagrams_in_a_string.rb) | [Link](./test/medium/test_438_find_all_anagrams_in_a_string.rb) | +| 442. Find All Duplicates in an Array | [Link](https://leetcode.com/problems/find-all-duplicates-in-an-array/) | [Link](./lib/medium/442_find_all_duplicates_in_an_array.rb) | [Link](./test/medium/test_442_find_all_duplicates_in_an_array.rb) | +| 443. String Compression | [Link](https://leetcode.com/problems/string-compression/) | [Link](./lib/medium/443_string_compression.rb) | [Link](./test/medium/test_443_string_compression.rb) | +| 445. Add Two Numbers II | [Link](https://leetcode.com/problems/add-two-numbers-ii/) | [Link](./lib/medium/445_add_two_numbers_ii.rb) | [Link](./test/medium/test_445_add_two_numbers_ii.rb) | +| 449. Serialize and Deserialize BST | [Link](https://leetcode.com/problems/serialize-and-deserialize-bst/) | [Link](./lib/medium/449_serialize_and_deserialize_bst.rb) | [Link](./test/medium/test_449_serialize_and_deserialize_bst.rb) | +| 450. Delete Node in a BST | [Link](https://leetcode.com/problems/delete-node-in-a-bst/) | [Link](./lib/medium/450_delete_node_in_a_bst.rb) | [Link](./test/medium/test_450_delete_node_in_a_bst.rb) | +| 451. Sort Characters By Frequency | [Link](https://leetcode.com/problems/sort-characters-by-frequency/) | [Link](./lib/medium/451_sort_characters_by_frequency.rb) | [Link](./test/medium/test_451_sort_characters_by_frequency.rb) | +| 453. Minimum Moves to Equal Array Elements | [Link](https://leetcode.com/problems/minimum-moves-to-equal-array-elements/) | [Link](./lib/medium/453_minimum_moves_to_equal_array_elements.rb) | [Link](./test/medium/test_453_minimum_moves_to_equal_array_elements.rb) | +| 456. 132 Pattern | [Link](https://leetcode.com/problems/132-pattern/) | [Link](./lib/medium/456_132_pattern.rb) | [Link](./test/medium/test_456_132_pattern.rb) | +| 462. Minimum Moves to Equal Array Elements II | [Link](https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/) | [Link](./lib/medium/462_minimum_moves_to_equal_array_elements_ii.rb) | [Link](./test/medium/test_462_minimum_moves_to_equal_array_elements_ii.rb) | +| 468. Validate IP Address | [Link](https://leetcode.com/problems/validate-ip-address/) | [Link](./lib/medium/468_validate_ip_address.rb) | [Link](./test/medium/test_468_validate_ip_address.rb) | +| 474. Ones and Zeroes | [Link](https://leetcode.com/problems/ones-and-zeroes/) | [Link](./lib/medium/474_ones_and_zeroes.rb) | [Link](./test/medium/test_474_ones_and_zeroes.rb) | +| 503. Next Greater Element II | [Link](https://leetcode.com/problems/next-greater-element-ii/) | [Link](./lib/medium/503_next_greater_element_ii.rb) | [Link](./test/medium/test_503_next_greater_element_ii.rb) | +| 508. Most Frequent Subtree Sum | [Link](https://leetcode.com/problems/most-frequent-subtree-sum/) | [Link](./lib/medium/508_most_frequent_subtree_sum.rb) | [Link](./test/medium/test_508_most_frequent_subtree_sum.rb) | +| 513. Find Bottom Left Tree Value | [Link](https://leetcode.com/problems/find-bottom-left-tree-value/) | [Link](./lib/medium/513_find_bottom_left_tree_value.rb) | [Link](./test/medium/test_513_find_bottom_left_tree_value.rb) | +| 515. Find Largest Value in Each Tree Row | [Link](https://leetcode.com/problems/find-largest-value-in-each-tree-row/) | [Link](./lib/medium/515_find_largest_value_in_each_tree_row.rb) | [Link](./test/medium/test_515_find_largest_value_in_each_tree_row.rb) | +| 516. Longest Palindromic Subsequence | [Link](https://leetcode.com/problems/longest-palindromic-subsequence/) | [Link](./lib/medium/516_longest_palindromic_subsequence.rb) | [Link](./test/medium/test_516_longest_palindromic_subsequence.rb) | +| 523. Continuous Subarray Sum | [Link](https://leetcode.com/problems/continuous-subarray-sum/) | [Link](./lib/medium/523_continuous_subarray_sum.rb) | [Link](./test/medium/test_523_continuous_subarray_sum.rb) | +| 524. Longest Word in Dictionary through Deleting | [Link](https://leetcode.com/problems/longest-word-in-dictionary-through-deleting/) | [Link](./lib/medium/524_longest_word_in_dictionary_through_deleting.rb) | [Link](./test/medium/test_524_longest_word_in_dictionary_through_deleting.rb) | +| 535. Encode and Decode TinyURL | [Link](https://leetcode.com/problems/encode-and-decode-tinyurl/) | [Link](./lib/medium/535_encode_and_decode_tinyurl.rb) | [Link](./test/medium/test_535_encode_and_decode_tinyurl.rb) | +| 538. Convert BST to Greater Tree | [Link](https://leetcode.com/problems/convert-bst-to-greater-tree/) | [Link](./lib/medium/538_convert_bst_to_greater_tree.rb) | [Link](./test/medium/test_538_convert_bst_to_greater_tree.rb) | +| 556. Next Greater Element III | [Link](https://leetcode.com/problems/next-greater-element-iii/) | [Link](./lib/medium/556_next_greater_element_iii.rb) | [Link](./test/medium/test_556_next_greater_element_iii.rb) | +| 560. Subarray Sum Equals K | [Link](https://leetcode.com/problems/subarray-sum-equals-k/) | [Link](./lib/medium/560_subarray_sum_equals_k.rb) | [Link](./test/medium/test_560_subarray_sum_equals_k.rb) | +| 581. Shortest Unsorted Continuous Subarray | [Link](https://leetcode.com/problems/shortest-unsorted-continuous-subarray/) | [Link](./lib/medium/581_shortest_unsorted_continuous_subarray.rb) | [Link](./test/medium/test_581_shortest_unsorted_continuous_subarray.rb) | +| 606. Construct String from Binary Tree | [Link](https://leetcode.com/problems/construct-string-from-binary-tree/) | [Link](./lib/medium/606_construct_string_from_binary_tree.rb) | [Link](./test/medium/test_606_construct_string_from_binary_tree.rb) | +| 609. Find Duplicate File in System | [Link](https://leetcode.com/problems/find-duplicate-file-in-system/) | [Link](./lib/medium/609_find_duplicate_file_in_system.rb) | [Link](./test/medium/test_609_find_duplicate_file_in_system.rb) | +| 621. Task Scheduler | [Link](https://leetcode.com/problems/task-scheduler/) | [Link](./lib/medium/621_task_scheduler.rb) | [Link](./test/medium/test_621_task_scheduler.rb) | +| 622. Design Circular Queue | [Link](https://leetcode.com/problems/design-circular-queue/) | [Link](./lib/medium/622_design_circular_queue.rb) | [Link](./test/medium/test_622_design_circular_queue.rb) | +| 623. Add One Row to Tree | [Link](https://leetcode.com/problems/add-one-row-to-tree/) | [Link](./lib/medium/623_add_one_row_to_tree.rb) | [Link](./test/medium/test_623_add_one_row_to_tree.rb) | +| 641. Design Circular Deque | [Link](https://leetcode.com/problems/design-circular-deque/) | [Link](./lib/medium/641_design_circular_deque.rb) | [Link](./test/medium/test_641_design_circular_deque.rb) | +| 647. Palindromic Substrings | [Link](https://leetcode.com/problems/palindromic-substrings/) | [Link](./lib/medium/647_palindromic_substrings.rb) | [Link](./test/medium/test_647_palindromic_substrings.rb) | +| 648. Replace Words | [Link](https://leetcode.com/problems/replace-words/) | [Link](./lib/medium/648_replace_words.rb) | [Link](./test/medium/test_648_replace_words.rb) | +| 652. Find Duplicate Subtrees | [Link](https://leetcode.com/problems/find-duplicate-subtrees/) | [Link](./lib/medium/652_find_duplicate_subtrees.rb) | [Link](./test/medium/test_652_find_duplicate_subtrees.rb) | +| 654. Maximum Binary Tree | [Link](https://leetcode.com/problems/maximum-binary-tree/) | [Link](./lib/medium/654_maximum_binary_tree.rb) | [Link](./test/medium/test_654_maximum_binary_tree.rb) | +| 659. Split Array into Consecutive Subsequences | [Link](https://leetcode.com/problems/split-array-into-consecutive-subsequences/) | [Link](./lib/medium/659_split_array_into_consecutive_subsequences.rb) | [Link](./test/medium/test_659_split_array_into_consecutive_subsequences.rb) | +| 662. Maximum Width of Binary Tree | [Link](https://leetcode.com/problems/maximum-width-of-binary-tree/) | [Link](./lib/medium/662_maximum_width_of_binary_tree.rb) | [Link](./test/medium/test_662_maximum_width_of_binary_tree.rb) | +| 669. Trim a Binary Search Tree | [Link](https://leetcode.com/problems/trim-a-binary-search-tree/) | [Link](./lib/medium/669_trim_a_binary_search_tree.rb) | [Link](./test/medium/test_669_trim_a_binary_search_tree.rb) | +| 677. Map Sum Pairs | [Link](https://leetcode.com/problems/map-sum-pairs/) | [Link](./lib/medium/677_map_sum_pairs.rb) | [Link](./test/medium/test_677_map_sum_pairs.rb) | +| 678. Valid Parenthesis String | [Link](https://leetcode.com/problems/valid-parenthesis-string/) | [Link](./lib/medium/678_valid_parenthesis_string.rb) | [Link](./test/medium/test_678_valid_parenthesis_string.rb) | +| 687. Longest Univalue Path | [Link](https://leetcode.com/problems/longest-univalue-path/) | [Link](./lib/medium/687_longest_univalue_path.rb) | [Link](./test/medium/test_687_longest_univalue_path.rb) | +| 692. Top K Frequent Words | [Link](https://leetcode.com/problems/top-k-frequent-words/) | [Link](./lib/medium/692_top_k_frequent_words.rb) | [Link](./test/medium/test_692_top_k_frequent_words.rb) | +| 701. Insert into a Binary Search Tree | [Link](https://leetcode.com/problems/insert-into-a-binary-search-tree/) | [Link](./lib/medium/701_insert_into_a_binary_search_tree.rb) | [Link](./test/medium/test_701_insert_into_a_binary_search_tree.rb) | +| 707. Design Linked List | [Link](https://leetcode.com/problems/design-linked-list/) | [Link](./lib/medium/707_design_linked_list.rb) | [Link](./test/medium/test_707_design_linked_list.rb) | +| 713. Subarray Product Less Than K | [Link](https://leetcode.com/problems/subarray-product-less-than-k/) | [Link](./lib/medium/713_subarray_product_less_than_k.rb) | [Link](./test/medium/test_713_subarray_product_less_than_k.rb) | +| 720. Longest Word in Dictionary | [Link](https://leetcode.com/problems/longest-word-in-dictionary/) | [Link](./lib/medium/720_longest_word_in_dictionary.rb) | [Link](./test/medium/test_720_longest_word_in_dictionary.rb) | +| 725. Split Linked List in Parts | [Link](https://leetcode.com/problems/split-linked-list-in-parts/) | [Link](./lib/medium/725_split_linked_list_in_parts.rb) | [Link](./test/medium/test_725_split_linked_list_in_parts.rb) | +| 729. My Calendar I | [Link](https://leetcode.com/problems/my-calendar-i/) | [Link](./lib/medium/729_my_calendar_i.rb) | [Link](./test/medium/test_729_my_calendar_i.rb) | +| 735. Asteroid Collision | [Link](https://leetcode.com/problems/asteroid-collision/) | [Link](./lib/medium/735_asteroid_collision.rb) | [Link](./test/medium/test_735_asteroid_collision.rb) | +| 739. Daily Temperatures | [Link](https://leetcode.com/problems/daily-temperatures/) | [Link](./lib/medium/739_daily_temperatures.rb) | [Link](./test/medium/test_739_daily_temperatures.rb) | +| 763. Partition Labels | [Link](https://leetcode.com/problems/partition-labels/) | [Link](./lib/medium/763_partition_labels.rb) | [Link](./test/medium/test_763_partition_labels.rb) | +| 784. Letter Case Permutation | [Link](https://leetcode.com/problems/letter-case-permutation/) | [Link](./lib/medium/784_letter_case_permutation.rb) | [Link](./test/medium/test_784_letter_case_permutation.rb) | +| 797. All Paths From Source to Target | [Link](https://leetcode.com/problems/all-paths-from-source-to-target/) | [Link](./lib/medium/797_all_paths_from_source_to_target.rb) | [Link](./test/medium/test_797_all_paths_from_source_to_target.rb) | +| 814. Binary Tree Pruning | [Link](https://leetcode.com/problems/binary-tree-pruning/) | [Link](./lib/medium/814_binary_tree_pruning.rb) | [Link](./test/medium/test_814_binary_tree_pruning.rb) | +| 817. Linked List Components | [Link](https://leetcode.com/problems/linked-list-components/) | [Link](./lib/medium/817_linked_list_components.rb) | [Link](./test/medium/test_817_linked_list_components.rb) | +| 823. Binary Trees With Factors | [Link](https://leetcode.com/problems/binary-trees-with-factors/) | [Link](./lib/medium/823_binary_trees_with_factors.rb) | [Link](./test/medium/test_823_binary_trees_with_factors.rb) | +| 841. Keys and Rooms | [Link](https://leetcode.com/problems/keys-and-rooms/) | [Link](./lib/medium/841_keys_and_rooms.rb) | [Link](./test/medium/test_841_keys_and_rooms.rb) | +| 852. Peak Index in a Mountain Array | [Link](https://leetcode.com/problems/peak-index-in-a-mountain-array/) | [Link](./lib/medium/852_peak_index_in_a_mountain_array.rb) | [Link](./test/medium/test_852_peak_index_in_a_mountain_array.rb) | +| 856. Score of Parentheses | [Link](https://leetcode.com/problems/score-of-parentheses/) | [Link](./lib/medium/856_score_of_parentheses.rb) | [Link](./test/medium/test_856_score_of_parentheses.rb) | +| 858. Mirror Reflection | [Link](https://leetcode.com/problems/mirror-reflection/) | [Link](./lib/medium/858_mirror_reflection.rb) | [Link](./test/medium/test_858_mirror_reflection.rb) | +| 863. All Nodes Distance K in Binary Tree | [Link](https://leetcode.com/problems/all-nodes-distance-k-in-binary-tree/) | [Link](./lib/medium/863_all_nodes_distance_k_in_binary_tree.rb) | [Link](./test/medium/test_863_all_nodes_distance_k_in_binary_tree.rb) | +| 865. Smallest Subtree with all the Deepest Nodes | [Link](https://leetcode.com/problems/smallest-subtree-with-all-the-deepest-nodes/) | [Link](./lib/medium/865_smallest_subtree_with_all_the_deepest_nodes.rb) | [Link](./test/medium/test_865_smallest_subtree_with_all_the_deepest_nodes.rb) | +| 869. Reordered Power of 2 | [Link](https://leetcode.com/problems/reordered-power-of-2/) | [Link](./lib/medium/869_reordered_power_of_2.rb) | [Link](./test/medium/test_869_reordered_power_of_2.rb) | +| 880. Decoded String at Index | [Link](https://leetcode.com/problems/decoded-string-at-index/) | [Link](./lib/medium/880_decoded_string_at_index.rb) | [Link](./test/medium/test_880_decoded_string_at_index.rb) | +| 889. Construct Binary Tree from Preorder and Postorder Traversal | [Link](https://leetcode.com/problems/construct-binary-tree-from-preorder-and-postorder-traversal/) | [Link](./lib/medium/889_construct_binary_tree_from_preorder_and_postorder_traversal.rb) | [Link](./test/medium/test_889_construct_binary_tree_from_preorder_and_postorder_traversal.rb) | ### Hard diff --git a/leetcode-ruby.gemspec b/leetcode-ruby.gemspec index 0a0b53a0..2705aab2 100644 --- a/leetcode-ruby.gemspec +++ b/leetcode-ruby.gemspec @@ -5,7 +5,7 @@ require 'English' ::Gem::Specification.new do |s| s.required_ruby_version = '>= 3.0' s.name = 'leetcode-ruby' - s.version = '7.7.8' + s.version = '7.7.9' s.license = 'MIT' s.files = ::Dir['lib/**/*.rb'] + %w[README.md] s.executable = 'leetcode-ruby' diff --git a/lib/medium/889_construct_binary_tree_from_preorder_and_postorder_traversal.rb b/lib/medium/889_construct_binary_tree_from_preorder_and_postorder_traversal.rb new file mode 100644 index 00000000..6e20b1b8 --- /dev/null +++ b/lib/medium/889_construct_binary_tree_from_preorder_and_postorder_traversal.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require_relative '../common/binary_tree' + +# https://leetcode.com/problems/construct-binary-tree-from-preorder-and-postorder-traversal/ +# @param {Integer[]} preorder +# @param {Integer[]} postorder +# @return {TreeNode} +def construct_from_pre_post(preorder, postorder) + build_full_bt(preorder, postorder, 0, preorder.size - 1, 0, postorder.size - 1) +end + +private + +# @param {Integer[]} pre +# @param {Integer[]} post +# @param {Integer} pre_start +# @param {Integer} pre_end +# @param {Integer} post_start +# @param {Integer} post_end +# @return {TreeNode} +def build_full_bt(pre, post, pre_start, pre_end, post_start, post_end) + return if pre_start > pre_end + + return ::TreeNode.new(pre[pre_start]) if pre_start == pre_end + + node = ::TreeNode.new(pre[pre_start]) + + root_index = find_root_for_construct_from_pre_post(post, post_start, post_end, pre[pre_start + 1]) + + node.left = build_full_bt(pre, post, pre_start + 1, pre_start + root_index - post_start + 1, post_start, root_index) + node.right = build_full_bt(pre, post, pre_end - post_end + root_index + 2, pre_end, root_index + 1, post_end - 1) + + node +end + +# @param {Integer[]} post +# @param {Integer} s +# @param {Integer} e +# @param {Integer} root +# @return {Integer} +def find_root_for_construct_from_pre_post(post, s, e, root) + (s..e).each { |i| return i if post[i] == root } +end diff --git a/test/medium/test_889_construct_binary_tree_from_preorder_and_postorder_traversal.rb b/test/medium/test_889_construct_binary_tree_from_preorder_and_postorder_traversal.rb new file mode 100644 index 00000000..afe647c2 --- /dev/null +++ b/test/medium/test_889_construct_binary_tree_from_preorder_and_postorder_traversal.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require_relative '../test_helper' +require_relative '../../lib/common/binary_tree' +require_relative '../../lib/medium/889_construct_binary_tree_from_preorder_and_postorder_traversal' +require 'minitest/autorun' + +class ConstructBinaryTreeFromPreorderAndPostorderTraversalTest < ::Minitest::Test + def test_default_one + assert( + ::TreeNode.are_equals( + ::TreeNode.new( + 1, + ::TreeNode.new( + 2, + ::TreeNode.new(4), + ::TreeNode.new(5) + ), + ::TreeNode.new( + 3, + ::TreeNode.new(6), + ::TreeNode.new(7) + ) + ), + construct_from_pre_post( + [1, 2, 4, 5, 3, 6, 7], + [4, 5, 2, 6, 7, 3, 1] + ) + ) + ) + end + + def test_default_two + assert( + ::TreeNode.are_equals( + ::TreeNode.new(1), + construct_from_pre_post( + [1], + [1] + ) + ) + ) + end +end