gitextract_s6ixwhb4/ ├── .github/ │ └── workflows/ │ ├── publish.yml │ └── python-app.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── MANIFEST.in ├── README.md ├── algorithms/ │ ├── __init__.py │ ├── array/ │ │ ├── __init__.py │ │ ├── delete_nth.py │ │ ├── flatten.py │ │ ├── garage.py │ │ ├── josephus.py │ │ ├── limit.py │ │ ├── longest_non_repeat.py │ │ ├── max_ones_index.py │ │ ├── merge_intervals.py │ │ ├── missing_ranges.py │ │ ├── move_zeros.py │ │ ├── n_sum.py │ │ ├── plus_one.py │ │ ├── remove_duplicates.py │ │ ├── rotate.py │ │ ├── summarize_ranges.py │ │ ├── three_sum.py │ │ ├── top_1.py │ │ ├── trimmean.py │ │ └── two_sum.py │ ├── backtracking/ │ │ ├── __init__.py │ │ ├── add_operators.py │ │ ├── anagram.py │ │ ├── array_sum_combinations.py │ │ ├── combination_sum.py │ │ ├── factor_combinations.py │ │ ├── find_words.py │ │ ├── generate_abbreviations.py │ │ ├── generate_parenthesis.py │ │ ├── letter_combination.py │ │ ├── minimax.py │ │ ├── palindrome_partitioning.py │ │ ├── pattern_match.py │ │ ├── permute.py │ │ ├── permute_unique.py │ │ ├── subsets.py │ │ └── subsets_unique.py │ ├── bit_manipulation/ │ │ ├── __init__.py │ │ ├── add_bitwise_operator.py │ │ ├── binary_gap.py │ │ ├── bit_operation.py │ │ ├── bytes_int_conversion.py │ │ ├── count_flips_to_convert.py │ │ ├── count_ones.py │ │ ├── find_difference.py │ │ ├── find_missing_number.py │ │ ├── flip_bit_longest_sequence.py │ │ ├── gray_code.py │ │ ├── has_alternative_bit.py │ │ ├── insert_bit.py │ │ ├── power_of_two.py │ │ ├── remove_bit.py │ │ ├── reverse_bits.py │ │ ├── single_number.py │ │ ├── single_number2.py │ │ ├── single_number3.py │ │ ├── subsets.py │ │ └── swap_pair.py │ ├── common/ │ │ ├── __init__.py │ │ ├── graph.py │ │ ├── list_node.py │ │ └── tree_node.py │ ├── compression/ │ │ ├── __init__.py │ │ ├── elias.py │ │ ├── huffman_coding.py │ │ └── rle_compression.py │ ├── data_structures/ │ │ ├── __init__.py │ │ ├── avl_tree.py │ │ ├── b_tree.py │ │ ├── bst.py │ │ ├── fenwick_tree.py │ │ ├── graph.py │ │ ├── hash_table.py │ │ ├── heap.py │ │ ├── iterative_segment_tree.py │ │ ├── kd_tree.py │ │ ├── linked_list.py │ │ ├── priority_queue.py │ │ ├── queue.py │ │ ├── red_black_tree.py │ │ ├── segment_tree.py │ │ ├── separate_chaining_hash_table.py │ │ ├── sqrt_decomposition.py │ │ ├── stack.py │ │ ├── trie.py │ │ ├── union_find.py │ │ └── veb_tree.py │ ├── dynamic_programming/ │ │ ├── __init__.py │ │ ├── bitmask.py │ │ ├── buy_sell_stock.py │ │ ├── climbing_stairs.py │ │ ├── coin_change.py │ │ ├── combination_sum.py │ │ ├── count_paths_dp.py │ │ ├── edit_distance.py │ │ ├── egg_drop.py │ │ ├── fib.py │ │ ├── hosoya_triangle.py │ │ ├── house_robber.py │ │ ├── int_divide.py │ │ ├── job_scheduling.py │ │ ├── k_factor.py │ │ ├── knapsack.py │ │ ├── longest_common_subsequence.py │ │ ├── longest_increasing.py │ │ ├── matrix_chain_order.py │ │ ├── max_product_subarray.py │ │ ├── max_subarray.py │ │ ├── min_cost_path.py │ │ ├── num_decodings.py │ │ ├── planting_trees.py │ │ ├── regex_matching.py │ │ ├── rod_cut.py │ │ └── word_break.py │ ├── graph/ │ │ ├── __init__.py │ │ ├── a_star.py │ │ ├── all_factors.py │ │ ├── all_pairs_shortest_path.py │ │ ├── bellman_ford.py │ │ ├── blossom.py │ │ ├── check_bipartite.py │ │ ├── check_digraph_strongly_connected.py │ │ ├── clone_graph.py │ │ ├── count_connected_number_of_component.py │ │ ├── count_islands_bfs.py │ │ ├── count_islands_dfs.py │ │ ├── count_islands_unionfind.py │ │ ├── cycle_detection.py │ │ ├── dijkstra.py │ │ ├── dijkstra_heapq.py │ │ ├── find_all_cliques.py │ │ ├── find_path.py │ │ ├── graph.py │ │ ├── kahns_algorithm.py │ │ ├── markov_chain.py │ │ ├── maximum_flow.py │ │ ├── maximum_flow_bfs.py │ │ ├── maximum_flow_dfs.py │ │ ├── maze_search_bfs.py │ │ ├── maze_search_dfs.py │ │ ├── minimum_spanning_tree.py │ │ ├── pacific_atlantic.py │ │ ├── path_between_two_vertices_in_digraph.py │ │ ├── prims_minimum_spanning.py │ │ ├── satisfiability.py │ │ ├── shortest_distance_from_all_buildings.py │ │ ├── strongly_connected_components_kosaraju.py │ │ ├── sudoku_solver.py │ │ ├── tarjan.py │ │ ├── topological_sort_bfs.py │ │ ├── topological_sort_dfs.py │ │ ├── transitive_closure_dfs.py │ │ ├── traversal.py │ │ ├── walls_and_gates.py │ │ └── word_ladder.py │ ├── greedy/ │ │ ├── __init__.py │ │ ├── gale_shapley.py │ │ └── max_contiguous_subsequence_sum.py │ ├── heap/ │ │ ├── __init__.py │ │ ├── k_closest_points.py │ │ ├── merge_sorted_k_lists.py │ │ ├── skyline.py │ │ └── sliding_window_max.py │ ├── linked_list/ │ │ ├── __init__.py │ │ ├── add_two_numbers.py │ │ ├── copy_random_pointer.py │ │ ├── delete_node.py │ │ ├── first_cyclic_node.py │ │ ├── intersection.py │ │ ├── is_cyclic.py │ │ ├── is_palindrome.py │ │ ├── is_sorted.py │ │ ├── kth_to_last.py │ │ ├── merge_two_list.py │ │ ├── partition.py │ │ ├── remove_duplicates.py │ │ ├── remove_range.py │ │ ├── reverse.py │ │ ├── rotate_list.py │ │ └── swap_in_pairs.py │ ├── map/ │ │ ├── __init__.py │ │ ├── is_anagram.py │ │ ├── is_isomorphic.py │ │ ├── longest_common_subsequence.py │ │ ├── longest_palindromic_subsequence.py │ │ ├── randomized_set.py │ │ ├── valid_sudoku.py │ │ └── word_pattern.py │ ├── math/ │ │ ├── __init__.py │ │ ├── base_conversion.py │ │ ├── chinese_remainder_theorem.py │ │ ├── combination.py │ │ ├── cosine_similarity.py │ │ ├── decimal_to_binary_ip.py │ │ ├── diffie_hellman_key_exchange.py │ │ ├── distance_between_two_points.py │ │ ├── euler_totient.py │ │ ├── extended_gcd.py │ │ ├── factorial.py │ │ ├── fft.py │ │ ├── find_order_simple.py │ │ ├── find_primitive_root_simple.py │ │ ├── gcd.py │ │ ├── generate_strobogrammtic.py │ │ ├── goldbach.py │ │ ├── hailstone.py │ │ ├── is_strobogrammatic.py │ │ ├── krishnamurthy_number.py │ │ ├── linear_regression.py │ │ ├── magic_number.py │ │ ├── manhattan_distance.py │ │ ├── modular_exponential.py │ │ ├── modular_inverse.py │ │ ├── next_bigger.py │ │ ├── next_perfect_square.py │ │ ├── nth_digit.py │ │ ├── num_digits.py │ │ ├── num_perfect_squares.py │ │ ├── polynomial.py │ │ ├── polynomial_division.py │ │ ├── power.py │ │ ├── prime_check.py │ │ ├── primes_sieve_of_eratosthenes.py │ │ ├── pythagoras.py │ │ ├── rabin_miller.py │ │ ├── recursive_binomial_coefficient.py │ │ ├── rsa.py │ │ ├── sqrt_precision_factor.py │ │ ├── summing_digits.py │ │ ├── surface_area_of_torus.py │ │ └── symmetry_group_cycle_index.py │ ├── matrix/ │ │ ├── __init__.py │ │ ├── bomb_enemy.py │ │ ├── cholesky_matrix_decomposition.py │ │ ├── copy_transform.py │ │ ├── count_paths.py │ │ ├── crout_matrix_decomposition.py │ │ ├── matrix_exponentiation.py │ │ ├── matrix_inversion.py │ │ ├── multiply.py │ │ ├── rotate_image.py │ │ ├── search_in_sorted_matrix.py │ │ ├── sort_matrix_diagonally.py │ │ ├── sparse_dot_vector.py │ │ ├── sparse_mul.py │ │ ├── spiral_traversal.py │ │ ├── sudoku_validator.py │ │ └── sum_sub_squares.py │ ├── py.typed │ ├── queue/ │ │ ├── __init__.py │ │ ├── max_sliding_window.py │ │ ├── moving_average.py │ │ ├── reconstruct_queue.py │ │ └── zigzagiterator.py │ ├── searching/ │ │ ├── __init__.py │ │ ├── binary_search.py │ │ ├── exponential_search.py │ │ ├── find_min_rotate.py │ │ ├── first_occurrence.py │ │ ├── generalized_binary_search.py │ │ ├── interpolation_search.py │ │ ├── jump_search.py │ │ ├── last_occurrence.py │ │ ├── linear_search.py │ │ ├── next_greatest_letter.py │ │ ├── search_insert.py │ │ ├── search_range.py │ │ ├── search_rotate.py │ │ ├── sentinel_search.py │ │ ├── ternary_search.py │ │ └── two_sum.py │ ├── set/ │ │ ├── __init__.py │ │ ├── find_keyboard_row.py │ │ ├── randomized_set.py │ │ └── set_covering.py │ ├── sorting/ │ │ ├── __init__.py │ │ ├── bead_sort.py │ │ ├── bitonic_sort.py │ │ ├── bogo_sort.py │ │ ├── bubble_sort.py │ │ ├── bucket_sort.py │ │ ├── cocktail_shaker_sort.py │ │ ├── comb_sort.py │ │ ├── counting_sort.py │ │ ├── cycle_sort.py │ │ ├── exchange_sort.py │ │ ├── gnome_sort.py │ │ ├── heap_sort.py │ │ ├── insertion_sort.py │ │ ├── meeting_rooms.py │ │ ├── merge_sort.py │ │ ├── pancake_sort.py │ │ ├── pigeonhole_sort.py │ │ ├── quick_sort.py │ │ ├── radix_sort.py │ │ ├── selection_sort.py │ │ ├── shell_sort.py │ │ ├── sort_colors.py │ │ ├── stooge_sort.py │ │ └── wiggle_sort.py │ ├── stack/ │ │ ├── __init__.py │ │ ├── is_consecutive.py │ │ ├── is_sorted.py │ │ ├── longest_abs_path.py │ │ ├── ordered_stack.py │ │ ├── remove_min.py │ │ ├── simplify_path.py │ │ ├── stutter.py │ │ ├── switch_pairs.py │ │ └── valid_parenthesis.py │ ├── streaming/ │ │ ├── __init__.py │ │ ├── misra_gries.py │ │ └── one_sparse_recovery.py │ ├── string/ │ │ ├── __init__.py │ │ ├── add_binary.py │ │ ├── alphabet_board_path.py │ │ ├── atbash_cipher.py │ │ ├── breaking_bad.py │ │ ├── caesar_cipher.py │ │ ├── check_pangram.py │ │ ├── contain_string.py │ │ ├── count_binary_substring.py │ │ ├── decode_string.py │ │ ├── delete_reoccurring.py │ │ ├── domain_extractor.py │ │ ├── encode_decode.py │ │ ├── first_unique_char.py │ │ ├── fizzbuzz.py │ │ ├── group_anagrams.py │ │ ├── int_to_roman.py │ │ ├── is_palindrome.py │ │ ├── is_rotated.py │ │ ├── judge_circle.py │ │ ├── knuth_morris_pratt.py │ │ ├── license_number.py │ │ ├── longest_common_prefix.py │ │ ├── longest_palindromic_substring.py │ │ ├── make_sentence.py │ │ ├── manacher.py │ │ ├── merge_string_checker.py │ │ ├── min_distance.py │ │ ├── multiply_strings.py │ │ ├── one_edit_distance.py │ │ ├── panagram.py │ │ ├── rabin_karp.py │ │ ├── repeat_string.py │ │ ├── repeat_substring.py │ │ ├── reverse_string.py │ │ ├── reverse_vowel.py │ │ ├── reverse_words.py │ │ ├── roman_to_int.py │ │ ├── rotate.py │ │ ├── strip_url_params.py │ │ ├── strong_password.py │ │ ├── swap_characters.py │ │ ├── text_justification.py │ │ ├── unique_morse.py │ │ ├── validate_coordinates.py │ │ ├── word_squares.py │ │ └── z_algorithm.py │ └── tree/ │ ├── __init__.py │ ├── bin_tree_to_list.py │ ├── binary_tree_paths.py │ ├── binary_tree_views.py │ ├── bst_array_to_bst.py │ ├── bst_closest_value.py │ ├── bst_count_left_node.py │ ├── bst_delete_node.py │ ├── bst_depth_sum.py │ ├── bst_height.py │ ├── bst_is_bst.py │ ├── bst_iterator.py │ ├── bst_kth_smallest.py │ ├── bst_lowest_common_ancestor.py │ ├── bst_num_empty.py │ ├── bst_predecessor.py │ ├── bst_serialize_deserialize.py │ ├── bst_successor.py │ ├── bst_unique_bst.py │ ├── bst_validate_bst.py │ ├── construct_tree_postorder_preorder.py │ ├── deepest_left.py │ ├── invert_tree.py │ ├── is_balanced.py │ ├── is_subtree.py │ ├── is_symmetric.py │ ├── longest_consecutive.py │ ├── lowest_common_ancestor.py │ ├── max_height.py │ ├── max_path_sum.py │ ├── min_height.py │ ├── path_sum.py │ ├── path_sum2.py │ ├── pretty_print.py │ ├── same_tree.py │ ├── traversal_inorder.py │ ├── traversal_level_order.py │ ├── traversal_postorder.py │ ├── traversal_preorder.py │ ├── traversal_zigzag.py │ ├── tree.py │ └── trie_add_and_search.py ├── docs/ │ └── index.html ├── pyproject.toml └── tests/ ├── test_array.py ├── test_backtracking.py ├── test_bit_manipulation.py ├── test_community_algorithms.py ├── test_compression.py ├── test_data_structures.py ├── test_dynamic_programming.py ├── test_graph.py ├── test_greedy.py ├── test_heap.py ├── test_issue_fixes.py ├── test_iterative_segment_tree.py ├── test_linked_list.py ├── test_map.py ├── test_math.py ├── test_matrix.py ├── test_monomial.py ├── test_polynomial.py ├── test_queue.py ├── test_searching.py ├── test_set.py ├── test_sorting.py ├── test_stack.py ├── test_streaming.py ├── test_string.py ├── test_tree.py └── test_veb_tree.py