leetcode-py-sdk 1.0.2__tar.gz → 1.0.3__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-1.0.2 → leetcode_py_sdk-1.0.3}/PKG-INFO +19 -9
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/README.md +14 -7
- leetcode_py_sdk-1.0.3/pyproject.toml +154 -0
- leetcode_py_sdk-1.0.2/pyproject.toml → leetcode_py_sdk-1.0.3/pyproject.toml.orig +7 -2
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/main.py +13 -1
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/implement_queue_using_stacks.json +3 -3
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/implement_stack_using_queues.json +3 -3
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/__init__.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/__init__.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/commands/__init__.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/commands/gen.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/commands/list.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/commands/scrape.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/cookiecutter.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/accounts_merge.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/add_binary.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/add_two_numbers.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/alien_dictionary.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/all_nodes_distance_k_in_binary_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/asteroid_collision.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/backspace_string_compare.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/balanced_binary_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/baseball_game.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/basic_calculator.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/basic_calculator_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/best_time_to_buy_and_sell_stock.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/best_time_to_buy_and_sell_stock_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/best_time_to_buy_and_sell_stock_with_cooldown.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_search.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_inorder_traversal.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_level_order_traversal.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_maximum_path_sum.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_postorder_traversal.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_preorder_traversal.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_right_side_view.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/binary_tree_zigzag_level_order_traversal.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/bitwise_and_of_numbers_range.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/boats_to_save_people.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/build_a_matrix_with_conditions.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/burst_balloons.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/bus_routes.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/candy.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/capacity_to_ship_packages_within_d_days.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/car_fleet.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/car_pooling.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/cheapest_flights_within_k_stops.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/climbing_stairs.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/clone_graph.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/coin_change.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/coin_change_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/combination_sum.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/combination_sum_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/combination_sum_iv.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/combinations.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/concatenation_of_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/construct_binary_tree_from_preorder_and_inorder_traversal.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/construct_quad_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/container_with_most_water.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/contains_duplicate.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/contains_duplicate_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/contiguous_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/convert_sorted_array_to_binary_search_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/copy_list_with_random_pointer.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/count_good_nodes_in_binary_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/counting_bits.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/course_schedule.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/course_schedule_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/course_schedule_iv.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/daily_temperatures.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/decode_string.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/decode_ways.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/delete_leaves_with_a_given_value.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/delete_node_in_a_bst.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/design_add_and_search_words_data_structure.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/design_circular_queue.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/design_hash_map.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/design_hash_set.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/design_hit_counter.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/design_in_memory_file_system.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/design_twitter.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/detect_squares.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/diagonal_traverse.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/diameter_of_binary_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/distinct_subsequences.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/dota2_senate.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/edit_distance.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/employee_free_time.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/encode_and_decode_strings.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/evaluate_division.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/evaluate_reverse_polish_notation.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/excel_sheet_column_title.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/extra_characters_in_a_string.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/find_all_anagrams_in_a_string.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/find_critical_and_pseudo_critical_edges_in_minimum_spanning_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/find_first_and_last_position_of_element_in_sorted_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/find_in_mountain_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/find_k_closest_elements.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/find_median_from_data_stream.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/find_minimum_in_rotated_sorted_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/find_the_duplicate_number.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/find_the_town_judge.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/first_bad_version.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/first_missing_positive.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/flood_fill.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/four_sum.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/gas_station.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/gcd_of_strings.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/generate_parentheses.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/graph_valid_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/greatest_common_divisor_traversal.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/group_anagrams.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/guess_number_higher_or_lower.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/hand_of_straights.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/happy_number.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/house_robber.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/house_robber_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/house_robber_iii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/implement_trie_prefix_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/inorder_successor_in_bst.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/insert_delete_getrandom_o1.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/insert_greatest_common_divisors_in_linked_list.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/insert_interval.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/insert_into_a_binary_search_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/integer_break.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/interleaving_string.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/invert_binary_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/ipo.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/is_graph_bipartite.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/is_subsequence.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/island_perimeter.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/jump_game.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/jump_game_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/jump_game_vii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/k_closest_points_to_origin.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/koko_eating_bananas.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/kth_largest_element_in_a_stream.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/kth_largest_element_in_an_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/kth_smallest_element_in_a_bst.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/largest_number.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/largest_rectangle_in_histogram.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/last_stone_weight.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/last_stone_weight_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/lemonade_change.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/letter_combinations_of_a_phone_number.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/lfu_cache.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/linked_list_cycle.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/linked_list_cycle_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_common_prefix.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_common_subsequence.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_consecutive_sequence.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_happy_string.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_increasing_path_in_a_matrix.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_increasing_subsequence.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_palindrome.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_palindromic_substring.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_repeating_character_replacement.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_substring_without_repeating_characters.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_turbulent_subarray.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/longest_valid_parentheses.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/lowest_common_ancestor_of_a_binary_search_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/lowest_common_ancestor_of_a_binary_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/lru_cache.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/majority_element.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/majority_element_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/matchsticks_to_square.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/max_area_of_island.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/max_points_on_a_line.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/maximal_square.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_depth_of_binary_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_frequency_stack.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_product_subarray.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_profit_in_job_scheduling.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_subarray.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_sum_circular_subarray.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/maximum_width_of_binary_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/median_of_two_sorted_arrays.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/meeting_rooms.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/meeting_rooms_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/meeting_rooms_iii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_intervals.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_k_sorted_lists.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_sorted_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_strings_alternately.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_triplets_to_form_target_triplet.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/merge_two_sorted_lists.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/middle_of_the_linked_list.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/min_cost_climbing_stairs.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/min_cost_to_connect_all_points.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/min_stack.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_array_end.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_height_trees.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_interval_to_include_each_query.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_knight_moves.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_path_sum.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_size_subarray_sum.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/minimum_window_substring.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/missing_number.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/move_zeroes.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/multiply_strings.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/my_calendar_i.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/n_queens.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/n_queens_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/n_th_tribonacci_number.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/network_delay_time.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/next_permutation.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/non_overlapping_intervals.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_1_bits.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_connected_components_in_an_undirected_graph.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_islands.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/number_of_provinces.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/odd_even_linked_list.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/online_stock_span.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/open_the_lock.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/pacific_atlantic_water_flow.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/palindrome_linked_list.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/palindrome_number.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/palindrome_pairs.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/palindrome_partitioning.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/palindromic_substrings.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/partition_equal_subset_sum.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/partition_labels.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/partition_to_k_equal_sum_subsets.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/path_sum_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/path_sum_iii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/path_with_minimum_effort.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/perfect_squares.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/permutation_in_string.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/permutations.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/permutations_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/plus_one.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/powx_n.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/product_of_array_except_self.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/random_pick_with_weight.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/range_sum_query_2d_immutable.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/ransom_note.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/reconstruct_itinerary.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/redundant_connection.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/regular_expression_matching.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/remove_duplicates_from_sorted_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/remove_element.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/remove_nth_node_from_end_of_list.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/reorder_list.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/reorganize_string.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_bits.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_integer.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_linked_list.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_linked_list_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_nodes_in_k_group.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_string.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/reverse_words_in_a_string.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/roman_to_integer.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/rotate_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/rotate_image.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/rotate_list.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/rotting_oranges.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/same_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/search_a_2d_matrix.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/search_in_rotated_sorted_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/search_in_rotated_sorted_array_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/search_insert_position.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/serialize_and_deserialize_binary_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/set_matrix_zeroes.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/shortest_path_in_binary_matrix.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/simplify_path.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/single_number.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/single_number_iii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/single_threaded_cpu.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/sliding_window_maximum.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/smallest_range_covering_elements_from_k_lists.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/sort_an_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/sort_colors.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/sort_list.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/spiral_matrix.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/split_array_largest_sum.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/sqrtx.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/squares_of_a_sorted_array.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/stone_game.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/stone_game_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/stone_game_iii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/string_to_integer_atoi.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/subarray_sum_equals_k.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/subsets.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/subsets_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/subtree_of_another_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/sudoku_solver.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/sum_of_all_subset_xor_totals.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/sum_of_two_integers.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/surrounded_regions.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/swap_nodes_in_pairs.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/swim_in_rising_water.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/symmetric_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/target_sum.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/task_scheduler.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/three_sum.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/three_sum_closest.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/time_based_key_value_store.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/top_k_frequent_elements.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/top_k_frequent_words.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/transpose_matrix.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/trapping_rain_water.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/two_sum.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/two_sum_ii_input_array_is_sorted.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/unique_paths.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/unique_paths_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_anagram.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_palindrome.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_palindrome_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_parentheses.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_parenthesis_string.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/valid_sudoku.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/validate_binary_search_tree.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/verifying_an_alien_dictionary.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/walls_and_gates.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/word_break.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/word_break_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/word_ladder.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/word_search.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/word_search_ii.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/problems/zero_one_matrix.json +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/json/tags.json5 +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/README.md +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/__init__.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/helpers.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/playground.ipynb +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/solution.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/resources/leetcode/{{cookiecutter.problem_name}}/test_solution.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/utils/__init__.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/utils/problem_finder.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/utils/resources.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/cli/utils/tag_helpers.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/data_structures/__init__.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/data_structures/_utils.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/data_structures/dict_tree.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/data_structures/doubly_list_node.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/data_structures/graph_node.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/data_structures/list_node.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/data_structures/tree_node.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/py.typed +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/tools/__init__.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/tools/check_test_cases.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/tools/generator.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/tools/logged_test.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/src/leetcode_py/tools/parser.py +0 -0
- {leetcode_py_sdk-1.0.2 → leetcode_py_sdk-1.0.3}/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: 1.0.
|
|
3
|
+
Version: 1.0.3
|
|
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
|
|
@@ -30,12 +30,13 @@ Requires-Dist: ruff>=0.14.0
|
|
|
30
30
|
Requires-Dist: ty>=0.0.13
|
|
31
31
|
Requires-Dist: typer>=0.21.0
|
|
32
32
|
Requires-Python: >=3.10
|
|
33
|
-
Project-URL:
|
|
33
|
+
Project-URL: Changelog, https://github.com/wislertt/leetcode-py/releases
|
|
34
|
+
Project-URL: Documentation, https://leetcode-py.wisl.dev
|
|
35
|
+
Project-URL: Homepage, https://leetcode-py.wisl.dev
|
|
36
|
+
Project-URL: Issues, https://github.com/wislertt/leetcode-py/issues
|
|
34
37
|
Project-URL: Repository, https://github.com/wislertt/leetcode-py
|
|
35
38
|
Description-Content-Type: text/markdown
|
|
36
39
|
|
|
37
|
-
# LeetCode Practice Environment Generator 🚀
|
|
38
|
-
|
|
39
40
|
[](https://github.com/wislertt/leetcode-py/actions/workflows/cd.yml)
|
|
40
41
|
[](https://github.com/wislertt/leetcode-py/actions/workflows/cd.yml)
|
|
41
42
|
[](https://sonarcloud.io/summary/new_code?id=wislertt_leetcode-py)
|
|
@@ -48,6 +49,15 @@ Description-Content-Type: text/markdown
|
|
|
48
49
|
[](https://github.com/wislertt/leetcode-py)
|
|
49
50
|
[](https://github.com/sponsors/wislertt)
|
|
50
51
|
|
|
52
|
+
<p align="center">
|
|
53
|
+
<picture>
|
|
54
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://cdn.jsdelivr.net/gh/wislertt/leetcode-py@main/docs/img/brand/leetcode-py-lockup-dark.svg">
|
|
55
|
+
<img src="https://cdn.jsdelivr.net/gh/wislertt/leetcode-py@main/docs/img/brand/leetcode-py-lockup.svg" width="360" alt="leetcode-py logo">
|
|
56
|
+
</picture>
|
|
57
|
+
</p>
|
|
58
|
+
|
|
59
|
+
# leetcode-py
|
|
60
|
+
|
|
51
61
|
A Python package to generate professional LeetCode practice environments. Features automated problem generation from LeetCode URLs, beautiful data structure visualizations (TreeNode, ListNode, GraphNode), and comprehensive testing with 10+ test cases per problem. Built with professional development practices including CI/CD, type hints, and quality gates.
|
|
52
62
|
|
|
53
63
|
## Table of Contents
|
|
@@ -65,12 +75,12 @@ A Python package to generate professional LeetCode practice environments. Featur
|
|
|
65
75
|
|
|
66
76
|
**What makes this different:**
|
|
67
77
|
|
|
68
|
-
- 🤖 **[LLM-Assisted Workflow](https://
|
|
78
|
+
- 🤖 **[LLM-Assisted Workflow](https://leetcode-py.wisl.dev/contributing/problem-creation)**: Generate new problems instantly with AI assistance
|
|
69
79
|
- 🎨 **Visual Debugging**: Interactive tree/graph rendering with Graphviz and anytree
|
|
70
80
|
- 🧪 **Production Testing**: Comprehensive test suites with edge cases and reproducibility verification
|
|
71
81
|
- 🚀 **Modern Python**: PEP 585/604 type hints, uv, and professional tooling
|
|
72
82
|
- 📊 **Quality Assurance**: 95%+ test coverage, security scanning, automated linting
|
|
73
|
-
- ⚡ **[Powerful CLI](https://
|
|
83
|
+
- ⚡ **[Powerful CLI](https://leetcode-py.wisl.dev/cli/lcpy)**: Generate problems anywhere with `lcpy` command
|
|
74
84
|
|
|
75
85
|
## <a id="whats-included"></a>🎯 What's Included
|
|
76
86
|
|
|
@@ -209,7 +219,7 @@ _Interactive multi-cell playground with rich data structure visualization for ea
|
|
|
209
219
|
|
|
210
220
|
### CLI Usage (Global Installation)
|
|
211
221
|
|
|
212
|
-
Perfect for quick problem generation anywhere. See the 📖 **[Complete CLI Usage Guide](https://
|
|
222
|
+
Perfect for quick problem generation anywhere. See the 📖 **[Complete CLI Usage Guide](https://leetcode-py.wisl.dev/cli/lcpy)** for detailed documentation with all options and examples.
|
|
213
223
|
|
|
214
224
|
## <a id="development-setup"></a>🛠️ Development Setup
|
|
215
225
|
|
|
@@ -241,7 +251,7 @@ bake gen-all-problems
|
|
|
241
251
|
|
|
242
252
|
To extend the problem collection beyond the current catalog, leverage an LLM assistant within your IDE (Cursor, GitHub Copilot Chat, Amazon Q, etc.).
|
|
243
253
|
|
|
244
|
-
📖 **[Complete LLM-Assisted Problem Creation Guide](https://
|
|
254
|
+
📖 **[Complete LLM-Assisted Problem Creation Guide](https://leetcode-py.wisl.dev/contributing/problem-creation)** - Comprehensive guide with screenshots and detailed workflow.
|
|
245
255
|
|
|
246
256
|
**Quick Start:**
|
|
247
257
|
|
|
@@ -296,7 +306,7 @@ uv run python -m leetcode_py.tools.check_test_cases --threshold=10
|
|
|
296
306
|
|
|
297
307
|
### CLI Commands (Global)
|
|
298
308
|
|
|
299
|
-
📖 **[Complete CLI Usage Guide](https://
|
|
309
|
+
📖 **[Complete CLI Usage Guide](https://leetcode-py.wisl.dev/cli/lcpy)** - Detailed documentation with all options and examples.
|
|
300
310
|
|
|
301
311
|
```bash
|
|
302
312
|
# Generate problems
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# LeetCode Practice Environment Generator 🚀
|
|
2
|
-
|
|
3
1
|
[](https://github.com/wislertt/leetcode-py/actions/workflows/cd.yml)
|
|
4
2
|
[](https://github.com/wislertt/leetcode-py/actions/workflows/cd.yml)
|
|
5
3
|
[](https://sonarcloud.io/summary/new_code?id=wislertt_leetcode-py)
|
|
@@ -12,6 +10,15 @@
|
|
|
12
10
|
[](https://github.com/wislertt/leetcode-py)
|
|
13
11
|
[](https://github.com/sponsors/wislertt)
|
|
14
12
|
|
|
13
|
+
<p align="center">
|
|
14
|
+
<picture>
|
|
15
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://cdn.jsdelivr.net/gh/wislertt/leetcode-py@main/docs/img/brand/leetcode-py-lockup-dark.svg">
|
|
16
|
+
<img src="https://cdn.jsdelivr.net/gh/wislertt/leetcode-py@main/docs/img/brand/leetcode-py-lockup.svg" width="360" alt="leetcode-py logo">
|
|
17
|
+
</picture>
|
|
18
|
+
</p>
|
|
19
|
+
|
|
20
|
+
# leetcode-py
|
|
21
|
+
|
|
15
22
|
A Python package to generate professional LeetCode practice environments. Features automated problem generation from LeetCode URLs, beautiful data structure visualizations (TreeNode, ListNode, GraphNode), and comprehensive testing with 10+ test cases per problem. Built with professional development practices including CI/CD, type hints, and quality gates.
|
|
16
23
|
|
|
17
24
|
## Table of Contents
|
|
@@ -29,12 +36,12 @@ A Python package to generate professional LeetCode practice environments. Featur
|
|
|
29
36
|
|
|
30
37
|
**What makes this different:**
|
|
31
38
|
|
|
32
|
-
- 🤖 **[LLM-Assisted Workflow](https://
|
|
39
|
+
- 🤖 **[LLM-Assisted Workflow](https://leetcode-py.wisl.dev/contributing/problem-creation)**: Generate new problems instantly with AI assistance
|
|
33
40
|
- 🎨 **Visual Debugging**: Interactive tree/graph rendering with Graphviz and anytree
|
|
34
41
|
- 🧪 **Production Testing**: Comprehensive test suites with edge cases and reproducibility verification
|
|
35
42
|
- 🚀 **Modern Python**: PEP 585/604 type hints, uv, and professional tooling
|
|
36
43
|
- 📊 **Quality Assurance**: 95%+ test coverage, security scanning, automated linting
|
|
37
|
-
- ⚡ **[Powerful CLI](https://
|
|
44
|
+
- ⚡ **[Powerful CLI](https://leetcode-py.wisl.dev/cli/lcpy)**: Generate problems anywhere with `lcpy` command
|
|
38
45
|
|
|
39
46
|
## <a id="whats-included"></a>🎯 What's Included
|
|
40
47
|
|
|
@@ -173,7 +180,7 @@ _Interactive multi-cell playground with rich data structure visualization for ea
|
|
|
173
180
|
|
|
174
181
|
### CLI Usage (Global Installation)
|
|
175
182
|
|
|
176
|
-
Perfect for quick problem generation anywhere. See the 📖 **[Complete CLI Usage Guide](https://
|
|
183
|
+
Perfect for quick problem generation anywhere. See the 📖 **[Complete CLI Usage Guide](https://leetcode-py.wisl.dev/cli/lcpy)** for detailed documentation with all options and examples.
|
|
177
184
|
|
|
178
185
|
## <a id="development-setup"></a>🛠️ Development Setup
|
|
179
186
|
|
|
@@ -205,7 +212,7 @@ bake gen-all-problems
|
|
|
205
212
|
|
|
206
213
|
To extend the problem collection beyond the current catalog, leverage an LLM assistant within your IDE (Cursor, GitHub Copilot Chat, Amazon Q, etc.).
|
|
207
214
|
|
|
208
|
-
📖 **[Complete LLM-Assisted Problem Creation Guide](https://
|
|
215
|
+
📖 **[Complete LLM-Assisted Problem Creation Guide](https://leetcode-py.wisl.dev/contributing/problem-creation)** - Comprehensive guide with screenshots and detailed workflow.
|
|
209
216
|
|
|
210
217
|
**Quick Start:**
|
|
211
218
|
|
|
@@ -260,7 +267,7 @@ uv run python -m leetcode_py.tools.check_test_cases --threshold=10
|
|
|
260
267
|
|
|
261
268
|
### CLI Commands (Global)
|
|
262
269
|
|
|
263
|
-
📖 **[Complete CLI Usage Guide](https://
|
|
270
|
+
📖 **[Complete CLI Usage Guide](https://leetcode-py.wisl.dev/cli/lcpy)** - Detailed documentation with all options and examples.
|
|
264
271
|
|
|
265
272
|
```bash
|
|
266
273
|
# Generate problems
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
[project]
|
|
2
|
+
name = "leetcode-py-sdk"
|
|
3
|
+
version = "1.0.3"
|
|
4
|
+
description = "Modern Python LeetCode practice environment with automated problem generation, beautiful data structure visualizations, and comprehensive testing"
|
|
5
|
+
readme = "README.md"
|
|
6
|
+
requires-python = ">=3.10"
|
|
7
|
+
keywords = [
|
|
8
|
+
"algorithms",
|
|
9
|
+
"coding-practice",
|
|
10
|
+
"data-structures",
|
|
11
|
+
"interview-prep",
|
|
12
|
+
"leetcode",
|
|
13
|
+
]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 5 - Production/Stable",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"Intended Audience :: Education",
|
|
18
|
+
"License :: OSI Approved :: Apache Software License",
|
|
19
|
+
"Programming Language :: Python :: 3",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Programming Language :: Python :: 3.13",
|
|
24
|
+
"Programming Language :: Python :: 3.14",
|
|
25
|
+
"Topic :: Education",
|
|
26
|
+
"Topic :: Software Development :: Libraries :: Python Modules",
|
|
27
|
+
]
|
|
28
|
+
dependencies = [
|
|
29
|
+
"anytree>=2.13.0",
|
|
30
|
+
"chardet>=7.4.3",
|
|
31
|
+
"cookiecutter>=2.6.0",
|
|
32
|
+
"graphviz>=0.21",
|
|
33
|
+
"json5>=0.13.0",
|
|
34
|
+
"loguru>=0.7.3",
|
|
35
|
+
"requests>=2.32.5",
|
|
36
|
+
"rich>=14.1.0",
|
|
37
|
+
"ruff>=0.14.0",
|
|
38
|
+
"ty>=0.0.13",
|
|
39
|
+
"typer>=0.21.0",
|
|
40
|
+
]
|
|
41
|
+
|
|
42
|
+
[[project.authors]]
|
|
43
|
+
name = "Wisaroot Lertthaweedech"
|
|
44
|
+
email = "l.wisaroot@gmail.com"
|
|
45
|
+
|
|
46
|
+
[project.license]
|
|
47
|
+
text = "Apache-2.0"
|
|
48
|
+
|
|
49
|
+
[project.scripts]
|
|
50
|
+
lcpy = "leetcode_py.cli.main:app"
|
|
51
|
+
|
|
52
|
+
[project.urls]
|
|
53
|
+
Changelog = "https://github.com/wislertt/leetcode-py/releases"
|
|
54
|
+
Documentation = "https://leetcode-py.wisl.dev"
|
|
55
|
+
Homepage = "https://leetcode-py.wisl.dev"
|
|
56
|
+
Issues = "https://github.com/wislertt/leetcode-py/issues"
|
|
57
|
+
Repository = "https://github.com/wislertt/leetcode-py"
|
|
58
|
+
|
|
59
|
+
[dependency-groups]
|
|
60
|
+
dev = [
|
|
61
|
+
"bakefile[lib]>=0.0.57a0",
|
|
62
|
+
"deptry>=0.24.0",
|
|
63
|
+
"ipykernel>=7.0.0",
|
|
64
|
+
"jupytext>=1.16.6",
|
|
65
|
+
"nbqa>=1.9.1",
|
|
66
|
+
"pre-commit>=4.3.0",
|
|
67
|
+
"pytest-cov>=7.0.0",
|
|
68
|
+
"pytest>=9.0.0",
|
|
69
|
+
"ruff>=0.14.0",
|
|
70
|
+
"toml-sort>=0.24.3",
|
|
71
|
+
]
|
|
72
|
+
|
|
73
|
+
[build-system]
|
|
74
|
+
requires = ["uv_build>=0.11.0,<0.12.0"]
|
|
75
|
+
build-backend = "uv_build"
|
|
76
|
+
|
|
77
|
+
[tool.coverage.run]
|
|
78
|
+
omit = ["src/leetcode_py/cli/resources/**"]
|
|
79
|
+
|
|
80
|
+
[tool.deptry]
|
|
81
|
+
known_first_party = ["leetcode_py"]
|
|
82
|
+
extend_exclude = [
|
|
83
|
+
".claude",
|
|
84
|
+
"bakefile.py",
|
|
85
|
+
"leetcode",
|
|
86
|
+
"scripts",
|
|
87
|
+
"src/leetcode_py/cli/resources",
|
|
88
|
+
]
|
|
89
|
+
|
|
90
|
+
[tool.deptry.per_rule_ignores]
|
|
91
|
+
DEP002 = ["chardet"]
|
|
92
|
+
|
|
93
|
+
[tool.pytest.ini_options]
|
|
94
|
+
testpaths = [
|
|
95
|
+
"leetcode",
|
|
96
|
+
"tests",
|
|
97
|
+
]
|
|
98
|
+
norecursedirs = ["src/leetcode_py/cli/resources"]
|
|
99
|
+
|
|
100
|
+
[tool.ruff]
|
|
101
|
+
line-length = 100
|
|
102
|
+
extend-exclude = ["src/leetcode_py/cli/resources"]
|
|
103
|
+
|
|
104
|
+
[tool.ruff.lint]
|
|
105
|
+
select = [
|
|
106
|
+
"ARG",
|
|
107
|
+
"B",
|
|
108
|
+
"C4",
|
|
109
|
+
"E",
|
|
110
|
+
"F",
|
|
111
|
+
"I",
|
|
112
|
+
"N",
|
|
113
|
+
"PGH",
|
|
114
|
+
"PIE",
|
|
115
|
+
"PYI",
|
|
116
|
+
"RUF",
|
|
117
|
+
"SIM",
|
|
118
|
+
"UP",
|
|
119
|
+
]
|
|
120
|
+
|
|
121
|
+
[tool.ruff.lint.per-file-ignores]
|
|
122
|
+
"leetcode/*/playground.py" = ["B018"]
|
|
123
|
+
"leetcode/*/solution.py" = ["ARG002"]
|
|
124
|
+
|
|
125
|
+
[tool.ty.environment]
|
|
126
|
+
root = [
|
|
127
|
+
".",
|
|
128
|
+
"./.claude/.dev",
|
|
129
|
+
]
|
|
130
|
+
|
|
131
|
+
[[tool.ty.overrides]]
|
|
132
|
+
include = [
|
|
133
|
+
"leetcode/*/playground.ipynb",
|
|
134
|
+
"leetcode/*/playground.py",
|
|
135
|
+
]
|
|
136
|
+
|
|
137
|
+
[tool.ty.overrides.rules]
|
|
138
|
+
unresolved-import = "ignore"
|
|
139
|
+
|
|
140
|
+
[tool.ty.src]
|
|
141
|
+
exclude = [
|
|
142
|
+
"scripts/branding",
|
|
143
|
+
"src/leetcode_py/cli/resources",
|
|
144
|
+
]
|
|
145
|
+
|
|
146
|
+
[tool.uv.build-backend]
|
|
147
|
+
module-name = ["leetcode_py"]
|
|
148
|
+
module-root = "src"
|
|
149
|
+
|
|
150
|
+
[[tool.uv.index]]
|
|
151
|
+
name = "test-pypi"
|
|
152
|
+
url = "https://test.pypi.org/simple/"
|
|
153
|
+
publish-url = "https://test.pypi.org/legacy/"
|
|
154
|
+
explicit = true
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "leetcode-py-sdk"
|
|
3
|
-
version = "1.0.
|
|
3
|
+
version = "1.0.3" # 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"}
|
|
@@ -41,7 +41,10 @@ dependencies = [
|
|
|
41
41
|
lcpy = "leetcode_py.cli.main:app"
|
|
42
42
|
|
|
43
43
|
[project.urls]
|
|
44
|
-
|
|
44
|
+
Changelog = "https://github.com/wislertt/leetcode-py/releases"
|
|
45
|
+
Documentation = "https://leetcode-py.wisl.dev"
|
|
46
|
+
Homepage = "https://leetcode-py.wisl.dev"
|
|
47
|
+
Issues = "https://github.com/wislertt/leetcode-py/issues"
|
|
45
48
|
Repository = "https://github.com/wislertt/leetcode-py"
|
|
46
49
|
|
|
47
50
|
[dependency-groups]
|
|
@@ -73,6 +76,7 @@ extend_exclude = [
|
|
|
73
76
|
".claude",
|
|
74
77
|
"bakefile.py",
|
|
75
78
|
"leetcode",
|
|
79
|
+
"scripts",
|
|
76
80
|
"src/leetcode_py/cli/resources"
|
|
77
81
|
]
|
|
78
82
|
per_rule_ignores = {DEP002 = ["chardet"]}
|
|
@@ -122,6 +126,7 @@ unresolved-import = "ignore"
|
|
|
122
126
|
|
|
123
127
|
[tool.ty.src]
|
|
124
128
|
exclude = [
|
|
129
|
+
"scripts/branding",
|
|
125
130
|
"src/leetcode_py/cli/resources"
|
|
126
131
|
]
|
|
127
132
|
|
|
@@ -6,7 +6,19 @@ from .commands.gen import generate
|
|
|
6
6
|
from .commands.list import list_problems
|
|
7
7
|
from .commands.scrape import scrape
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
DOCS_URL = "https://leetcode-py.wisl.dev"
|
|
10
|
+
_INSTALL_SKILL_CMD = f"npx skills add {DOCS_URL}"
|
|
11
|
+
AGENT_DOCS_EPILOG = f"""Docs: {DOCS_URL}
|
|
12
|
+
Full docs in one file (for AI agents): {DOCS_URL}/llms-full.txt
|
|
13
|
+
Docs index: {DOCS_URL}/llms.txt
|
|
14
|
+
Agent skill: {DOCS_URL}/skill.md
|
|
15
|
+
Install agent skill: `{_INSTALL_SKILL_CMD}`
|
|
16
|
+
Docs search via MCP: {DOCS_URL}/mcp"""
|
|
17
|
+
|
|
18
|
+
app = typer.Typer(
|
|
19
|
+
help="LeetCode problem generator - Generate and list LeetCode problems",
|
|
20
|
+
epilog=AGENT_DOCS_EPILOG,
|
|
21
|
+
)
|
|
10
22
|
|
|
11
23
|
|
|
12
24
|
def show_version():
|
|
@@ -22,9 +22,9 @@
|
|
|
22
22
|
"helpers_content": "",
|
|
23
23
|
"helpers_run_name": "my_queue",
|
|
24
24
|
"helpers_run_signature": "(solution_class: type, operations: list[str], inputs: list[list[int]])",
|
|
25
|
-
"helpers_run_body": " queue = None\n results: list[int |
|
|
25
|
+
"helpers_run_body": " queue = None\n results: list[int | bool | None] = []\n for i, op in enumerate(operations):\n if op == 'MyQueue':\n queue = solution_class()\n results.append(None)\n elif op == 'push' and queue is not None:\n queue.push(inputs[i][0])\n results.append(None)\n elif op == 'pop' and queue is not None:\n results.append(queue.pop())\n elif op == 'peek' and queue is not None:\n results.append(queue.peek())\n elif op == 'empty' and queue is not None:\n results.append(queue.empty())\n return results, queue",
|
|
26
26
|
"helpers_assert_name": "my_queue",
|
|
27
|
-
"helpers_assert_signature": "(result: list[int |
|
|
27
|
+
"helpers_assert_signature": "(result: list[int | bool | None], expected: list[int | bool | None]) -> bool",
|
|
28
28
|
"helpers_assert_body": " assert result == expected\n return True",
|
|
29
29
|
"solution_imports": "",
|
|
30
30
|
"solution_contents": "",
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
"list": [
|
|
70
70
|
{
|
|
71
71
|
"name": "test_queue_operations",
|
|
72
|
-
"signature": "(self, operations: list[str], inputs: list[list[int]], expected: list[int |
|
|
72
|
+
"signature": "(self, operations: list[str], inputs: list[list[int]], expected: list[int | bool | None])",
|
|
73
73
|
"parametrize": "operations, inputs, expected",
|
|
74
74
|
"test_cases": {
|
|
75
75
|
"list": [
|
|
@@ -20,9 +20,9 @@
|
|
|
20
20
|
"helpers_content": "",
|
|
21
21
|
"helpers_run_name": "my_stack",
|
|
22
22
|
"helpers_run_signature": "(solution_class: type, operations: list[str], inputs: list[list[int]])",
|
|
23
|
-
"helpers_run_body": " stack = None\n results: list[int |
|
|
23
|
+
"helpers_run_body": " stack = None\n results: list[int | bool | None] = []\n for i, op in enumerate(operations):\n if op == 'MyStack':\n stack = solution_class()\n results.append(None)\n elif op == 'push' and stack is not None:\n stack.push(inputs[i][0])\n results.append(None)\n elif op == 'pop' and stack is not None:\n results.append(stack.pop())\n elif op == 'top' and stack is not None:\n results.append(stack.top())\n elif op == 'empty' and stack is not None:\n results.append(stack.empty())\n return results, stack",
|
|
24
24
|
"helpers_assert_name": "my_stack",
|
|
25
|
-
"helpers_assert_signature": "(result: list[int |
|
|
25
|
+
"helpers_assert_signature": "(result: list[int | bool | None], expected: list[int | bool | None]) -> bool",
|
|
26
26
|
"helpers_assert_body": " assert result == expected\n return True",
|
|
27
27
|
"solution_imports": "",
|
|
28
28
|
"solution_contents": "",
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"list": [
|
|
68
68
|
{
|
|
69
69
|
"name": "test_stack_operations",
|
|
70
|
-
"signature": "(self, operations: list[str], inputs: list[list[int]], expected: list[int |
|
|
70
|
+
"signature": "(self, operations: list[str], inputs: list[list[int]], expected: list[int | bool | None])",
|
|
71
71
|
"parametrize": "operations, inputs, expected",
|
|
72
72
|
"test_cases": {
|
|
73
73
|
"list": [
|
|
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
|
|
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
|