README ¶ LeetCode My submissions for LeetCode Oj. Tags Array Linked List Depth First Search Breadth First Search Two Pointers Sliding Window Bit Stack HashMap Heap Random DP Design Binary Search Math String Tree Graph Categories Array Title Solution Difficulty 1. Two Sum use hashmap Easy 719. Find K-th Smallest Pair Distance Bucket Sort, Binary Search Hard 581. Shortest Unsorted Continuous Subarray four passes Easy 34. Find First and Last Position of Element in Sorted Array use lowerBound Medium 238. Product of Array Except Self use two additional product array Medium 283. Move Zeros use two pointers Easy 215. Kth Largest Element in an Array use sort Medium 26. Remove Duplicates from Sorted Array simple traverse Easy 135. Candy use one array two passes Hard 1046. Last Stone Weight use bucket Easy 1424. Diagonal Traverse II use #hashmap Medium 278. First Bad Version use binary search Easy 739. Daily Temperatures use stack Medium 1277. Count Square Submatrices with All Ones use dp Medium 1035. Uncrossed Lines use dp same approach as longest common sequences Medium 1338. Reduce Array Size to The Half use hashmap Medium 368. Largest Divisible Subset use dp Medium 1535. Find the Winner of an Array Game use one pass with constant space Medium Bit Title Solution Difficulty 342. Power Of Four Use loop, Bit Manipulation Easy 136. Single Number xor Easy Linked List Title Solution Difficulty 148. Sort List Bottom Up Merge Sort Medium 92. Reverse Linked List II Use Dummmy node to iterator the list Medium 2. Add Two Numbere Use Sentinel Node Medium 21. Merge Two Sorted List Using golang channel Easy 23. Merge K Sorted Lists Divide and Conquer Hard 138. Copy List With Random Pointer Extend List with copied Nodes Medium 141. Linked List Cycle Two Pointers Easy 24. Swap Nodes In Pairs Use dummy node to iterator the list Medium 234. Palindrome Linked List Two Pointers Easy 328. Odd Even Linked List dummy node Medium 147. Insertion Sort List dummy node Medium 445. Add Two Numbers II reverse the list Medium 143. Reorder List Two Pointers Medium 19. Remove Nth Node from end of List Two Pointers with n+1 gap Medium 86. Partition List Two pointers Medium 369. Plus One Linked List Dummy Node Medium 82. Remove Duplicates From Sorted Linkde List II Dummy Node with recursive helper func, Dummy Node in place Medium 876. Middle of the Linked List Two Pointers Easy 61. Rotate List reverse list Medium 1171. Remove Zero Sum Consecutive Nodes from Linked List Two passes preSum with hashmap Medium 25. Reverse Nodes in k-Groups using iterator Hard 1290. Convert Binary Number to Integer strconv.ParseUInt's implementation Easy 707. Design Linked List Single Linked List with Count Medium 725. Split Linked List In Parts Two passes Medium 817. Linked List Components iterator+set Medium 430. Flatten a Multilevel Doubly Linked List preOrder use recursion Medium 426. Convert Binary Search Tree to Sorted Doubly Linked List inOrder traversal using stack Medium Sliding Window Title Solution Difficulty 719. Find K-th Smallest Pair Distance Binary Search+Sliding Window Hard Stack Title Solution Difficulty 636. Exclusive Time of Functions Use stack to track function id Medium 394. Decode String use two stacks Medium 901. Online Stock Span use stack Medium HashMap Title Solution Difficulty 1048. Longest String Chain hashmap + DFS + Memorization Medium 36. Valid Sudoku use hashmaps Medium 380. Insert Delete GetRandom O(1) hashmap and array Medium 381. Insert Delete GetRandom O(1) - Duplicates allowed use hashmap and unordered_set Hard 525. Contiguous Array use hashmap Medium 560. Subarray Sum Equals K use hashmap Medium Breadth First Search Title Solution Difficulty 200. Number OfIslands use BFS Medium Depth First Search Title Solution Difficulty 200. Number OfIslands use DFS Medium 100. Same Tree use DFS Easy 101. Symmeetric Tree use DFS Easy 104. Max Depth of Binary Tree DFS Easy 124. Binary Tree Maximum Path Sum use DFS and a global max Hard 1192. Critical Connections in a Network Tarjan's algorithm Hard 301. Remove Invalid Parentheses use backtracking Hard 105. Construct Binary Tree from Preorder and Inorder Traversal use DFS Medium 106. Construct Binary Tree From Inorder and Postorder Traversal use DFS Medium 1026. Maximum Difference Between Node and Ancestor use dfs with min and max node Medium 1008. Construct Binary Search Tree from Preorder Traversal use dfs with sliced orders Medium 993. Cousins in Binary Tree use dfs Easy Heap Title Solution Difficulty 973. K Closest Points to Origin use max-k-heap, use quick select Medium Random Title Solution Difficulty 528. Random Pick with Weight use rand.Intn and binary search Medium DP Title Solution Difficulty 123. Best Time to Buy and Sell Stock III use dp[k][j] to represent at day j's max profit with at most k transactions Hard 97. Interleaving String Use a 2D array, dp[i][j] represents whether s1[:i], s2[:j] and s3[:i+j] are interleaving strings Hard 64. Minimum Path Sum dp[i] = min(dp[i],dp[i-1]) + grid[j][i] Medium 1143. Longest Common Subsequence use dp with less space Medium Design Title Solution Difficulty 146. LRU Cache use doubly linked list with hashmap Medium Binary Search Title Solution Difficulty 5. Longest Palindromic Substring parity binary search Meidum 33. Search in Rotated Sorted Array use binary search with one pass Medium 202. Happy Number use floyed's algorithm Easy Leftmost Column with at least a One use binary search (lower bound) Meidum 540. Single Element in a Sorted Array use binary search Medium 1231. Divide Chocolate answer in the range min(chocolate), sum(chocolate) Medium String Title Solution Difficulty 844. Backspace String Compare use two pointers Easy 316. Remove Duplicate Letters use stack and hashmap Hard 678. Valid Parenthesis String greedy Medium 771. Jewels and Stones use #hashmap Easy 383. Ransom Note use hashmap Easy 402. Remove K Digits use greedy with stack Medium 451. Sort Characters By Frequency use hashmap Medium 856. Score of Parentheses use stack to store the score Medium 1455. Check If a Word Occurs As a Prefix of Any Word in a Sentence onepass use strings.Fields and strings.HasPrefix Easy 1456. Maximum Number of Vowels in a Substring of Given Length use slide window Medium Tree Title Solution Difficulty 1457. Pseudo-Palindromic Paths in a Binary Tree use backtracking Meidum 1466. Reorder Routes to Make All Paths Lead to the City Zero convert to a tree like problem then use dfs Medium 236. Lowest Common Ancestor of a Binary Tree use dfs Medium Graph Title Solution Difficulty 1462. Course Schedule IV use floyd wrashall Medium Expand ▾ Collapse ▴ Directories ¶ Show internal Expand all Path Synopsis 1007_minimum_domino_rotations_for_equal_row 1008_construct_binary_search_tree_from_preorder_traversal 1009_complement_of_base_10_integer 100_same_tree 1019_next_greater_node_in_linked_list 101_symmetric_tree 1022_sum_of_root_to_leaf_binary_numbers 1026_max_difference_between_node_and_ancestor 1029_two_city_scheduling 102_binary_tree_level_order_traversal 1031_maximum_sum_of_two_non_overlapping_subarrays 1032_stream_of_characters 1035_uncrossed_lines 103_binary_tree_zigzag_level_order_traversal 1041_robot_bounded_in_circle 1046_last_stone_weight 1048_longest_string_chain 104_max_depth_of_binary_tree 1053_previous_permutation_with_one_swap 1057_compus_bikes 105_construct_binary_tree_from_preorder_and_inorder_traversal 1066_campus_bikes_ii 106_construct_binary_tree_from_inorder_and_postorder_traversal 1079_letter_tile_possibilities 108_convert_sorted_array_to_bst 1091_shortest_path_in_binary_matrix 1094_car_pooling 1099_two_sum_less_than_k 109_convert_sorted_list_to_binary_tree 10_regular_expression_matching 1103_distribute_candies_to_people 110_balanced_binary_tree 111_minimum_depth_of_bianry_tree 1129_sequential_digits 112_path_sum 1130_minimum_cost_tree_from_leaf_values 1137_nth_tribonacci_number 113_path_sum_ii 1143_longest_common_subsequence 114_flatten_binary_tree_to_linked_list 116_populating_next_right_pointer_in_each_node 1171_remove_zero_sum_consecutive_nodes_from_linked_list 118_pasal_triangle 1192_critical_connections_in_a_network 119_pascal_triangle_ii 11_container_with_most_water 1215_stepping_numbers 1217_minimum_cost_to_move_chips_to_the_same_position 121_best_time_sell_stock 1228_remove_covered_intervals 1231_chocolate_sweetness 1232_check_if_it_is_a_straight_line 1239_maximum_length_of_a_concatenated_string_with_unique_characters 123_best_time_to_buy_and_sell_stock_iii 1249_minimum_remove_to_make_valid_parentheses 124_binary_tree_max_path_sum 125_valid_palindrome 126_word_ladder_ii 1277_count_squre_submatrices_with_all_ones 127_word_ladder 1283_find_the_smallest_divisor_given_a_threshold 1286_iterator_for_combination 128_longest_consecutive_sequence 1290_convert_binary_number_in_a_linked_list_to_integer 129_sum_root_to_leaf_numbers 12_int_to_roman 1305_all_elements_in_two_binary_search_tree 130_surrounded_regions 131_palindrome_partitioning 1325_delete_leaves_with_a_given_value 1328_break_a_palindrome 1329_sort_the_matrix_diagonally 1337_the_k_weakest_rows_in_a_matrix 1338_reduce_array_size_to_the_half 133_clone_graph 1342_number_of_steps_to_reduce_a_number_to_zero 1344_angle_between_hands_of_clock 134_gas_station 135_candy 136_single_number 1379_find_a_correspoind_node_of_a_binary_tree_in_a_clone_of_that_tree 137_single_number_ii 138_copy_with_random_pointer 139_word_break 13_roman_to_int 140_word_break_ii 141_linked_list_cycle 1424_diagonal_traverse_ii 142_linked_list_cycle_ii 1436_destination_city 1438_longest_continous_subarray_with_abs_diff_less_or_equal_to_limit 1439_find_kth_smallest_sum_of_a_matrix_with_sorted_rows 143_reorder_list 1446_concecutive_characters 144_binary_tree_preorder_traversal 1450_number_of_students_doing_homework_at_given_time 1451_rearrange_words_in_a_setence 1452_people_whose_list_of_fav_companies_is_not_a_subset_of_another_list 1455_check_if_a_word_is_the_prefix 1456_max_number_of_vowels_in_a_substring_of_given_length 1457_pseudo_palindrome_paths_in_a_binary_tree 1458_max_dot_product_of_two_subsequences 145_binary_tree_postorder_traversal 1462_course_schedule_iv 1465_maximum_arae_of_a_piece_of_cake_after_cuts 1466_reorder_routes_to_make_all_paths_lead_to_city_zero 146_lru_cache 1470_shuffle_the_array 1471_the_k_strongest_values_in_an_array 1475_final_prices_with_a_special_discount_in_a_shop 1477_find_two_non_overlapping_subarrays_with_target_sum 147_insertion_sort_list 1482_minimum_number_of_days_to_make_m_bouquets 1483_Kth_Ancestor_of_a_Tree_Node 1487_making_file_names_unique 1488_avoid_flood_in_the_city 148_sort_list 1493_longest_subarray_of_ones_after_delete_one_element 1494_parallel_courses_ii 1496_Path_Crossing 1497_check_if_array_pairs_are_divisible_by_k 1498_number_of_seqs_that_satisify_the_given_sum_condition 1499_max_value_of_equation 1503_last_moment_before_all_ants_fall_out_of_a_plank 1504_count_submatrics_with_all_ones 1509_minimum_difference_between_largest_and_smallest_value_in_three_moves 1510_stone_game_iv 1514_path_with_max_probability 1518_watter_bottles 1519_number_of_nodes_in_the_subtree_with_same_label 151_reverse_words_in_a_string 1528_shuffle_string 1529_bulb_switcher_iv 152_max_product_subarray 1535_find_winner_of_an_array_game 153_finding_minimum_in_rotated_sorted_array 1540_can_convert_string_in_k_moves 1541_minimum_insertions_to_balance_a_parenthese_string 1546_maximum_number_of_non_overlapping_subarrays_with_sum_equals_target 154_find_minimum_in_rotated_sorted_array 1550_three_consecutive_odds 1551_minimum_operations_to_make_array_equal 1552_magnetic_force_between_two_balls 1553_minimum_number_of_days_to_eat_n_oranges 1556_thousand_separator 1557_minimum_number_of_vertices_to_reach_all_nodes 155_min_stack 1561_maximum_number_of_coins_you_can_get 1566_detect_pattern_of_length_m_repeated_k_or_more_times 1573_number_of_ways_to_split_a_string 1582_special_position_in_a_matrix 159_longest_substring_with_at_most_two_distinct_characters 15_3_sum 160_intersection_of_two_linked_list 161_one_edit_distance 162_find_peak_element 1631_path_with_minimum_effort 1640_check_array_formation_through_concatenation 1641_count_sorted_vowel_strings 1646_get_maximum_in_generated_array 1649_create_sorted_array_through_instructions 1657_determin_if_two_strings_are_close 1658_minimum_operations_to_reduce_x_to_zero 1662_check_if_two_string_array_is_equivalent 1663_smallest_string_with_a_given_numeric_value 1673_find_the_most_competitive_subsequence 1675_minimize_deviation_in_array 1679_max_number_of_k_sum_pairs 1680_concatenation_of_consecutive_binary_numbers 168_excel_sheet_column_title 169_majority_element 16_3sum_closest 171_excel_column_number 174_dungeon_game 179_largest_number 17_letter_combinations_of_a_phone_number 187_repeated_dna_sequences 188_best_time_to_buy_and_sell_stock_iv 189_rotate_array 190_reverse_bits 198_house_robber 199_binary_tree_right_side_view 19_remove_nth_node_from_end_of_list 1_two_sum 200_number_of_islands 201_bitwise_and_numbers_range 202_happy_number 203_remove_linked_list_elements 204_count_primes 205_isomorphic_string 206_reverse_linked_list 207_course_schedule 208_implement_trie 209_minimum_size_subarray_sum 20_valid_parentheses 210_course_schedule_ii 211_add_and_search_word 212_word_search_ii 213_house_robber_ii 215_kth_largest_element_in_an_array 216_combination_sum_iii 217_contain_duplicate 219_contain_duplicate_ii 21_merge_two_sorted_lists 220_contains_duplicates_iii 221_maximal_square 222_count_complete_tree_nodes 224_basic_calculator 226_invert_binary_tree 227_calculator_ii 228_sumary_ranges 229_majority_element_ii 22_generate_parentheses 230_kth_smallest_element_in_a_bst 231_power_of_two 234_panlindrome_linked_list 236_lowest_common_ancestor_of_a_binary_tree 238_product_of_array_except_self 239_sliding_window_maximum 23_merge_k_sorted_list 23_merge_k_sorted_lists 240_search_2d_matrix_ii 242_valid_anagram 243_shortest_word_distance 246_strobogrammatic_number 247_strobogrammatic_number_ii 24_swap_node_in_pairs 252_meeting_rooms 253_meeting_rooms_ii 256_paint_house 258_add_digits 259_3sum_smaller 25_reverse_nodes_in_k_group 260_single_number_iii 261_graph_valid_tree 263_ugly_number 264_ugly_number_ii 266_palindrome_permutation 267_palindrome_permutation_ii 268_missing_number 269_alien_dictionary 26_remove_duplicates_from_sorted_array 275_h_index_ii 276_paint_fence 278_first_bad_version 279_perfect_squares 283_move_zeros 286_walls_and_gates 287_find_the_duplicate_number 289_game_of_life 290_word_pattern 291_word_pattern_ii 293_flip_game 29_divide_two_integers 2_add_two_numbers 2_longest_substring_without_repeating_characters 300_longest_increasing_subsequence 301_remove_invalid_parentheses 303_range_sum_query 304_range_sum_array_query_2d_imuutable 305_number_of_islands_ii 306_additive_number 309_best_time_to_buy_and_sell_stock_with_cooldown 310_minimum_height_trees 312_burst_balloons 3133_minimum_array_end 316_remove_duplicates_letters 31_next_permutation 322_coin_change 323_number_of_connected_components_in_an_undriected_graph 325_maximum_size_subarray_sum_eq_k 326_power_of_three 328_odd_even_linked_list 329_longest_increasing_path_in_a_matrix 332_reconstruct_itinerary 337_house_robber_iii 338_counting_bits 33_search_in_rotated_sorted_array 340_longest_substring_with_at_most_k_distinct_characters 342_is_power_of_four 343_ingeger_break 344_reverse_string 347_top_k_frequent_elements 349_intersection_of_two_arrays 34_find_first_last_postion_of_element_in_sorted_array 34_serach_for_a_range 350_intersection_of_two_arrays_ii 357_count_number_with_unique_digits 358_rearrange_string_k_distance_apart 359_logger_rate_limiter 361_bomb_enemy 366_find_leaves_of_binary_tree 367_valid_perfect_square 368_largest_divisible_subset 369_plus_one_linked_list 36_valid_sudoku 376_wiggle_subsequence 377_combination_sum_iv 37_sudoku_solver 380_insert_delete_getrandom_o1 381_insert_delete_getrandom_o1_duplicates_allowed 383_ransom_note 387_first_unique_character_in_a_string 389_find_the_difference 392_is_subsequence 394_decode_string 399_evaluate_division 39_combination_sum 3_longest_substring_without_repeating_characters 402_remove_k_digits 406_queue_reconstruction_by_height 409_longest_palindrome 40_combination_sum_ii 413_arithmetic_slices 414_third_maximum_number 415_add_strings 416_partition_equal_subset_sum 417_pacific_atlantic_water_flow 41_first_missing_positive 421_maximum_xor_of_two_numbers_in_an_array 425_word_squares 426_converet_bst_to_sorted_doubly_linekd_list 42_trapping_rain_water 430_flatten_a_multilevel_doubly_linked_list 433_minimum_genetic_mutation 434_number_of_segments_in_a_string 435_non_overlapping_intervals 436_find_right_interval 437_path_sum_iii 438_find_all_anagrams_in_a_string 441_arranging_coins 442_find_all_duplicates_in_an_array 445_add_two_numbers_ii 448_find_all_numbers_disappeared_in_an_array 449_serialize_and_deserialize_bst 44_wildcard_matching 451_sort_characters_by_freqs 452_minimal_arrows_to_burst_balloons 453_minimum_moves_to_equal_array_elements 456_132_pattern 45_jump_game_ii 461_hamming_distance 463_island_perimeter 464_can_i_win 465_optimal_account_balancing 467_unique_substrings_in_wrapparound_string 468_validate_ip_address 46_permutations 470_implement_rand10_using_rand7 479_largest_palindrome_product 47_permutations_ii 485_max_consecutive_ones 486_predict_the_winner 487_max_consecutive_ones_ii 48_rotate_image 490_the_maze 494_target_sum 495_teemo_attacking 496_next_greater_element_i 497_random_point_in_non_overlapping_rectanges 49_group_anagrams 4_median_of_two_sorted_arrays 503_next_greater_element_ii 505_the_maze_ii 509_fibonacci_number 50_pow_n 515_find_largest_value_in_each_tree_row 516_longest_palindromic_sequence 518_coin_change_ii 51_N_Queues 520_detect_caps 523_continuous_subarray_sum 524_longest_word_in_dict_through_deleting 525_contiguous_array 526_beautiful_arrangement 528_randome_pick_weight 529_minesweeper 52_n_queues_ii 532_k_diff_pairs_in_an_array 538_convert_bst_to_greater_tree 539_minimum_time_difference 53_maximum_subarray 540_single_element_in_a_sorted_array 542_01_matrix 546_remove_boxes 547_friends_circles 54_spiral_matrix 551_student_attendance_record_i 552_student_attendance_record_ii 556_next_greater_element_iii 557_reverse_words_in_a_string_iii 55_jump_game 560_subarray_sums_equals_k 561_array_partition_i 563_binary_tree_tilt 567_permutations_in_string 57_insert_interval 581_shortest_unsorted_continuous_array 583_delete_operation_for_two_strings 58_merge_intervals 591_tag_validator 593_valid_square 594_longest_harmonious_subsequences 59_spiral_matrix_ii 5_longest_palindromic_substring 60_permutation_sequence 611_valid_triangle_number 61_rotate_list 621_task_scheduler 628_max_product_of_three_numbers 62_unique_path 633_sum_of_square_numbers 636_exclusive_time_of_functions 63_unique_path_ii 643_max_average_subarray_i 644_max_average_subarray_ii 645_set_mismatch 646_maximum_length_of_pair_chain 647_palindromic_substrings 64_min_path_sum 650_2_keys_keyboard 651_4_keys 662_maximum_width_of_binary_tree 664_strange_printer 665_non_decreasing_array 669_trim_a_binary_search_tree 673_number_of_longest_incresing_subsequences 674_longest_continuous_increasing_subsequence 678_valid_parenthesis_string 679_24_game 680_valid_palindrome_ii 686_repeated_string_match 689_maximum_sum_of_3_non_overlapping_subarrays 693_binary_number_with_alternating_bits 694_number_of_distinct_islands 695_max_area_of_island 698_partition_to_k_equal_sum_subsets 700_search_in_a_bst 701_insert_into_a_binary_search_tree 705_design_hashset 707_design_linked_list 70_climb_stairs 712_minimum_ascii_delete_sum_for_two_strings 713_subarray_product_less_than_k 714_best_time_to_buy_and_sell_stock_with_transaction_fee 716_max_stack 718_maximum_length_of_repeated_subarray 719_find_k-th_smallest_pair_distance 71_simplify_path 720_longest_word_in_dictionary 721_minimum_ascii_delete_sum_for_two_strings 725_split_linked_list_in_parts 729_my_calendar_i 72_edit_distance 733_flood_fill 735_asteroid_collision 739_daily_temperatures 741_cherry_pickup 74_search_a_2d_matrix 74_sort_colors 754_reach_a_number 763_partition_labels 76_minimum_window_substring 771_jewels_and_stones 77_combinations 784_letter_case_permutation 785_is_graph_bipartite 787_cheapest_flighs_within_k_stops 78_subsets 797_all_paths_from_source_to_target 799_champagne_tower 79_word_search 817_linked_list_components 81_search_in_rotated_sorted_array_ii 821_shortest_distance_to_character 823_binary_trees_with_factors 824_goat_latin 82_reomve_duplicates_from_sorted_list_ii 832_flipping_an_image 835_image_overlap 842_split_array_into_fibonacci_sequence 844_backspace_string_compare 849_maximize_distance_to_closest_person 84_largest_ractangle_in_histogram 856_score_of_parentheses 859_buddy_string 85_maximal_matrix 86_partition_list 876_middle_of_the_linked_list 881_boats_to_save_people 886_possbile_bipartion 88_merge_sorted_array 895_maximum_frequency_stack 897_increasing_older_search_tree 89_gray_code 901_online_stock_span 905_sort_array_by_parity 90_subsets_ii 918_maximum_sum_circular_subarray 91_decode_ways 92_reverse_link_list_ii 933_number_of_recent_calls 93_restore_ip_addresses 946_valid_stack_sequence 948_bag_of_tokens 949_largest_time_for_given_digits 957_prison_cell_after_n_days 967_numbers_with_same_consecutive_diffs 968_binary_tree_cameras 969_pancake_sorting 96_unique_binary_search_trees 973_k_closest_point_to_origin 977_squares_of_a_sorted_array 979_distribute_coins_in_binary_tree 97_interleaving_string 980_unique_path_iii 983_minimum_costs_for_tickets 986_interval_list_intersections 987_vertical_order_traversal_of_a_binary_tree 98_validate_binary_search_tree 991_broken_calculator 992_subarrays_with_k_different_integers 993_cousins_in_binary_tree 994_rotting_oranges 997_find_the_town_judge 99_recover_binary_search_tree addbinary binarytreelevelordertraversal2 check_if_a_string_is_a_valid_sequence_from_root_to_leaves_in_a_binary_tree counting_elements dp length_of_longest_non_descreasing_sequence longest_common_sequence sum_of_coins first_unique_number leftmost_column_with_aleast_one longest_common_prefix oa ms/numbers_with_two_equal_digit_sum plusone removeelement roman searchinsertposition strstr utils uf valid-parentheses Click to show internal directories. Click to hide internal directories.