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.
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/PKG-INFO +1 -1
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/pyproject.toml +1 -1
- leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/combination_sum_ii.json +79 -0
- leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/generate_parentheses.json +76 -0
- leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/multiply_strings.json +79 -0
- leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/powx_n.json +82 -0
- leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/regular_expression_matching.json +87 -0
- {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
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/tags.json5 +5 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/tools/generator.py +3 -1
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/README.md +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/__init__.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/__init__.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/commands/__init__.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/commands/gen.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/commands/list.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/commands/scrape.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/main.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/cookiecutter.json +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/permutations.json +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/resources/leetcode/json/problems/subsets.json +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/utils/__init__.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/utils/problem_finder.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/utils/resources.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/cli/utils/tag_helpers.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/__init__.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/_utils.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/dict_tree.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/doubly_list_node.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/graph_node.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/list_node.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/data_structures/tree_node.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/py.typed +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/tools/__init__.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/tools/check_test_cases.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/tools/logged_test.py +0 -0
- {leetcode_py_sdk-0.43.7 → leetcode_py_sdk-0.44.0}/src/leetcode_py/tools/parser.py +0 -0
- {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.
|
|
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.
|
|
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"}
|
leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/combination_sum_ii.json
ADDED
|
@@ -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
|
+
}
|
leetcode_py_sdk-0.44.0/src/leetcode_py/cli/resources/leetcode/json/problems/multiply_strings.json
ADDED
|
@@ -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 =
|
|
122
|
+
all_tags = sorted(set(system_tags + existing_tags))
|
|
121
123
|
|
|
122
124
|
# Update data with merged tags
|
|
123
125
|
if all_tags:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|