leetcode-py-sdk 0.43.7__tar.gz → 0.44.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (196) hide show
  1. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/PKG-INFO +1 -1
  2. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/pyproject.toml +1 -1
  3. leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/combination_sum_ii.json +79 -0
  4. leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/generate_parentheses.json +76 -0
  5. leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/multiply_strings.json +79 -0
  6. leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/powx_n.json +82 -0
  7. leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/regular_expression_matching.json +87 -0
  8. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/two_sum.json +1 -1
  9. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/tags.json5 +5 -0
  10. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/tools/generator.py +3 -1
  11. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/README.md +0 -0
  12. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/__init__.py +0 -0
  13. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/__init__.py +0 -0
  14. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/commands/__init__.py +0 -0
  15. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/commands/gen.py +0 -0
  16. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/commands/list.py +0 -0
  17. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/commands/scrape.py +0 -0
  18. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/main.py +0 -0
  19. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/cookiecutter.json +0 -0
  20. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/accounts_merge.json +0 -0
  21. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/add_binary.json +0 -0
  22. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/add_two_numbers.json +0 -0
  23. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/alien_dictionary.json +0 -0
  24. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/balanced_binary_tree.json +0 -0
  25. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/basic_calculator.json +0 -0
  26. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/best_time_to_buy_and_sell_stock.json +0 -0
  27. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_search.json +0 -0
  28. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_inorder_traversal.json +0 -0
  29. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_level_order_traversal.json +0 -0
  30. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_maximum_path_sum.json +0 -0
  31. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_postorder_traversal.json +0 -0
  32. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_preorder_traversal.json +0 -0
  33. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_right_side_view.json +0 -0
  34. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/cheapest_flights_within_k_stops.json +0 -0
  35. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/climbing_stairs.json +0 -0
  36. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/clone_graph.json +0 -0
  37. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/coin_change.json +0 -0
  38. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/combination_sum.json +0 -0
  39. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/construct_binary_tree_from_preorder_and_inorder_traversal.json +0 -0
  40. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/container_with_most_water.json +0 -0
  41. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/contains_duplicate.json +0 -0
  42. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/contiguous_array.json +0 -0
  43. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/counting_bits.json +0 -0
  44. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/course_schedule.json +0 -0
  45. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/course_schedule_ii.json +0 -0
  46. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/daily_temperatures.json +0 -0
  47. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/decode_string.json +0 -0
  48. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/decode_ways.json +0 -0
  49. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/design_add_and_search_words_data_structure.json +0 -0
  50. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/design_in_memory_file_system.json +0 -0
  51. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/diagonal_traverse.json +0 -0
  52. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/diameter_of_binary_tree.json +0 -0
  53. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/encode_and_decode_strings.json +0 -0
  54. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/evaluate_reverse_polish_notation.json +0 -0
  55. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/find_all_anagrams_in_a_string.json +0 -0
  56. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/find_first_and_last_position_of_element_in_sorted_array.json +0 -0
  57. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/find_k_closest_elements.json +0 -0
  58. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/find_median_from_data_stream.json +0 -0
  59. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/find_minimum_in_rotated_sorted_array.json +0 -0
  60. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/find_the_duplicate_number.json +0 -0
  61. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/first_bad_version.json +0 -0
  62. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/first_missing_positive.json +0 -0
  63. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/flood_fill.json +0 -0
  64. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/gas_station.json +0 -0
  65. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/graph_valid_tree.json +0 -0
  66. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/group_anagrams.json +0 -0
  67. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/house_robber.json +0 -0
  68. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/house_robber_ii.json +0 -0
  69. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/implement_queue_using_stacks.json +0 -0
  70. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/implement_trie_prefix_tree.json +0 -0
  71. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/insert_interval.json +0 -0
  72. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/invert_binary_tree.json +0 -0
  73. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/is_graph_bipartite.json +0 -0
  74. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/is_subsequence.json +0 -0
  75. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/jump_game.json +0 -0
  76. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/jump_game_ii.json +0 -0
  77. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/k_closest_points_to_origin.json +0 -0
  78. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/kth_smallest_element_in_a_bst.json +0 -0
  79. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/largest_rectangle_in_histogram.json +0 -0
  80. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/letter_combinations_of_a_phone_number.json +0 -0
  81. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/linked_list_cycle.json +0 -0
  82. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/linked_list_cycle_ii.json +0 -0
  83. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_common_subsequence.json +0 -0
  84. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_consecutive_sequence.json +0 -0
  85. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_increasing_path_in_a_matrix.json +0 -0
  86. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_increasing_subsequence.json +0 -0
  87. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_palindrome.json +0 -0
  88. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_palindromic_substring.json +0 -0
  89. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_repeating_character_replacement.json +0 -0
  90. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_substring_without_repeating_characters.json +0 -0
  91. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/lowest_common_ancestor_of_a_binary_search_tree.json +0 -0
  92. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/lowest_common_ancestor_of_a_binary_tree.json +0 -0
  93. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/lru_cache.json +0 -0
  94. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/majority_element.json +0 -0
  95. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/max_points_on_a_line.json +0 -0
  96. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_depth_of_binary_tree.json +0 -0
  97. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_product_subarray.json +0 -0
  98. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_profit_in_job_scheduling.json +0 -0
  99. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_subarray.json +0 -0
  100. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_width_of_binary_tree.json +0 -0
  101. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/median_of_two_sorted_arrays.json +0 -0
  102. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/meeting_rooms.json +0 -0
  103. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/meeting_rooms_ii.json +0 -0
  104. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_intervals.json +0 -0
  105. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_k_sorted_lists.json +0 -0
  106. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_two_sorted_lists.json +0 -0
  107. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/middle_of_the_linked_list.json +0 -0
  108. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/min_cost_to_connect_all_points.json +0 -0
  109. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/min_stack.json +0 -0
  110. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_height_trees.json +0 -0
  111. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_path_sum.json +0 -0
  112. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_window_substring.json +0 -0
  113. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/missing_number.json +0 -0
  114. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/my_calendar_i.json +0 -0
  115. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/next_permutation.json +0 -0
  116. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/non_overlapping_intervals.json +0 -0
  117. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_1_bits.json +0 -0
  118. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_connected_components_in_an_undirected_graph.json +0 -0
  119. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_islands.json +0 -0
  120. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_provinces.json +0 -0
  121. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/odd_even_linked_list.json +0 -0
  122. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/pacific_atlantic_water_flow.json +0 -0
  123. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/palindrome_partitioning.json +0 -0
  124. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/palindromic_substrings.json +0 -0
  125. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/partition_equal_subset_sum.json +0 -0
  126. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/path_sum_ii.json +0 -0
  127. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/path_sum_iii.json +0 -0
  128. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/permutation_in_string.json +0 -0
  129. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/permutations.json +0 -0
  130. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/product_of_array_except_self.json +0 -0
  131. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/ransom_note.json +0 -0
  132. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/remove_nth_node_from_end_of_list.json +0 -0
  133. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reorder_list.json +0 -0
  134. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_bits.json +0 -0
  135. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_integer.json +0 -0
  136. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_linked_list.json +0 -0
  137. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_linked_list_ii.json +0 -0
  138. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_nodes_in_k_group.json +0 -0
  139. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_words_in_a_string.json +0 -0
  140. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/rotate_array.json +0 -0
  141. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/rotate_image.json +0 -0
  142. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/rotting_oranges.json +0 -0
  143. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/same_tree.json +0 -0
  144. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/search_in_rotated_sorted_array.json +0 -0
  145. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/serialize_and_deserialize_binary_tree.json +0 -0
  146. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/set_matrix_zeroes.json +0 -0
  147. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/single_number_iii.json +0 -0
  148. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/sliding_window_maximum.json +0 -0
  149. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/sort_colors.json +0 -0
  150. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/spiral_matrix.json +0 -0
  151. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/string_to_integer_atoi.json +0 -0
  152. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/subarray_sum_equals_k.json +0 -0
  153. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/subsets.json +0 -0
  154. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/subtree_of_another_tree.json +0 -0
  155. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/sum_of_two_integers.json +0 -0
  156. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/swap_nodes_in_pairs.json +0 -0
  157. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/task_scheduler.json +0 -0
  158. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/three_sum.json +0 -0
  159. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/time_based_key_value_store.json +0 -0
  160. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/top_k_frequent_elements.json +0 -0
  161. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/top_k_frequent_words.json +0 -0
  162. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/trapping_rain_water.json +0 -0
  163. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/unique_paths.json +0 -0
  164. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_anagram.json +0 -0
  165. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_palindrome.json +0 -0
  166. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_parentheses.json +0 -0
  167. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_sudoku.json +0 -0
  168. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/validate_binary_search_tree.json +0 -0
  169. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/word_break.json +0 -0
  170. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/word_ladder.json +0 -0
  171. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/word_search.json +0 -0
  172. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/word_search_ii.json +0 -0
  173. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/zero_one_matrix.json +0 -0
  174. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/README.md +0 -0
  175. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/__init__.py +0 -0
  176. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/helpers.py +0 -0
  177. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/playground.ipynb +0 -0
  178. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/solution.py +0 -0
  179. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/test_solution.py +0 -0
  180. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/utils/__init__.py +0 -0
  181. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/utils/problem_finder.py +0 -0
  182. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/utils/resources.py +0 -0
  183. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/utils/tag_helpers.py +0 -0
  184. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/__init__.py +0 -0
  185. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/_utils.py +0 -0
  186. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/dict_tree.py +0 -0
  187. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/doubly_list_node.py +0 -0
  188. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/graph_node.py +0 -0
  189. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/list_node.py +0 -0
  190. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/tree_node.py +0 -0
  191. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/py.typed +0 -0
  192. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/tools/__init__.py +0 -0
  193. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/tools/check_test_cases.py +0 -0
  194. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/tools/logged_test.py +0 -0
  195. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/tools/parser.py +0 -0
  196. {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/tools/scraper.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: leetcode-py-sdk
3
- Version: 0.43.7
3
+ Version: 0.44.0
4
4
  Summary: Modern Python LeetCode practice environment with automated problem generation, beautiful data structure visualizations, and comprehensive testing
5
5
  Keywords: algorithms,coding-practice,data-structures,interview-prep,leetcode
6
6
  Author: Wisaroot Lertthaweedech
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "leetcode-py-sdk"
3
- version = "0.43.7" # use git tag instead
3
+ version = "0.44.0" # use git tag instead
4
4
  description = "Modern Python LeetCode practice environment with automated problem generation, beautiful data structure visualizations, and comprehensive testing"
5
5
  authors = [
6
6
  {name = "Wisaroot Lertthaweedech", email = "l.wisaroot@gmail.com"}
@@ -0,0 +1,79 @@
1
+ {
2
+ "problem_name": "combination_sum_ii",
3
+ "solution_class_name": "Solution",
4
+ "problem_number": "40",
5
+ "problem_title": "Combination Sum II",
6
+ "difficulty": "Medium",
7
+ "topics": "Array, Backtracking",
8
+ "_tags": { "list": ["neetcode-150"] },
9
+ "readme_description": "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`.\n\nEach number in `candidates` may only be used **once** in the combination.\n\n**Note:** The solution set must not contain duplicate combinations.",
10
+ "_readme_examples": {
11
+ "list": [
12
+ {
13
+ "content": "```\nInput: candidates = [10,1,2,7,6,1,5], target = 8\nOutput: [[1,1,6],[1,2,5],[1,7],[2,6]]\n```"
14
+ },
15
+ { "content": "```\nInput: candidates = [2,5,2,1,2], target = 5\nOutput: [[1,2,2],[5]]\n```" }
16
+ ]
17
+ },
18
+ "readme_constraints": "- 1 <= candidates.length <= 100\n- 1 <= candidates[i] <= 50\n- 1 <= target <= 30",
19
+ "readme_additional": "",
20
+ "helpers_imports": "",
21
+ "helpers_content": "",
22
+ "helpers_run_name": "combination_sum2",
23
+ "helpers_run_signature": "(solution_class: type, candidates: list[int], target: int)",
24
+ "helpers_run_body": " implementation = solution_class()\n result = implementation.combination_sum2(candidates, target)\n return sorted([sorted(combo) for combo in result])",
25
+ "helpers_assert_name": "combination_sum2",
26
+ "helpers_assert_signature": "(result: list[list[int]], expected: list[list[int]]) -> bool",
27
+ "helpers_assert_body": " expected_sorted = sorted([sorted(combo) for combo in expected])\n assert result == expected_sorted\n return True",
28
+ "solution_imports": "",
29
+ "solution_contents": "",
30
+ "solution_class_content": "",
31
+ "test_imports": "import pytest\nfrom leetcode_py import logged_test\nfrom .helpers import assert_combination_sum2, run_combination_sum2\nfrom .solution import Solution",
32
+ "test_content": "",
33
+ "test_class_name": "CombinationSumII",
34
+ "test_class_content": " def setup_method(self):\n self.solution = Solution()",
35
+ "_solution_methods": {
36
+ "list": [
37
+ {
38
+ "name": "combination_sum2",
39
+ "signature": "(self, candidates: list[int], target: int) -> list[list[int]]",
40
+ "body": " # TODO: Implement combination_sum2\n return []"
41
+ }
42
+ ]
43
+ },
44
+ "_test_helper_methods": {
45
+ "list": [{ "name": "setup_method", "parameters": "", "body": "self.solution = Solution()" }]
46
+ },
47
+ "_test_methods": {
48
+ "list": [
49
+ {
50
+ "name": "test_combination_sum2",
51
+ "signature": "(self, candidates: list[int], target: int, expected: list[list[int]])",
52
+ "parametrize": "candidates, target, expected",
53
+ "test_cases": {
54
+ "list": [
55
+ "([10, 1, 2, 7, 6, 1, 5], 8, [[1, 1, 6], [1, 2, 5], [1, 7], [2, 6]])",
56
+ "([2, 5, 2, 1, 2], 5, [[1, 2, 2], [5]])",
57
+ "([1], 1, [[1]])",
58
+ "([1], 2, [])",
59
+ "([2], 1, [])",
60
+ "([1, 1], 2, [[1, 1]])",
61
+ "([1, 1, 1], 2, [[1, 1]])",
62
+ "([1, 1, 1, 1, 1], 3, [[1, 1, 1]])",
63
+ "([1, 2], 4, [])",
64
+ "([1, 2, 3], 3, [[1, 2], [3]])",
65
+ "([5, 3, 2, 1], 6, [[1, 2, 3], [1, 5]])",
66
+ "([1, 2, 2, 2, 5], 5, [[1, 2, 2], [5]])",
67
+ "([2, 2, 2], 4, [[2, 2]])",
68
+ "([1, 1, 2, 2], 4, [[1, 1, 2], [2, 2]])"
69
+ ]
70
+ },
71
+ "body": " result = run_combination_sum2(Solution, candidates, target)\n assert_combination_sum2(result, expected)"
72
+ }
73
+ ]
74
+ },
75
+ "playground_imports": "from helpers import run_combination_sum2, assert_combination_sum2\nfrom solution import Solution",
76
+ "playground_setup": "# Example test case\ncandidates = [10, 1, 2, 7, 6, 1, 5]\ntarget = 8\nexpected = [[1, 1, 6], [1, 2, 5], [1, 7], [2, 6]]",
77
+ "playground_run": "result = run_combination_sum2(Solution, candidates, target)\nresult",
78
+ "playground_assert": "assert_combination_sum2(result, expected)"
79
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "problem_name": "generate_parentheses",
3
+ "solution_class_name": "Solution",
4
+ "problem_number": "22",
5
+ "problem_title": "Generate Parentheses",
6
+ "difficulty": "Medium",
7
+ "topics": "String, Dynamic Programming, Backtracking",
8
+ "_tags": { "list": ["neetcode-150"] },
9
+ "readme_description": "Given `n` pairs of parentheses, write a function to generate all combinations of well-formed parentheses.",
10
+ "_readme_examples": {
11
+ "list": [
12
+ {
13
+ "content": "```\nInput: n = 3\nOutput: [\"((()))\",\"(()())\",\"(())()\",\"()(())\",\"()()()\"]\n```"
14
+ },
15
+ { "content": "```\nInput: n = 1\nOutput: [\"()\"]\n```" }
16
+ ]
17
+ },
18
+ "readme_constraints": "- 1 <= n <= 8",
19
+ "readme_additional": "",
20
+ "helpers_imports": "",
21
+ "helpers_content": "",
22
+ "helpers_run_name": "generate_parenthesis",
23
+ "helpers_run_signature": "(solution_class: type, n: int)",
24
+ "helpers_run_body": " implementation = solution_class()\n return sorted(implementation.generate_parenthesis(n))",
25
+ "helpers_assert_name": "generate_parenthesis",
26
+ "helpers_assert_signature": "(result: list[str], expected: list[str]) -> bool",
27
+ "helpers_assert_body": " assert sorted(result) == sorted(expected)\n return True",
28
+ "solution_imports": "",
29
+ "solution_contents": "",
30
+ "solution_class_content": "",
31
+ "test_imports": "import pytest\nfrom leetcode_py import logged_test\nfrom .helpers import assert_generate_parenthesis, run_generate_parenthesis\nfrom .solution import Solution",
32
+ "test_content": "",
33
+ "test_class_name": "GenerateParentheses",
34
+ "test_class_content": " def setup_method(self):\n self.solution = Solution()",
35
+ "_solution_methods": {
36
+ "list": [
37
+ {
38
+ "name": "generate_parenthesis",
39
+ "signature": "(self, n: int) -> list[str]",
40
+ "body": " # TODO: Implement generate_parenthesis\n return []"
41
+ }
42
+ ]
43
+ },
44
+ "_test_helper_methods": {
45
+ "list": [{ "name": "setup_method", "parameters": "", "body": "self.solution = Solution()" }]
46
+ },
47
+ "_test_methods": {
48
+ "list": [
49
+ {
50
+ "name": "test_generate_parenthesis",
51
+ "signature": "(self, n: int, expected: list[str])",
52
+ "parametrize": "n, expected",
53
+ "test_cases": {
54
+ "list": [
55
+ "(1, ['()'])",
56
+ "(2, ['(())', '()()'])",
57
+ "(3, ['((()))', '(()())', '(())()', '()(())', '()()()'])",
58
+ "(4, ['(((())))', '((()()))', '((())())', '((()))()', '(()(()))', '(()()())', '(()())()', '(())(())', '(())()()', '()((()))', '()(()())', '()(())()', '()()(())', '()()()()'])",
59
+ "(0, [''])",
60
+ "(5, ['((((()))))', '(((()())))', '(((())()))', '(((()))())', '(((())))()', '((()(())))', '((()()()))', '((()())())', '((()()))()', '((())(()))', '((())()())', '((())())()', '((()))(())', '((()))()()', '(()((())))', '(()(()()))', '(()(())())', '(()(()))()', '(()()(()))', '(()()()())', '(()()())()', '(()())(())', '(()())()()', '(())((()))', '(())(()())', '(())(())()', '(())()(())', '(())()()()', '()(((())))', '()((()()))', '()((())())', '()((()))()', '()(()(()))', '()(()()())', '()(()())()', '()(())(())', '()(())()()', '()()((()))', '()()(()())', '()()(())()', '()()()(())', '()()()()()'])",
61
+ "pytest.param(1, ['()'], id='dup1')",
62
+ "pytest.param(2, ['(())', '()()'], id='dup2')",
63
+ "pytest.param(3, ['((()))', '(()())', '(())()', '()(())', '()()()'], id='dup3a')",
64
+ "pytest.param(3, ['((()))', '(()())', '(())()', '()(())', '()()()'], id='dup3b')",
65
+ "pytest.param(3, ['((()))', '(()())', '(())()', '()(())', '()()()'], id='dup3c')"
66
+ ]
67
+ },
68
+ "body": " result = run_generate_parenthesis(Solution, n)\n assert_generate_parenthesis(result, expected)"
69
+ }
70
+ ]
71
+ },
72
+ "playground_imports": "from helpers import run_generate_parenthesis, assert_generate_parenthesis\nfrom solution import Solution",
73
+ "playground_setup": "# Example test case\nn = 3\nexpected = ['((()))', '(()())', '(())()', '()(())', '()()()']",
74
+ "playground_run": "result = run_generate_parenthesis(Solution, n)\nresult",
75
+ "playground_assert": "assert_generate_parenthesis(result, expected)"
76
+ }
@@ -0,0 +1,79 @@
1
+ {
2
+ "problem_name": "multiply_strings",
3
+ "solution_class_name": "Solution",
4
+ "problem_number": "43",
5
+ "problem_title": "Multiply Strings",
6
+ "difficulty": "Medium",
7
+ "topics": "Math, String, Simulation",
8
+ "_tags": { "list": ["neetcode-150"] },
9
+ "readme_description": "Given two non-negative integers `num1` and `num2` represented as strings, return the product of `num1` and `num2`, also represented as a string.\n\n**Note:** You must not use any built-in BigInteger library or convert the inputs to integer directly.",
10
+ "_readme_examples": {
11
+ "list": [
12
+ { "content": "```\nInput: num1 = \"2\", num2 = \"3\"\nOutput: \"6\"\n```" },
13
+ { "content": "```\nInput: num1 = \"123\", num2 = \"456\"\nOutput: \"56088\"\n```" }
14
+ ]
15
+ },
16
+ "readme_constraints": "- 1 <= num1.length, num2.length <= 200\n- `num1` and `num2` consist of digits only.\n- Both `num1` and `num2` do not contain any leading zero, except the number `0` itself.",
17
+ "readme_additional": "",
18
+ "helpers_imports": "",
19
+ "helpers_content": "",
20
+ "helpers_run_name": "multiply",
21
+ "helpers_run_signature": "(solution_class: type, num1: str, num2: str)",
22
+ "helpers_run_body": " implementation = solution_class()\n return implementation.multiply(num1, num2)",
23
+ "helpers_assert_name": "multiply",
24
+ "helpers_assert_signature": "(result: str, expected: str) -> bool",
25
+ "helpers_assert_body": " assert result == expected\n return True",
26
+ "solution_imports": "",
27
+ "solution_contents": "",
28
+ "solution_class_content": "",
29
+ "test_imports": "import pytest\nfrom leetcode_py import logged_test\nfrom .helpers import assert_multiply, run_multiply\nfrom .solution import Solution",
30
+ "test_content": "",
31
+ "test_class_name": "MultiplyStrings",
32
+ "test_class_content": " def setup_method(self):\n self.solution = Solution()",
33
+ "_solution_methods": {
34
+ "list": [
35
+ {
36
+ "name": "multiply",
37
+ "signature": "(self, num1: str, num2: str) -> str",
38
+ "body": " # TODO: Implement multiply\n return ''"
39
+ }
40
+ ]
41
+ },
42
+ "_test_helper_methods": {
43
+ "list": [{ "name": "setup_method", "parameters": "", "body": "self.solution = Solution()" }]
44
+ },
45
+ "_test_methods": {
46
+ "list": [
47
+ {
48
+ "name": "test_multiply",
49
+ "signature": "(self, num1: str, num2: str, expected: str)",
50
+ "parametrize": "num1, num2, expected",
51
+ "test_cases": {
52
+ "list": [
53
+ "('2', '3', '6')",
54
+ "('123', '456', '56088')",
55
+ "('0', '0', '0')",
56
+ "('0', '123', '0')",
57
+ "('123', '0', '0')",
58
+ "('1', '1', '1')",
59
+ "('9', '9', '81')",
60
+ "('99', '99', '9801')",
61
+ "('999', '999', '998001')",
62
+ "('123456789', '987654321', '121932631112635269')",
63
+ "('2', '50', '100')",
64
+ "('10', '10', '100')",
65
+ "('100', '100', '10000')",
66
+ "('5', '5', '25')",
67
+ "('123', '1', '123')",
68
+ "('1', '999', '999')"
69
+ ]
70
+ },
71
+ "body": " result = run_multiply(Solution, num1, num2)\n assert_multiply(result, expected)"
72
+ }
73
+ ]
74
+ },
75
+ "playground_imports": "from helpers import run_multiply, assert_multiply\nfrom solution import Solution",
76
+ "playground_setup": "# Example test case\nnum1 = '123'\nnum2 = '456'\nexpected = '56088'",
77
+ "playground_run": "result = run_multiply(Solution, num1, num2)\nresult",
78
+ "playground_assert": "assert_multiply(result, expected)"
79
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "problem_name": "powx_n",
3
+ "solution_class_name": "Solution",
4
+ "problem_number": "50",
5
+ "problem_title": "Pow(x, n)",
6
+ "difficulty": "Medium",
7
+ "topics": "Math, Recursion",
8
+ "_tags": { "list": ["neetcode-150"] },
9
+ "readme_description": "Implement [pow(x, n)](http://www.cplusplus.com/reference/valarray/pow/), which calculates `x` raised to the power `n` (i.e., x<sup>n</sup>).",
10
+ "_readme_examples": {
11
+ "list": [
12
+ { "content": "```\nInput: x = 2.00000, n = 10\nOutput: 1024.00000\n```" },
13
+ { "content": "```\nInput: x = 2.10000, n = 3\nOutput: 9.26100\n```" },
14
+ {
15
+ "content": "```\nInput: x = 2.00000, n = -2\nOutput: 0.25000\nExplanation: 2^-2 = 1/2^2 = 1/4 = 0.25\n```"
16
+ }
17
+ ]
18
+ },
19
+ "readme_constraints": "- -100.0 < x < 100.0\n- -2^31 <= n <= 2^31 - 1\n- `n` is an integer.\n- Either `x` is not zero or `n > 0`.\n- -10^4 <= x^n <= 10^4",
20
+ "readme_additional": "",
21
+ "helpers_imports": "",
22
+ "helpers_content": "",
23
+ "helpers_run_name": "my_pow",
24
+ "helpers_run_signature": "(solution_class: type, x: float, n: int)",
25
+ "helpers_run_body": " implementation = solution_class()\n return implementation.my_pow(x, n)",
26
+ "helpers_assert_name": "my_pow",
27
+ "helpers_assert_signature": "(result: float, expected: float) -> bool",
28
+ "helpers_assert_body": " assert abs(result - expected) < 1e-5, f'Expected {expected}, got {result}'\n return True",
29
+ "solution_imports": "",
30
+ "solution_contents": "",
31
+ "solution_class_content": "",
32
+ "test_imports": "import pytest\nfrom leetcode_py import logged_test\nfrom .helpers import assert_my_pow, run_my_pow\nfrom .solution import Solution",
33
+ "test_content": "",
34
+ "test_class_name": "PowXN",
35
+ "test_class_content": " def setup_method(self):\n self.solution = Solution()",
36
+ "_solution_methods": {
37
+ "list": [
38
+ {
39
+ "name": "my_pow",
40
+ "signature": "(self, x: float, n: int) -> float",
41
+ "body": " # TODO: Implement my_pow\n return 0.0"
42
+ }
43
+ ]
44
+ },
45
+ "_test_helper_methods": {
46
+ "list": [{ "name": "setup_method", "parameters": "", "body": "self.solution = Solution()" }]
47
+ },
48
+ "_test_methods": {
49
+ "list": [
50
+ {
51
+ "name": "test_my_pow",
52
+ "signature": "(self, x: float, n: int, expected: float)",
53
+ "parametrize": "x, n, expected",
54
+ "test_cases": {
55
+ "list": [
56
+ "(2.0, 10, 1024.0)",
57
+ "(2.1, 3, 9.261)",
58
+ "(2.0, -2, 0.25)",
59
+ "(1.0, 0, 1.0)",
60
+ "(0.5, 2, 0.25)",
61
+ "(2.0, 1, 2.0)",
62
+ "(3.0, 3, 27.0)",
63
+ "(1.0, 100, 1.0)",
64
+ "(0.0, 1, 0.0)",
65
+ "(2.0, -1, 0.5)",
66
+ "(10.0, 0, 1.0)",
67
+ "(1.5, 2, 2.25)",
68
+ "(0.5, -2, 4.0)",
69
+ "(2.0, -3, 0.125)",
70
+ "(1.0, -1, 1.0)",
71
+ "(0.1, 3, 0.001)"
72
+ ]
73
+ },
74
+ "body": " result = run_my_pow(Solution, x, n)\n assert_my_pow(result, expected)"
75
+ }
76
+ ]
77
+ },
78
+ "playground_imports": "from helpers import run_my_pow, assert_my_pow\nfrom solution import Solution",
79
+ "playground_setup": "# Example test case\nx = 2.0\nn = 10\nexpected = 1024.0",
80
+ "playground_run": "result = run_my_pow(Solution, x, n)\nresult",
81
+ "playground_assert": "assert_my_pow(result, expected)"
82
+ }
@@ -0,0 +1,87 @@
1
+ {
2
+ "problem_name": "regular_expression_matching",
3
+ "solution_class_name": "Solution",
4
+ "problem_number": "10",
5
+ "problem_title": "Regular Expression Matching",
6
+ "difficulty": "Hard",
7
+ "topics": "String, Dynamic Programming, Recursion",
8
+ "_tags": { "list": ["neetcode-150"] },
9
+ "readme_description": "Given an input string `s` and a pattern `p`, implement regular expression matching with support for `'.'` and `'*'` where:\n\n- `'.'` Matches any single character.\n- `'*'` Matches zero or more of the preceding element.\n\nReturn a boolean indicating whether the matching covers the entire input string (not partial).",
10
+ "_readme_examples": {
11
+ "list": [
12
+ {
13
+ "content": "```\nInput: s = \"aa\", p = \"a\"\nOutput: false\nExplanation: \"a\" does not match the entire string \"aa\".\n```"
14
+ },
15
+ {
16
+ "content": "```\nInput: s = \"aa\", p = \"a*\"\nOutput: true\nExplanation: '*' means zero or more of the preceding element, 'a'. Therefore, by repeating 'a' once, it becomes \"aa\".\n```"
17
+ },
18
+ {
19
+ "content": "```\nInput: s = \"ab\", p = \".*\"\nOutput: true\nExplanation: \".*\" means \"zero or more (*) of any character (.)\".\n```"
20
+ }
21
+ ]
22
+ },
23
+ "readme_constraints": "- 1 <= s.length <= 20\n- 1 <= p.length <= 20\n- `s` contains only lowercase English letters.\n- `p` contains only lowercase English letters, `'.'`, and `'*'`.\n- It is guaranteed for each appearance of the character `'*'`, there will be a previous valid character to match.",
24
+ "readme_additional": "",
25
+ "helpers_imports": "",
26
+ "helpers_content": "",
27
+ "helpers_run_name": "is_match",
28
+ "helpers_run_signature": "(solution_class: type, s: str, p: str)",
29
+ "helpers_run_body": " implementation = solution_class()\n return implementation.is_match(s, p)",
30
+ "helpers_assert_name": "is_match",
31
+ "helpers_assert_signature": "(result: bool, expected: bool) -> bool",
32
+ "helpers_assert_body": " assert result == expected\n return True",
33
+ "solution_imports": "",
34
+ "solution_contents": "",
35
+ "solution_class_content": "",
36
+ "test_imports": "import pytest\nfrom leetcode_py import logged_test\nfrom .helpers import assert_is_match, run_is_match\nfrom .solution import Solution",
37
+ "test_content": "",
38
+ "test_class_name": "RegularExpressionMatching",
39
+ "test_class_content": " def setup_method(self):\n self.solution = Solution()",
40
+ "_solution_methods": {
41
+ "list": [
42
+ {
43
+ "name": "is_match",
44
+ "signature": "(self, s: str, p: str) -> bool",
45
+ "body": " # TODO: Implement is_match\n return False"
46
+ }
47
+ ]
48
+ },
49
+ "_test_helper_methods": {
50
+ "list": [{ "name": "setup_method", "parameters": "", "body": "self.solution = Solution()" }]
51
+ },
52
+ "_test_methods": {
53
+ "list": [
54
+ {
55
+ "name": "test_is_match",
56
+ "signature": "(self, s: str, p: str, expected: bool)",
57
+ "parametrize": "s, p, expected",
58
+ "test_cases": {
59
+ "list": [
60
+ "('aa', 'a', False)",
61
+ "('aa', 'a*', True)",
62
+ "('ab', '.*', True)",
63
+ "('aab', 'c*a*b', True)",
64
+ "('mississippi', 'mis*is*p*.', False)",
65
+ "('a', 'ab*', True)",
66
+ "('', 'a*', True)",
67
+ "('', '.*', True)",
68
+ "('ab', '.*c', False)",
69
+ "('aaa', 'a*a', True)",
70
+ "('aaa', 'aaaa', False)",
71
+ "('abc', 'a.c', True)",
72
+ "('abc', 'a.*c', True)",
73
+ "('a', '.', True)",
74
+ "('abcdef', '.*', True)",
75
+ "('abbbbc', 'ab*c', True)",
76
+ "('abbbbc', 'ab*bc', True)"
77
+ ]
78
+ },
79
+ "body": " result = run_is_match(Solution, s, p)\n assert_is_match(result, expected)"
80
+ }
81
+ ]
82
+ },
83
+ "playground_imports": "from helpers import run_is_match, assert_is_match\nfrom solution import Solution",
84
+ "playground_setup": "# Example test case\ns = 'aa'\np = 'a*'\nexpected = True",
85
+ "playground_run": "result = run_is_match(Solution, s, p)\nresult",
86
+ "playground_assert": "assert_is_match(result, expected)"
87
+ }
@@ -31,7 +31,7 @@
31
31
  "helpers_run_body": " implementation = solution_class()\n return implementation.two_sum(nums, target)",
32
32
  "helpers_assert_name": "two_sum",
33
33
  "helpers_assert_signature": "(result: list[int], expected: list[int]) -> bool",
34
- "helpers_assert_body": " assert result == expected\n return True",
34
+ "helpers_assert_body": " assert sorted(result) == sorted(expected)\n return True",
35
35
  "solution_imports": "",
36
36
  "solution_contents": "",
37
37
  "solution_class_content": "",
@@ -204,6 +204,7 @@
204
204
  "clone_graph",
205
205
  "coin_change",
206
206
  "combination_sum",
207
+ "combination_sum_ii",
207
208
  "construct_binary_tree_from_preorder_and_inorder_traversal",
208
209
  "container_with_most_water",
209
210
  "contains_duplicate",
@@ -220,6 +221,7 @@
220
221
  "find_minimum_in_rotated_sorted_array",
221
222
  "find_the_duplicate_number",
222
223
  "gas_station",
224
+ "generate_parentheses",
223
225
  "graph_valid_tree",
224
226
  "group_anagrams",
225
227
  "house_robber",
@@ -256,6 +258,7 @@
256
258
  "min_stack",
257
259
  "minimum_window_substring",
258
260
  "missing_number",
261
+ "multiply_strings",
259
262
  "non_overlapping_intervals",
260
263
  "number_of_1_bits",
261
264
  "number_of_connected_components_in_an_undirected_graph",
@@ -266,7 +269,9 @@
266
269
  "partition_equal_subset_sum",
267
270
  "permutation_in_string",
268
271
  "permutations",
272
+ "powx_n",
269
273
  "product_of_array_except_self",
274
+ "regular_expression_matching",
270
275
  "remove_nth_node_from_end_of_list",
271
276
  "reorder_list",
272
277
  "reverse_bits",
@@ -72,6 +72,8 @@ def batch_format_and_check(directories: list[Path]) -> None:
72
72
  "**/solution.py:ARG002",
73
73
  "--per-file-ignores",
74
74
  "**/playground.ipynb:B018",
75
+ "--per-file-ignores",
76
+ "**/playground.py:B018",
75
77
  "--fix",
76
78
  "--exit-non-zero-on-fix",
77
79
  "--line-length",
@@ -117,7 +119,7 @@ def merge_tags(data: dict) -> dict:
117
119
  existing_tags = data.get("_tags", {}).get("list", [])
118
120
 
119
121
  # Merge and deduplicate tags
120
- all_tags = list(set(system_tags + existing_tags))
122
+ all_tags = sorted(set(system_tags + existing_tags))
121
123
 
122
124
  # Update data with merged tags
123
125
  if all_tags: