leetcode-py-sdk 0.44.0__tar.gz → 0.45.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.44.0 → leetcode_py_sdk-0.45.0}/PKG-INFO +1 -1
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/pyproject.toml +1 -1
- leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/copy_list_with_random_pointer.json +91 -0
- leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/distinct_subsequences.json +90 -0
- leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/edit_distance.json +89 -0
- leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/interleaving_string.json +96 -0
- leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/n_queens.json +90 -0
- leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/plus_one.json +92 -0
- leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/search_a_2d_matrix.json +91 -0
- leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/single_number.json +91 -0
- leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/subsets_ii.json +88 -0
- leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/surrounded_regions.json +89 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/tags.json5 +10 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/README.md +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/__init__.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/__init__.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/commands/__init__.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/commands/gen.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/commands/list.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/commands/scrape.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/main.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/cookiecutter.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/accounts_merge.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/add_binary.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/add_two_numbers.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/alien_dictionary.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/balanced_binary_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/basic_calculator.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/best_time_to_buy_and_sell_stock.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_search.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_inorder_traversal.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_level_order_traversal.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_maximum_path_sum.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_postorder_traversal.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_preorder_traversal.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_right_side_view.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/cheapest_flights_within_k_stops.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/climbing_stairs.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/clone_graph.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/coin_change.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/combination_sum.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/combination_sum_ii.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/construct_binary_tree_from_preorder_and_inorder_traversal.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/container_with_most_water.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/contains_duplicate.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/contiguous_array.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/counting_bits.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/course_schedule.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/course_schedule_ii.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/daily_temperatures.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/decode_string.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/decode_ways.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/design_add_and_search_words_data_structure.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/design_in_memory_file_system.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/diagonal_traverse.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/diameter_of_binary_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/encode_and_decode_strings.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/evaluate_reverse_polish_notation.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/find_all_anagrams_in_a_string.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.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.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/find_k_closest_elements.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/find_median_from_data_stream.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/find_minimum_in_rotated_sorted_array.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/find_the_duplicate_number.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/first_bad_version.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/first_missing_positive.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/flood_fill.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/gas_station.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/generate_parentheses.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/graph_valid_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/group_anagrams.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/house_robber.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/house_robber_ii.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/implement_queue_using_stacks.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/implement_trie_prefix_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/insert_interval.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/invert_binary_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/is_graph_bipartite.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/is_subsequence.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/jump_game.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/jump_game_ii.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/k_closest_points_to_origin.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/kth_smallest_element_in_a_bst.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/largest_rectangle_in_histogram.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/letter_combinations_of_a_phone_number.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/linked_list_cycle.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/linked_list_cycle_ii.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_common_subsequence.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_consecutive_sequence.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_increasing_path_in_a_matrix.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_increasing_subsequence.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_palindrome.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_palindromic_substring.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_repeating_character_replacement.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_substring_without_repeating_characters.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/lowest_common_ancestor_of_a_binary_search_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/lowest_common_ancestor_of_a_binary_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/lru_cache.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/majority_element.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/max_points_on_a_line.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_depth_of_binary_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_product_subarray.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_profit_in_job_scheduling.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_subarray.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_width_of_binary_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/median_of_two_sorted_arrays.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/meeting_rooms.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/meeting_rooms_ii.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_intervals.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_k_sorted_lists.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_two_sorted_lists.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/middle_of_the_linked_list.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/min_cost_to_connect_all_points.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/min_stack.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_height_trees.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_path_sum.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_window_substring.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/missing_number.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/multiply_strings.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/my_calendar_i.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/next_permutation.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/non_overlapping_intervals.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_1_bits.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_connected_components_in_an_undirected_graph.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_islands.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_provinces.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/odd_even_linked_list.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/pacific_atlantic_water_flow.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/palindrome_partitioning.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/palindromic_substrings.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/partition_equal_subset_sum.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/path_sum_ii.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/path_sum_iii.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/permutation_in_string.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/permutations.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/powx_n.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/product_of_array_except_self.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/ransom_note.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/regular_expression_matching.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/remove_nth_node_from_end_of_list.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reorder_list.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_bits.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_integer.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_linked_list.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_linked_list_ii.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_nodes_in_k_group.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_words_in_a_string.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/rotate_array.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/rotate_image.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/rotting_oranges.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/same_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/search_in_rotated_sorted_array.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/serialize_and_deserialize_binary_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/set_matrix_zeroes.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/single_number_iii.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/sliding_window_maximum.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/sort_colors.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/spiral_matrix.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/string_to_integer_atoi.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/subarray_sum_equals_k.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/subsets.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/subtree_of_another_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/sum_of_two_integers.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/swap_nodes_in_pairs.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/task_scheduler.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/three_sum.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/time_based_key_value_store.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/top_k_frequent_elements.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/top_k_frequent_words.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/trapping_rain_water.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/two_sum.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/unique_paths.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_anagram.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_palindrome.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_parentheses.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_sudoku.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/validate_binary_search_tree.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/word_break.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/word_ladder.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/word_search.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/word_search_ii.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/json/problems/zero_one_matrix.json +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/README.md +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/__init__.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/helpers.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/playground.ipynb +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/solution.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/test_solution.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/utils/__init__.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/utils/problem_finder.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/utils/resources.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/cli/utils/tag_helpers.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/data_structures/__init__.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/data_structures/_utils.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/data_structures/dict_tree.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/data_structures/doubly_list_node.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/data_structures/graph_node.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/data_structures/list_node.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/data_structures/tree_node.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/py.typed +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/tools/__init__.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/tools/check_test_cases.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/tools/generator.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/tools/logged_test.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.0}/src/leetcode_py/tools/parser.py +0 -0
- {leetcode_py_sdk-0.44.0 → leetcode_py_sdk-0.45.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.45.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.45.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,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"problem_name": "copy_list_with_random_pointer",
|
|
3
|
+
"solution_class_name": "Solution",
|
|
4
|
+
"problem_number": "138",
|
|
5
|
+
"problem_title": "Copy List with Random Pointer",
|
|
6
|
+
"difficulty": "Medium",
|
|
7
|
+
"topics": "Hash Table, Linked List",
|
|
8
|
+
"_tags": {
|
|
9
|
+
"list": ["neetcode-150"]
|
|
10
|
+
},
|
|
11
|
+
"readme_description": "A linked list of length `n` is given such that each node contains an additional **random pointer**, which could point to any node in the list, or `null`.\n\nConstruct a [**deep copy**](https://en.wikipedia.org/wiki/Object_copying#Deep_copy) of the list. The deep copy should consist of exactly `n` **brand new** nodes, where each new node has its value set to the value of its corresponding original node. Both the `next` and `random` pointer of the new nodes should point to new nodes in the copied list such that the pointers in the original list and copied list represent the same list state. **None of the pointers in the new list should point to nodes in the original list**.\n\nReturn *the head of the copied linked list*.\n\nThe linked list is represented in the input/output as a list of `n` nodes. Each node is represented as a pair of `[val, random_index]` where:\n\n- `val`: an integer representing `Node.val`\n- `random_index`: the index of the node (range from `0` to `n-1`) that the `random` pointer points to, or `null` if it does not point to any node.",
|
|
12
|
+
"_readme_examples": {
|
|
13
|
+
"list": [
|
|
14
|
+
{
|
|
15
|
+
"content": "\n\n```\nInput: head = [[7,null],[13,0],[11,4],[10,2],[1,0]]\nOutput: [[7,null],[13,0],[11,4],[10,2],[1,0]]\n```"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"content": "\n\n```\nInput: head = [[1,1],[2,1]]\nOutput: [[1,1],[2,1]]\n```"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"content": "\n\n```\nInput: head = [[3,null],[3,0],[3,null]]\nOutput: [[3,null],[3,0],[3,null]]\n```"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"readme_constraints": "- 0 <= n <= 1000\n- -10^4 <= Node.val <= 10^4\n- Node.random is null or points to some node in the linked list.",
|
|
26
|
+
"readme_additional": "",
|
|
27
|
+
"helpers_imports": "from .solution import Node",
|
|
28
|
+
"helpers_content": "def _build_random_list(nodes: list[list[int | None]]) -> Node | None:\n if not nodes:\n return None\n created: list[Node] = []\n for node_spec in nodes:\n val = node_spec[0]\n assert isinstance(val, int)\n created.append(Node(val))\n for i, node_spec in enumerate(nodes):\n if i + 1 < len(created):\n created[i].next = created[i + 1]\n rand_idx = node_spec[1]\n if rand_idx is not None:\n created[i].random = created[rand_idx]\n return created[0]\n\n\ndef _serialize_random_list(head: Node | None) -> list[list[int | None]]:\n index_by_id: dict[int, int] = {}\n cur: Node | None = head\n i = 0\n while cur is not None:\n index_by_id[id(cur)] = i\n i += 1\n cur = cur.next\n result: list[list[int | None]] = []\n cur = head\n while cur is not None:\n rand_idx = index_by_id[id(cur.random)] if cur.random is not None else None\n result.append([cur.val, rand_idx])\n cur = cur.next\n return result",
|
|
29
|
+
"helpers_run_name": "copy_random_list",
|
|
30
|
+
"helpers_run_signature": "(solution_class: type, nodes: list[list[int | None]])",
|
|
31
|
+
"helpers_run_body": " implementation = solution_class()\n head = _build_random_list(nodes)\n copied = implementation.copy_random_list(head)\n return _serialize_random_list(copied)",
|
|
32
|
+
"helpers_assert_name": "copy_random_list",
|
|
33
|
+
"helpers_assert_signature": "(result: list[list[int | None]], expected: list[list[int | None]]) -> bool",
|
|
34
|
+
"helpers_assert_body": " assert result == expected\n return True",
|
|
35
|
+
"solution_imports": "from __future__ import annotations",
|
|
36
|
+
"solution_contents": "class Node:\n def __init__(self, x: int, next: Node | None = None, random: Node | None = None):\n self.val = int(x)\n self.next = next\n self.random = random\n\n\n",
|
|
37
|
+
"solution_class_content": "",
|
|
38
|
+
"test_imports": "import pytest\nfrom leetcode_py import logged_test\nfrom .helpers import assert_copy_random_list, run_copy_random_list\nfrom .solution import Solution",
|
|
39
|
+
"test_content": "",
|
|
40
|
+
"test_class_name": "CopyListWithRandomPointer",
|
|
41
|
+
"test_class_content": " def setup_method(self):\n self.solution = Solution()",
|
|
42
|
+
"_solution_methods": {
|
|
43
|
+
"list": [
|
|
44
|
+
{
|
|
45
|
+
"name": "copy_random_list",
|
|
46
|
+
"signature": "(self, head: Node | None) -> Node | None",
|
|
47
|
+
"body": " # TODO: Implement copy_random_list\n return None"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"_test_helper_methods": {
|
|
52
|
+
"list": [
|
|
53
|
+
{
|
|
54
|
+
"name": "setup_method",
|
|
55
|
+
"parameters": "",
|
|
56
|
+
"body": "self.solution = Solution()"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"_test_methods": {
|
|
61
|
+
"list": [
|
|
62
|
+
{
|
|
63
|
+
"name": "test_copy_random_list",
|
|
64
|
+
"signature": "(self, nodes: list[list[int | None]], expected: list[list[int | None]])",
|
|
65
|
+
"parametrize": "nodes, expected",
|
|
66
|
+
"test_cases": {
|
|
67
|
+
"list": [
|
|
68
|
+
"([[7, None], [13, 0], [11, 4], [10, 2], [1, 0]], [[7, None], [13, 0], [11, 4], [10, 2], [1, 0]])",
|
|
69
|
+
"([[1, 1], [2, 1]], [[1, 1], [2, 1]])",
|
|
70
|
+
"([[3, None], [3, 0], [3, None]], [[3, None], [3, 0], [3, None]])",
|
|
71
|
+
"([], [])",
|
|
72
|
+
"([[1, None]], [[1, None]])",
|
|
73
|
+
"([[1, 0]], [[1, 0]])",
|
|
74
|
+
"([[1, None], [2, None]], [[1, None], [2, None]])",
|
|
75
|
+
"([[5, 1], [6, None], [7, 0]], [[5, 1], [6, None], [7, 0]])",
|
|
76
|
+
"([[0, None], [1, 0], [2, 1], [3, 2]], [[0, None], [1, 0], [2, 1], [3, 2]])",
|
|
77
|
+
"([[1, None], [2, 2], [3, 2]], [[1, None], [2, 2], [3, 2]])",
|
|
78
|
+
"([[42, None]], [[42, None]])",
|
|
79
|
+
"([[1, 2], [2, None], [3, 0]], [[1, 2], [2, None], [3, 0]])",
|
|
80
|
+
"([[1, None], [2, 0], [3, 1], [4, 2]], [[1, None], [2, 0], [3, 1], [4, 2]])"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
"body": " result = run_copy_random_list(Solution, nodes)\n assert_copy_random_list(result, expected)"
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
},
|
|
87
|
+
"playground_imports": "from helpers import run_copy_random_list, assert_copy_random_list\nfrom solution import Node, Solution",
|
|
88
|
+
"playground_setup": "# Example test case (each node is [val, random_index])\nnodes = [[7, None], [13, 0], [11, 4], [10, 2], [1, 0]]\nexpected = [[7, None], [13, 0], [11, 4], [10, 2], [1, 0]]",
|
|
89
|
+
"playground_run": "result = run_copy_random_list(Solution, nodes)\nresult",
|
|
90
|
+
"playground_assert": "assert_copy_random_list(result, expected)"
|
|
91
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"problem_name": "distinct_subsequences",
|
|
3
|
+
"solution_class_name": "Solution",
|
|
4
|
+
"problem_number": "115",
|
|
5
|
+
"problem_title": "Distinct Subsequences",
|
|
6
|
+
"difficulty": "Hard",
|
|
7
|
+
"topics": "String, Dynamic Programming",
|
|
8
|
+
"_tags": {
|
|
9
|
+
"list": ["neetcode-150"]
|
|
10
|
+
},
|
|
11
|
+
"readme_description": "Given two strings `s` and `t`, return *the number of distinct subsequences of* `s` *which equals* `t`.\n\nThe test cases are generated so that the answer fits on a **32-bit** signed integer.",
|
|
12
|
+
"_readme_examples": {
|
|
13
|
+
"list": [
|
|
14
|
+
{
|
|
15
|
+
"content": "```\nInput: s = \"rabbbit\", t = \"rabbit\"\nOutput: 3\nExplanation:\nAs shown below, there are 3 ways you can generate \"rabbit\" from s.\nrabbbit\nrabbbit\nrabbbit\n```"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"content": "```\nInput: s = \"babgbag\", t = \"bag\"\nOutput: 5\nExplanation:\nAs shown below, there are 5 ways you can generate \"bag\" from s.\nbabgbag\nbabgbag\nbabgbag\nbabgbag\nbabgbag\n```"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"readme_constraints": "- 1 <= s.length, t.length <= 1000\n- s and t consist of English letters.",
|
|
23
|
+
"readme_additional": "",
|
|
24
|
+
"helpers_imports": "",
|
|
25
|
+
"helpers_content": "",
|
|
26
|
+
"helpers_run_name": "num_distinct",
|
|
27
|
+
"helpers_run_signature": "(solution_class: type, s: str, t: str)",
|
|
28
|
+
"helpers_run_body": " implementation = solution_class()\n return implementation.num_distinct(s, t)",
|
|
29
|
+
"helpers_assert_name": "num_distinct",
|
|
30
|
+
"helpers_assert_signature": "(result: int, expected: int) -> bool",
|
|
31
|
+
"helpers_assert_body": " assert result == expected\n return True",
|
|
32
|
+
"solution_imports": "",
|
|
33
|
+
"solution_contents": "",
|
|
34
|
+
"solution_class_content": "",
|
|
35
|
+
"test_imports": "import pytest\nfrom leetcode_py import logged_test\nfrom .helpers import assert_num_distinct, run_num_distinct\nfrom .solution import Solution",
|
|
36
|
+
"test_content": "",
|
|
37
|
+
"test_class_name": "DistinctSubsequences",
|
|
38
|
+
"test_class_content": " def setup_method(self):\n self.solution = Solution()",
|
|
39
|
+
"_solution_methods": {
|
|
40
|
+
"list": [
|
|
41
|
+
{
|
|
42
|
+
"name": "num_distinct",
|
|
43
|
+
"signature": "(self, s: str, t: str) -> int",
|
|
44
|
+
"body": " # TODO: Implement num_distinct\n return 0"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"_test_helper_methods": {
|
|
49
|
+
"list": [
|
|
50
|
+
{
|
|
51
|
+
"name": "setup_method",
|
|
52
|
+
"parameters": "",
|
|
53
|
+
"body": "self.solution = Solution()"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"_test_methods": {
|
|
58
|
+
"list": [
|
|
59
|
+
{
|
|
60
|
+
"name": "test_num_distinct",
|
|
61
|
+
"signature": "(self, s: str, t: str, expected: int)",
|
|
62
|
+
"parametrize": "s, t, expected",
|
|
63
|
+
"test_cases": {
|
|
64
|
+
"list": [
|
|
65
|
+
"('rabbbit', 'rabbit', 3)",
|
|
66
|
+
"('babgbag', 'bag', 5)",
|
|
67
|
+
"('a', 'a', 1)",
|
|
68
|
+
"('a', 'b', 0)",
|
|
69
|
+
"('aaa', 'a', 3)",
|
|
70
|
+
"('aaa', 'aa', 3)",
|
|
71
|
+
"('aaaa', 'aa', 6)",
|
|
72
|
+
"('abc', 'abc', 1)",
|
|
73
|
+
"('abc', 'abcd', 0)",
|
|
74
|
+
"('abab', 'ab', 3)",
|
|
75
|
+
"('abab', 'bab', 1)",
|
|
76
|
+
"('abcabc', 'abc', 4)",
|
|
77
|
+
"('dddd', 'dd', 6)",
|
|
78
|
+
"('aab', 'ab', 2)",
|
|
79
|
+
"('bbb', 'bb', 3)"
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
"body": " result = run_num_distinct(Solution, s, t)\n assert_num_distinct(result, expected)"
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
"playground_imports": "from helpers import run_num_distinct, assert_num_distinct\nfrom solution import Solution",
|
|
87
|
+
"playground_setup": "# Example test case\ns = 'rabbbit'\nt = 'rabbit'\nexpected = 3",
|
|
88
|
+
"playground_run": "result = run_num_distinct(Solution, s, t)\nresult",
|
|
89
|
+
"playground_assert": "assert_num_distinct(result, expected)"
|
|
90
|
+
}
|
leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/edit_distance.json
ADDED
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
{
|
|
2
|
+
"problem_name": "edit_distance",
|
|
3
|
+
"solution_class_name": "Solution",
|
|
4
|
+
"problem_number": "72",
|
|
5
|
+
"problem_title": "Edit Distance",
|
|
6
|
+
"difficulty": "Hard",
|
|
7
|
+
"topics": "String, Dynamic Programming",
|
|
8
|
+
"_tags": {
|
|
9
|
+
"list": ["neetcode-150"]
|
|
10
|
+
},
|
|
11
|
+
"readme_description": "Given two strings `word1` and `word2`, return *the minimum number of operations required to convert* `word1` *to* `word2`.\n\nYou have the following three operations permitted on a word:\n\n- Insert a character\n- Delete a character\n- Replace a character",
|
|
12
|
+
"_readme_examples": {
|
|
13
|
+
"list": [
|
|
14
|
+
{
|
|
15
|
+
"content": "```\nInput: word1 = \"horse\", word2 = \"ros\"\nOutput: 3\nExplanation:\nhorse -> rorse (replace 'h' with 'r')\nrorse -> rose (remove 'r')\nrose -> ros (remove 'e')\n```"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"content": "```\nInput: word1 = \"intention\", word2 = \"execution\"\nOutput: 5\nExplanation:\nintention -> inention (remove 't')\ninention -> enention (replace 'i' with 'e')\nenention -> exention (replace 'n' with 'x')\nexention -> exection (replace 'n' with 'c')\nexection -> execution (insert 'u')\n```"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"readme_constraints": "- 0 <= word1.length, word2.length <= 500\n- word1 and word2 consist of lowercase English letters.",
|
|
23
|
+
"readme_additional": "",
|
|
24
|
+
"helpers_imports": "",
|
|
25
|
+
"helpers_content": "",
|
|
26
|
+
"helpers_run_name": "min_distance",
|
|
27
|
+
"helpers_run_signature": "(solution_class: type, word1: str, word2: str)",
|
|
28
|
+
"helpers_run_body": " implementation = solution_class()\n return implementation.min_distance(word1, word2)",
|
|
29
|
+
"helpers_assert_name": "min_distance",
|
|
30
|
+
"helpers_assert_signature": "(result: int, expected: int) -> bool",
|
|
31
|
+
"helpers_assert_body": " assert result == expected\n return True",
|
|
32
|
+
"solution_imports": "",
|
|
33
|
+
"solution_contents": "",
|
|
34
|
+
"solution_class_content": "",
|
|
35
|
+
"test_imports": "import pytest\nfrom leetcode_py import logged_test\nfrom .helpers import assert_min_distance, run_min_distance\nfrom .solution import Solution",
|
|
36
|
+
"test_content": "",
|
|
37
|
+
"test_class_name": "EditDistance",
|
|
38
|
+
"test_class_content": " def setup_method(self):\n self.solution = Solution()",
|
|
39
|
+
"_solution_methods": {
|
|
40
|
+
"list": [
|
|
41
|
+
{
|
|
42
|
+
"name": "min_distance",
|
|
43
|
+
"signature": "(self, word1: str, word2: str) -> int",
|
|
44
|
+
"body": " # TODO: Implement min_distance\n return 0"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"_test_helper_methods": {
|
|
49
|
+
"list": [
|
|
50
|
+
{
|
|
51
|
+
"name": "setup_method",
|
|
52
|
+
"parameters": "",
|
|
53
|
+
"body": "self.solution = Solution()"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"_test_methods": {
|
|
58
|
+
"list": [
|
|
59
|
+
{
|
|
60
|
+
"name": "test_min_distance",
|
|
61
|
+
"signature": "(self, word1: str, word2: str, expected: int)",
|
|
62
|
+
"parametrize": "word1, word2, expected",
|
|
63
|
+
"test_cases": {
|
|
64
|
+
"list": [
|
|
65
|
+
"('horse', 'ros', 3)",
|
|
66
|
+
"('intention', 'execution', 5)",
|
|
67
|
+
"('', '', 0)",
|
|
68
|
+
"('', 'a', 1)",
|
|
69
|
+
"('a', '', 1)",
|
|
70
|
+
"('a', 'a', 0)",
|
|
71
|
+
"('ab', 'a', 1)",
|
|
72
|
+
"('a', 'ab', 1)",
|
|
73
|
+
"('ab', 'ba', 2)",
|
|
74
|
+
"('abc', 'abc', 0)",
|
|
75
|
+
"('abc', 'abd', 1)",
|
|
76
|
+
"('kitten', 'sitting', 3)",
|
|
77
|
+
"('saturday', 'sunday', 3)",
|
|
78
|
+
"('', 'abc', 3)"
|
|
79
|
+
]
|
|
80
|
+
},
|
|
81
|
+
"body": " result = run_min_distance(Solution, word1, word2)\n assert_min_distance(result, expected)"
|
|
82
|
+
}
|
|
83
|
+
]
|
|
84
|
+
},
|
|
85
|
+
"playground_imports": "from helpers import run_min_distance, assert_min_distance\nfrom solution import Solution",
|
|
86
|
+
"playground_setup": "# Example test case\nword1 = 'horse'\nword2 = 'ros'\nexpected = 3",
|
|
87
|
+
"playground_run": "result = run_min_distance(Solution, word1, word2)\nresult",
|
|
88
|
+
"playground_assert": "assert_min_distance(result, expected)"
|
|
89
|
+
}
|
leetcode_py_sdk-0.45.0/src/leetcode_py/cli/resources/leetcode/json/problems/interleaving_string.json
ADDED
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
{
|
|
2
|
+
"problem_name": "interleaving_string",
|
|
3
|
+
"solution_class_name": "Solution",
|
|
4
|
+
"problem_number": "97",
|
|
5
|
+
"problem_title": "Interleaving String",
|
|
6
|
+
"difficulty": "Medium",
|
|
7
|
+
"topics": "String, Dynamic Programming",
|
|
8
|
+
"_tags": {
|
|
9
|
+
"list": ["neetcode-150"]
|
|
10
|
+
},
|
|
11
|
+
"readme_description": "Given strings `s1`, `s2`, and `s3`, find whether `s3` is formed by an **interleaving** of `s1` and `s2`.\n\nAn interleaving of two strings `s` and `t` is a configuration where `s` and `t` are divided into `n` and `m` substrings respectively, such that:\n\n- s = s1 + s2 + ... + sn\n- t = t1 + t2 + ... + tm\n- |n - m| <= 1\n- The interleaving is s1 + t1 + s2 + t2 + s3 + t3 + ... or t1 + s1 + t2 + s2 + t3 + s3 + ...\n\n**Note:** `a + b` is the concatenation of strings `a` and `b`.",
|
|
12
|
+
"_readme_examples": {
|
|
13
|
+
"list": [
|
|
14
|
+
{
|
|
15
|
+
"content": "\n\n```\nInput: s1 = \"aabcc\", s2 = \"dbbca\", s3 = \"aadbbcbcac\"\nOutput: true\nExplanation: One way to obtain s3 is:\nSplit s1 into s1 = \"aa\" + \"bc\" + \"c\", and s2 into s2 = \"dbbc\" + \"a\".\nInterleaving the two splits, we get \"aadbbcbcac\".\n```"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"content": "```\nInput: s1 = \"aabcc\", s2 = \"dbbca\", s3 = \"aadbbbaccc\"\nOutput: false\nExplanation: Notice how it is hard to find a viable interleaving because s3 must preserve the character order of s1 and s2.\n```"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"content": "```\nInput: s1 = \"\", s2 = \"\", s3 = \"\"\nOutput: true\n```"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"readme_constraints": "- 0 <= s1.length, s2.length <= 100\n- 0 <= s3.length <= 200\n- s1, s2, and s3 consist of lowercase English letters.",
|
|
26
|
+
"readme_additional": "",
|
|
27
|
+
"helpers_imports": "",
|
|
28
|
+
"helpers_content": "",
|
|
29
|
+
"helpers_run_name": "is_interleave",
|
|
30
|
+
"helpers_run_signature": "(solution_class: type, s1: str, s2: str, s3: str)",
|
|
31
|
+
"helpers_run_body": " implementation = solution_class()\n return implementation.is_interleave(s1, s2, s3)",
|
|
32
|
+
"helpers_assert_name": "is_interleave",
|
|
33
|
+
"helpers_assert_signature": "(result: bool, expected: bool) -> bool",
|
|
34
|
+
"helpers_assert_body": " assert result == expected\n return True",
|
|
35
|
+
"solution_imports": "",
|
|
36
|
+
"solution_contents": "",
|
|
37
|
+
"solution_class_content": "",
|
|
38
|
+
"test_imports": "import pytest\nfrom leetcode_py import logged_test\nfrom .helpers import assert_is_interleave, run_is_interleave\nfrom .solution import Solution",
|
|
39
|
+
"test_content": "",
|
|
40
|
+
"test_class_name": "InterleavingString",
|
|
41
|
+
"test_class_content": " def setup_method(self):\n self.solution = Solution()",
|
|
42
|
+
"_solution_methods": {
|
|
43
|
+
"list": [
|
|
44
|
+
{
|
|
45
|
+
"name": "is_interleave",
|
|
46
|
+
"signature": "(self, s1: str, s2: str, s3: str) -> bool",
|
|
47
|
+
"body": " # TODO: Implement is_interleave\n return False"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"_test_helper_methods": {
|
|
52
|
+
"list": [
|
|
53
|
+
{
|
|
54
|
+
"name": "setup_method",
|
|
55
|
+
"parameters": "",
|
|
56
|
+
"body": "self.solution = Solution()"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"_test_methods": {
|
|
61
|
+
"list": [
|
|
62
|
+
{
|
|
63
|
+
"name": "test_is_interleave",
|
|
64
|
+
"signature": "(self, s1: str, s2: str, s3: str, expected: bool)",
|
|
65
|
+
"parametrize": "s1, s2, s3, expected",
|
|
66
|
+
"test_cases": {
|
|
67
|
+
"list": [
|
|
68
|
+
"('aabcc', 'dbbca', 'aadbbcbcac', True)",
|
|
69
|
+
"('aabcc', 'dbbca', 'aadbbbaccc', False)",
|
|
70
|
+
"('', '', '', True)",
|
|
71
|
+
"('', '', 'a', False)",
|
|
72
|
+
"('a', '', 'a', True)",
|
|
73
|
+
"('', 'b', 'b', True)",
|
|
74
|
+
"('a', 'b', 'ab', True)",
|
|
75
|
+
"('a', 'b', 'ba', True)",
|
|
76
|
+
"('a', 'b', 'a', False)",
|
|
77
|
+
"('ab', 'cd', 'acbd', True)",
|
|
78
|
+
"('ab', 'cd', 'abcd', True)",
|
|
79
|
+
"('ab', 'cd', 'cdab', True)",
|
|
80
|
+
"('ab', 'cd', 'acdb', True)",
|
|
81
|
+
"('aa', 'ab', 'aaab', True)",
|
|
82
|
+
"('aa', 'ab', 'aaba', True)",
|
|
83
|
+
"('abc', 'def', 'abcdef', True)",
|
|
84
|
+
"('abc', 'def', 'adbecf', True)",
|
|
85
|
+
"('abc', 'def', 'defabc', True)"
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"body": " result = run_is_interleave(Solution, s1, s2, s3)\n assert_is_interleave(result, expected)"
|
|
89
|
+
}
|
|
90
|
+
]
|
|
91
|
+
},
|
|
92
|
+
"playground_imports": "from helpers import run_is_interleave, assert_is_interleave\nfrom solution import Solution",
|
|
93
|
+
"playground_setup": "# Example test case\ns1 = 'aabcc'\ns2 = 'dbbca'\ns3 = 'aadbbcbcac'\nexpected = True",
|
|
94
|
+
"playground_run": "result = run_is_interleave(Solution, s1, s2, s3)\nresult",
|
|
95
|
+
"playground_assert": "assert_is_interleave(result, expected)"
|
|
96
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"problem_name": "n_queens",
|
|
3
|
+
"solution_class_name": "Solution",
|
|
4
|
+
"problem_number": "51",
|
|
5
|
+
"problem_title": "N-Queens",
|
|
6
|
+
"difficulty": "Hard",
|
|
7
|
+
"topics": "Array, Backtracking",
|
|
8
|
+
"_tags": {
|
|
9
|
+
"list": ["neetcode-150"]
|
|
10
|
+
},
|
|
11
|
+
"readme_description": "The **n-queens** puzzle is the problem of placing `n` queens on an `n x n` chessboard such that no two queens attack each other.\n\nGiven an integer `n`, return *all distinct solutions to the **n-queens puzzle***. You may return the answer in **any order**.\n\nEach solution contains a distinct board configuration of the n-queens' placement, where `'Q'` and `'.'` both indicate a queen and an empty space, respectively.",
|
|
12
|
+
"_readme_examples": {
|
|
13
|
+
"list": [
|
|
14
|
+
{
|
|
15
|
+
"content": "\n\n```\nInput: n = 4\nOutput: [[\".Q..\",\"...Q\",\"Q...\",\"..Q.\"],[\"..Q.\",\"Q...\",\"...Q\",\".Q..\"]]\nExplanation: There exist two distinct solutions to the 4-queens puzzle as shown above\n```"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"content": "```\nInput: n = 1\nOutput: [[\"Q\"]]\n```"
|
|
19
|
+
}
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
"readme_constraints": "- 1 <= n <= 9",
|
|
23
|
+
"readme_additional": "",
|
|
24
|
+
"helpers_imports": "",
|
|
25
|
+
"helpers_content": "def assert_solve_n_queens_solution_count(result: list[list[str]], expected: int) -> bool:\n assert len(result) == expected\n return True",
|
|
26
|
+
"helpers_run_name": "solve_n_queens",
|
|
27
|
+
"helpers_run_signature": "(solution_class: type, n: int)",
|
|
28
|
+
"helpers_run_body": " implementation = solution_class()\n return implementation.solve_n_queens(n)",
|
|
29
|
+
"helpers_assert_name": "solve_n_queens",
|
|
30
|
+
"helpers_assert_signature": "(result: list[list[str]], expected: list[list[str]]) -> bool",
|
|
31
|
+
"helpers_assert_body": " # Sort both result and expected for order-independent comparison\n result_sorted = sorted(result)\n expected_sorted = sorted(expected)\n assert result_sorted == expected_sorted\n return True",
|
|
32
|
+
"solution_imports": "",
|
|
33
|
+
"solution_contents": "",
|
|
34
|
+
"solution_class_content": "",
|
|
35
|
+
"test_imports": "import pytest\nfrom leetcode_py import logged_test\nfrom .helpers import assert_solve_n_queens, assert_solve_n_queens_solution_count, run_solve_n_queens\nfrom .solution import Solution",
|
|
36
|
+
"test_content": "",
|
|
37
|
+
"test_class_name": "NQueens",
|
|
38
|
+
"test_class_content": " def setup_method(self):\n self.solution = Solution()",
|
|
39
|
+
"_solution_methods": {
|
|
40
|
+
"list": [
|
|
41
|
+
{
|
|
42
|
+
"name": "solve_n_queens",
|
|
43
|
+
"signature": "(self, n: int) -> list[list[str]]",
|
|
44
|
+
"body": " # TODO: Implement solve_n_queens\n return []"
|
|
45
|
+
}
|
|
46
|
+
]
|
|
47
|
+
},
|
|
48
|
+
"_test_helper_methods": {
|
|
49
|
+
"list": [
|
|
50
|
+
{
|
|
51
|
+
"name": "setup_method",
|
|
52
|
+
"parameters": "",
|
|
53
|
+
"body": "self.solution = Solution()"
|
|
54
|
+
}
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"_test_methods": {
|
|
58
|
+
"list": [
|
|
59
|
+
{
|
|
60
|
+
"name": "test_solve_n_queens",
|
|
61
|
+
"signature": "(self, n: int, expected: list[list[str]])",
|
|
62
|
+
"parametrize": "n, expected",
|
|
63
|
+
"test_cases": {
|
|
64
|
+
"list": [
|
|
65
|
+
"(1, [['Q']])",
|
|
66
|
+
"(2, [])",
|
|
67
|
+
"(3, [])",
|
|
68
|
+
"(4, [['..Q.', 'Q...', '...Q', '.Q..'], ['.Q..', '...Q', 'Q...', '..Q.']])",
|
|
69
|
+
"(5, [['....Q', '..Q..', 'Q....', '...Q.', '.Q...'], ['....Q', '.Q...', '...Q.', 'Q....', '..Q..'], ['...Q.', '.Q...', '....Q', '..Q..', 'Q....'], ['...Q.', 'Q....', '..Q..', '....Q', '.Q...'], ['..Q..', '....Q', '.Q...', '...Q.', 'Q....'], ['..Q..', 'Q....', '...Q.', '.Q...', '....Q'], ['.Q...', '....Q', '..Q..', 'Q....', '...Q.'], ['.Q...', '...Q.', 'Q....', '..Q..', '....Q'], ['Q....', '...Q.', '.Q...', '....Q', '..Q..'], ['Q....', '..Q..', '....Q', '.Q...', '...Q.']])",
|
|
70
|
+
"(6, [['....Q.', '..Q...', 'Q.....', '.....Q', '...Q..', '.Q....'], ['...Q..', 'Q.....', '....Q.', '.Q....', '.....Q', '..Q...'], ['..Q...', '.....Q', '.Q....', '....Q.', 'Q.....', '...Q..'], ['.Q....', '...Q..', '.....Q', 'Q.....', '..Q...', '....Q.']])"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"body": " result = run_solve_n_queens(Solution, n)\n assert_solve_n_queens(result, expected)"
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"name": "test_solve_n_queens_solution_count",
|
|
77
|
+
"signature": "(self, n: int, expected_count: int)",
|
|
78
|
+
"parametrize": "n, expected_count",
|
|
79
|
+
"test_cases": {
|
|
80
|
+
"list": ["(4, 2)", "(5, 10)", "(6, 4)", "(7, 40)", "(8, 92)", "(9, 352)"]
|
|
81
|
+
},
|
|
82
|
+
"body": " result = run_solve_n_queens(Solution, n)\n assert_solve_n_queens_solution_count(result, expected_count)"
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
"playground_imports": "from helpers import run_solve_n_queens, assert_solve_n_queens\nfrom solution import Solution",
|
|
87
|
+
"playground_setup": "# Example test case\nn = 4\nexpected = [['..Q.', 'Q...', '...Q', '.Q..'], ['.Q..', '...Q', 'Q...', '..Q.']]",
|
|
88
|
+
"playground_run": "result = run_solve_n_queens(Solution, n)\nresult",
|
|
89
|
+
"playground_assert": "assert_solve_n_queens(result, expected)"
|
|
90
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
{
|
|
2
|
+
"problem_name": "plus_one",
|
|
3
|
+
"solution_class_name": "Solution",
|
|
4
|
+
"problem_number": "66",
|
|
5
|
+
"problem_title": "Plus One",
|
|
6
|
+
"difficulty": "Easy",
|
|
7
|
+
"topics": "Array, Math",
|
|
8
|
+
"_tags": {
|
|
9
|
+
"list": ["neetcode-150"]
|
|
10
|
+
},
|
|
11
|
+
"readme_description": "You are given a **large integer** represented as an integer array `digits`, where each `digits[i]` is the `ith` digit of the integer. The digits are ordered from most significant to least significant in left-to-right order. The large integer does not contain any leading `0`'s.\n\nIncrement the large integer by one and return *the resulting array of digits*.",
|
|
12
|
+
"_readme_examples": {
|
|
13
|
+
"list": [
|
|
14
|
+
{
|
|
15
|
+
"content": "```\nInput: digits = [1,2,3]\nOutput: [1,2,4]\nExplanation: The array represents the integer 123.\nIncrementing by one gives 123 + 1 = 124.\nThus, the result should be [1,2,4].\n```"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"content": "```\nInput: digits = [4,3,2,1]\nOutput: [4,3,2,2]\nExplanation: The array represents the integer 4321.\nIncrementing by one gives 4321 + 1 = 4322.\nThus, the result should be [4,3,2,2].\n```"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"content": "```\nInput: digits = [9]\nOutput: [1,0]\nExplanation: The array represents the integer 9.\nIncrementing by one gives 9 + 1 = 10.\nThus, the result should be [1,0].\n```"
|
|
22
|
+
}
|
|
23
|
+
]
|
|
24
|
+
},
|
|
25
|
+
"readme_constraints": "- 1 <= digits.length <= 100\n- 0 <= digits[i] <= 9\n- digits does not contain any leading 0's.",
|
|
26
|
+
"readme_additional": "",
|
|
27
|
+
"helpers_imports": "",
|
|
28
|
+
"helpers_content": "",
|
|
29
|
+
"helpers_run_name": "plus_one",
|
|
30
|
+
"helpers_run_signature": "(solution_class: type, digits: list[int])",
|
|
31
|
+
"helpers_run_body": " implementation = solution_class()\n return implementation.plus_one(digits)",
|
|
32
|
+
"helpers_assert_name": "plus_one",
|
|
33
|
+
"helpers_assert_signature": "(result: list[int], expected: list[int]) -> bool",
|
|
34
|
+
"helpers_assert_body": " assert result == expected\n return True",
|
|
35
|
+
"solution_imports": "",
|
|
36
|
+
"solution_contents": "",
|
|
37
|
+
"solution_class_content": "",
|
|
38
|
+
"test_imports": "import pytest\nfrom leetcode_py import logged_test\nfrom .helpers import assert_plus_one, run_plus_one\nfrom .solution import Solution",
|
|
39
|
+
"test_content": "",
|
|
40
|
+
"test_class_name": "PlusOne",
|
|
41
|
+
"test_class_content": " def setup_method(self):\n self.solution = Solution()",
|
|
42
|
+
"_solution_methods": {
|
|
43
|
+
"list": [
|
|
44
|
+
{
|
|
45
|
+
"name": "plus_one",
|
|
46
|
+
"signature": "(self, digits: list[int]) -> list[int]",
|
|
47
|
+
"body": " # TODO: Implement plus_one\n return []"
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
},
|
|
51
|
+
"_test_helper_methods": {
|
|
52
|
+
"list": [
|
|
53
|
+
{
|
|
54
|
+
"name": "setup_method",
|
|
55
|
+
"parameters": "",
|
|
56
|
+
"body": "self.solution = Solution()"
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
},
|
|
60
|
+
"_test_methods": {
|
|
61
|
+
"list": [
|
|
62
|
+
{
|
|
63
|
+
"name": "test_plus_one",
|
|
64
|
+
"signature": "(self, digits: list[int], expected: list[int])",
|
|
65
|
+
"parametrize": "digits, expected",
|
|
66
|
+
"test_cases": {
|
|
67
|
+
"list": [
|
|
68
|
+
"([1, 2, 3], [1, 2, 4])",
|
|
69
|
+
"([4, 3, 2, 1], [4, 3, 2, 2])",
|
|
70
|
+
"([9], [1, 0])",
|
|
71
|
+
"([0], [1])",
|
|
72
|
+
"([1, 0, 0, 0], [1, 0, 0, 1])",
|
|
73
|
+
"([9, 9], [1, 0, 0])",
|
|
74
|
+
"([9, 9, 9], [1, 0, 0, 0])",
|
|
75
|
+
"([8, 9, 9, 9], [9, 0, 0, 0])",
|
|
76
|
+
"([2], [3])",
|
|
77
|
+
"([1, 9], [2, 0])",
|
|
78
|
+
"([7, 7, 7], [7, 7, 8])",
|
|
79
|
+
"([5, 9, 9], [6, 0, 0])",
|
|
80
|
+
"([1, 2, 9], [1, 3, 0])",
|
|
81
|
+
"([6, 1, 4, 9], [6, 1, 5, 0])"
|
|
82
|
+
]
|
|
83
|
+
},
|
|
84
|
+
"body": " result = run_plus_one(Solution, digits)\n assert_plus_one(result, expected)"
|
|
85
|
+
}
|
|
86
|
+
]
|
|
87
|
+
},
|
|
88
|
+
"playground_imports": "from helpers import run_plus_one, assert_plus_one\nfrom solution import Solution",
|
|
89
|
+
"playground_setup": "# Example test case\ndigits = [1, 2, 3]\nexpected = [1, 2, 4]",
|
|
90
|
+
"playground_run": "result = run_plus_one(Solution, digits)\nresult",
|
|
91
|
+
"playground_assert": "assert_plus_one(result, expected)"
|
|
92
|
+
}
|