# Summary

* [Preface](README.md)
* [FAQ](faq/README.md)
   * [Guidelines for Contributing](faq/guidelines_for_contributing.md)
   * [Contributors](faq/contributors.md)
* [Part I - Basics](part_i_basics/README.md)
* [Basics Data Structure](basics_data_structure/README.md)
   * [String](basics_data_structure/string.md)
   * [Linked List](basics_data_structure/linked_list.md)
   * [Binary Tree](basics_data_structure/binary_tree.md)
   * [Huffman Compression](basics_data_structure/huffman_compression.md)
   * [Queue](basics_data_structure/queue.md)
   * [Heap](basics_data_structure/heap.md)
   * [Stack](basics_data_structure/stack.md)
   * [Set](basics_data_structure/set.md)
   * [Map](basics_data_structure/map.md)
   * [Graph](basics_data_structure/graph.md)
* [Basics Sorting](basics_sorting/README.md)
   * [Bubble Sort](basics_sorting/bubble_sort.md)
   * [Selection Sort](basics_sorting/selection_sort.md)
   * [Insertion Sort](basics_sorting/insertion_sort.md)
   * [Merge Sort](basics_sorting/merge_sort.md)
   * [Quick Sort](basics_sorting/quick_sort.md)
   * [Heap Sort](basics_sorting/heap_sort.md)
   * [Bucket Sort](basics_sorting/bucket_sort.md)
   * [Counting Sort](basics_sorting/counting_sort.md)
   * [Radix Sort](basics_sorting/radix_sort.md)
* [Basics Algorithm](basics_algorithm/README.md)
   * [Divide and Conquer](basics_algorithm/divide_and_conquer.md)
   * [Binary Search](basics_algorithm/binary_search.md)
   * [Math](basics_algorithm/math/README.md)
       * [Greatest Common Divisor](basics_algorithm/math/gcd.md)
       * [Prime](basics_algorithm/math/prime.md)
   * [Knapsack](basics_algorithm/knapsack.md)
   * [Counting Problem](basics_algorithm/counting_problem.md)
   * [Probability](basics_algorithm/probability/README.md)
       * [Shuffle](basics_algorithm/probability/shuffle.md)
   * [Bitmap](basics_algorithm/bitmap.md)
* [Basics Misc](basics_misc/README.md)
   * [Bit Manipulation](basics_misc/bit_manipulation.md)
* [Part II - Coding](part_ii_coding/README.md)
* [String](string/README.md)
   * [strStr](string/strstr.md)
   * [Two Strings Are Anagrams](string/two_strings_are_anagrams.md)
   * [Compare Strings](string/compare_strings.md)
   * [Anagrams](string/anagrams.md)
   * [Longest Common Substring](string/longest_common_substring.md)
   * [Rotate String](string/rotate_string.md)
   * [Reverse Words in a String](string/reverse_words_in_a_string.md)
   * [Valid Palindrome](string/valid_palindrome.md)
   * [Longest Palindromic Substring](string/longest_palindromic_substring.md)
   * [Space Replacement](string/space_replacement.md)
   * [Wildcard Matching](string/wildcard_matching.md)
   * [Length of Last Word](string/length_of_last_word.md)
   * [Count and Say](string/count_and_say.md)
* [Integer Array](integer_array/README.md)
   * [Remove Element](integer_array/remove_element.md)
   * [Zero Sum Subarray](integer_array/zero_sum_subarray.md)
   * [Subarray Sum K](integer_array/subarray_sum_k.md)
   * [Subarray Sum Closest](integer_array/subarray_sum_closest.md)
   * [Recover Rotated Sorted Array](integer_array/recover_rotated_sorted_array.md)
   * [Product of Array Exclude Itself](integer_array/product_of_array_exclude_itself.md)
   * [Partition Array](integer_array/partition_array.md)
   * [First Missing Positive](integer_array/first_missing_positive.md)
   * [2 Sum](integer_array/2_sum.md)
   * [3 Sum](integer_array/3_sum.md)
   * [3 Sum Closest](integer_array/3_sum_closest.md)
   * [Remove Duplicates from Sorted Array](integer_array/remove_duplicates_from_sorted_array.md)
   * [Remove Duplicates from Sorted Array II](integer_array/remove_duplicates_from_sorted_array_ii.md)
   * [Merge Sorted Array](integer_array/merge_sorted_array.md)
   * [Merge Sorted Array II](integer_array/merge_sorted_array_ii.md)
   * [Median](integer_array/median.md)
   * [Partition Array by Odd and Even](integer_array/partition_array_by_odd_and_even.md)
   * [Kth Largest Element](integer_array/kth_largest_element.md)
* [Binary Search](binary_search/README.md)
   * [Binary Search](binary_search/binary_search.md)
   * [Search Insert Position](binary_search/search_insert_position.md)
   * [Search for a Range](binary_search/search_for_a_range.md)
   * [First Bad Version](binary_search/first_bad_version.md)
   * [Search a 2D Matrix](binary_search/search_a_2d_matrix.md)
   * [Search a 2D Matrix II](binary_search/search_a_2d_matrix_ii.md)
   * [Find Peak Element](binary_search/find_peak_element.md)
   * [Search in Rotated Sorted Array](binary_search/search_in_rotated_sorted_array.md)
   * [Search in Rotated Sorted Array II](binary_search/search_in_rotated_sorted_array_ii.md)
   * [Find Minimum in Rotated Sorted Array](binary_search/find_minimum_in_rotated_sorted_array.md)
   * [Find Minimum in Rotated Sorted Array II](binary_search/find_minimum_in_rotated_sorted_array_ii.md)
   * [Median of two Sorted Arrays](binary_search/median_of_two_sorted_arrays.md)
   * [Sqrt x](binary_search/sqrt_x.md)
   * [Wood Cut](binary_search/wood_cut.md)
* [Math and Bit Manipulation](math_and_bit_manipulation/README.md)
   * [Single Number](math_and_bit_manipulation/single_number.md)
   * [Single Number II](math_and_bit_manipulation/single_number_ii.md)
   * [Single Number III](math_and_bit_manipulation/single_number_iii.md)
   * [O1 Check Power of 2](math_and_bit_manipulation/o1_check_power_of_2.md)
   * [Convert Integer A to Integer B](math_and_bit_manipulation/convert_integer_a_to_integer_b.md)
   * [Factorial Trailing Zeroes](math_and_bit_manipulation/factorial_trailing_zeroes.md)
   * [Unique Binary Search Trees](math_and_bit_manipulation/unique_binary_search_trees.md)
   * [Update Bits](math_and_bit_manipulation/update_bits.md)
   * [Fast Power](math_and_bit_manipulation/fast_power.md)
   * [Hash Function](math_and_bit_manipulation/hash_function.md)
   * [Count 1 in Binary](math_and_bit_manipulation/count_1_in_binary.md)
   * [Fibonacci](math_and_bit_manipulation/fibonacci.md)
   * [A plus B Problem](math_and_bit_manipulation/a_plus_b_problem.md)
   * [Print Numbers by Recursion](math_and_bit_manipulation/print_numbers_by_recursion.md)
   * [Majority Number](math_and_bit_manipulation/majority_number.md)
   * [Majority Number II](math_and_bit_manipulation/majority_number_ii.md)
   * [Majority Number III](math_and_bit_manipulation/majority_number_iii.md)
   * [Digit Counts](math_and_bit_manipulation/digit_counts.md)
   * [Ugly Number](math_and_bit_manipulation/ugly_number.md)
   * [Plus One](math_and_bit_manipulation/plus_one.md)
* [Linked List](linked_list/README.md)
   * [Remove Duplicates from Sorted List](linked_list/remove_duplicates_from_sorted_list.md)
   * [Remove Duplicates from Sorted List II](linked_list/remove_duplicates_from_sorted_list_ii.md)
   * [Remove Duplicates from Unsorted List](linked_list/remove_duplicates_from_an_unsorted_linked_list.md)
   * [Partition List](linked_list/partition_list.md)
   * [Add Two Numbers](linked_list/add_two_numbers.md)
   * [Two Lists Sum Advanced](linked_list/two_lists_sum_advanced.md)
   * [Remove Nth Node From End of List](linked_list/remove_nth_node_from_end_of_list.md)
   * [Linked List Cycle](linked_list/linked_list_cycle.md)
   * [Linked List Cycle II](linked_list/linked_list_cycle_ii.md)
   * [Reverse Linked List](linked_list/reverse_linked_list.md)
   * [Reverse Linked List II](linked_list/reverse_linked_list_ii.md)
   * [Merge Two Sorted Lists](linked_list/merge_two_sorted_lists.md)
   * [Merge k Sorted Lists](linked_list/merge_k_sorted_lists.md)
   * [Reorder List](linked_list/reorder_list.md)
   * [Copy List with Random Pointer](linked_list/copy_list_with_random_pointer.md)
   * [Sort List](linked_list/sort_list.md)
   * [Insertion Sort List](linked_list/insertion_sort_list.md)
   * [Palindrome Linked List](linked_list/palindrome_linked_list.md)
   * [Delete Node in the Middle of Singly Linked List](linked_list/delete_node_in_the_middle_of_singly_linked_list.md)
   * [LRU Cache](linked_list/lru_cache.md)
   * [Rotate List](linked_list/rotate_list.md)
   * [Swap Nodes in Pairs](linked_list/swap_nodes_in_pairs.md)
   * [Remove Linked List Elements](linked_list/remove_linked_list_elements.md)
* [Binary Tree](binary_tree/README.md)
   * [Binary Tree Preorder Traversal](binary_tree/binary_tree_preorder_traversal.md)
   * [Binary Tree Inorder Traversal](binary_tree/binary_tree_inorder_traversal.md)
   * [Binary Tree Postorder Traversal](binary_tree/binary_tree_postorder_traversal.md)
   * [Binary Tree Level Order Traversal](binary_tree/binary_tree_level_order_traversal.md)
   * [Binary Tree Level Order Traversal II](binary_tree/binary_tree_level_order_traversal_ii.md)
   * [Maximum Depth of Binary Tree](binary_tree/maximum_depth_of_binary_tree.md)
   * [Balanced Binary Tree](binary_tree/balanced_binary_tree.md)
   * [Binary Tree Maximum Path Sum](binary_tree/binary_tree_maximum_path_sum.md)
   * [Lowest Common Ancestor](binary_tree/lowest_common_ancestor.md)
   * [Invert Binary Tree](binary_tree/invert_binary_tree.md)
   * [Diameter of a Binary Tree](binary_tree/diameter_of_a_binary_tree.md)
   * [Construct Binary Tree from Preorder and Inorder Traversal](binary_tree/construct_binary_tree_from_preorder_and_inorder_traversal.md)
   * [Construct Binary Tree from Inorder and Postorder Traversal](binary_tree/construct_binary_tree_from_inorder_and_postorder_traversal.md)
   * [Subtree](binary_tree/subtree.md)
   * [Binary Tree Zigzag Level Order Traversal](binary_tree/binary_tree_zigzag_level_order_traversal.md)
   * [Binary Tree Serialization](binary_tree/binary_tree_serialization.md)
* [Binary Search Tree](binary_search_tree/README.md)
   * [Insert Node in a Binary Search Tree](binary_search_tree/insert_node_in_a_binary_search_tree.md)
   * [Validate Binary Search Tree](binary_search_tree/validate_binary_search_tree.md)
   * [Search Range in Binary Search Tree](binary_search_tree/search_range_in_binary_search_tree.md)
   * [Convert Sorted Array to Binary Search Tree](binary_search_tree/convert_sorted_array_to_binary_search_tree.md)
   * [Convert Sorted List to Binary Search Tree](binary_search_tree/convert_sorted_list_to_binary_search_tree.md)
   * [Binary Search Tree Iterator](binary_search_tree/binary_search_tree_iterator.md)
* [Exhaustive Search](exhaustive_search/README.md)
   * [Subsets](exhaustive_search/subsets.md)
   * [Unique Subsets](exhaustive_search/unique_subsets.md)
   * [Permutations](exhaustive_search/permutations.md)
   * [Unique Permutations](exhaustive_search/permutations_ii.md)
   * [Next Permutation](exhaustive_search/next_permutation.md)
   * [Previous Permuation](exhaustive_search/previous_permuation.md)
   * [Permutation Index](exhaustive_search/permutation_index.md)
   * [Permutation Index II](exhaustive_search/permutation_index_ii.md)
   * [Permutation Sequence](exhaustive_search/permutation_sequence.md)
   * [Unique Binary Search Trees II](exhaustive_search/unique_binary_search_trees_ii.md)
   * [Palindrome Partitioning](exhaustive_search/palindrome_partitioning.md)
   * [Combinations](exhaustive_search/combinations.md)
   * [Combination Sum](exhaustive_search/combination_sum.md)
   * [Combination Sum II](exhaustive_search/combination_sum_ii.md)
   * [Minimum Depth of Binary Tree](exhaustive_search/minimum_depth_of_binary_tree.md)
   * [Word Search](exhaustive_search/word_search.md)
* [Dynamic Programming](dynamic_programming/README.md)
   * [Triangle](dynamic_programming/triangle.md)
   * [Backpack](dynamic_programming/backpack.md)
   * [Backpack II](dynamic_programming/backpack_ii.md)
   * [Minimum Path Sum](dynamic_programming/minimum_path_sum.md)
   * [Unique Paths](dynamic_programming/unique_paths.md)
   * [Unique Paths II](dynamic_programming/unique_paths_ii.md)
   * [Climbing Stairs](dynamic_programming/climbing_stairs.md)
   * [Jump Game](dynamic_programming/jump_game.md)
   * [Word Break](dynamic_programming/word_break.md)
   * [Longest Increasing Subsequence](dynamic_programming/longest_increasing_subsequence.md)
   * [Palindrome Partitioning II](dynamic_programming/palindrome_partitioning_ii.md)
   * [Longest Common Subsequence](dynamic_programming/longest_common_subsequence.md)
   * [Edit Distance](dynamic_programming/edit_distance.md)
   * [Jump Game II](dynamic_programming/jump_game_ii.md)
   * [Best Time to Buy and Sell Stock](dynamic_programming/best_time_to_buy_and_sell_stock.md)
   * [Best Time to Buy and Sell Stock II](dynamic_programming/best_time_to_buy_and_sell_stock_ii.md)
   * [Best Time to Buy and Sell Stock III](dynamic_programming/best_time_to_buy_and_sell_stock_iii.md)
   * [Best Time to Buy and Sell Stock IV](dynamic_programming/best_time_to_buy_and_sell_stock_iv.md)
   * [Distinct Subsequences](dynamic_programming/distinct_subsequences.md)
   * [Interleaving String](dynamic_programming/interleaving_string.md)
   * [Maximum Subarray](dynamic_programming/maximum_subarray.md)
   * [Maximum Subarray II](dynamic_programming/maximum_subarray_ii.md)
   * [Longest Increasing Continuous subsequence](dynamic_programming/longest_increasing_continuous_subsequence.md)
   * [Longest Increasing Continuous subsequence II](dynamic_programming/longest_increasing_continuous_subsequence_ii.md)
   * [Egg Dropping Puzzle](dynamic_programming/egg_dropping_puzzle.md)
   * [Maximal Square](dynamic_programming/maximal_square.md)
* [Graph](graph/README.md)
   * [Find the Connected Component in the Undirected Graph](graph/find_the_connected_component_in_the_undirected_graph.md)
   * [Route Between Two Nodes in Graph](graph/route_between_two_nodes_in_graph.md)
   * [Topological Sorting](graph/topological_sorting.md)
   * [Word Ladder](graph/word_ladder.md)
   * [Bipartial Graph Part I](graph/bipartial_graph_part_i.md)
* [Data Structure](data_structure/README.md)
   * [Implement Queue by Two Stacks](data_structure/implement_queue_by_two_stacks.md)
   * [Min Stack](data_structure/min_stack.md)
   * [Sliding Window Maximum](data_structure/sliding_window_maximum.md)
   * [Longest Words](data_structure/longest_words.md)
   * [Heapify](data_structure/heapify.md)
   * [Kth Smallest Number in Sorted Matrix](data_structure/kth_smallest_number_in_sorted_matrix.md)
* [Problem Misc](problem_misc/README.md)
   * [Nuts and Bolts Problem](problem_misc/nuts_and_bolts_problem.md)
   * [String to Integer](problem_misc/string_to_integer.md)
   * [Insert Interval](problem_misc/insert_interval.md)
   * [Merge Intervals](problem_misc/merge_intervals.md)
   * [Minimum Subarray](problem_misc/minimum_subarray.md)
   * [Matrix Zigzag Traversal](problem_misc/matrix_zigzag_traversal.md)
   * [Valid Sudoku](problem_misc/valid_sudoku.md)
   * [Add Binary](problem_misc/add_binary.md)
   * [Reverse Integer](problem_misc/reverse_integer.md)
   * [Gray Code](problem_misc/gray_code.md)
   * [Find the Missing Number](problem_misc/find_the_missing_number.md)
   * [N Queens](problem_misc/n_queens.md)
   * [N Queens II](problem_misc/n_queens_ii.md)
   * [Minimum Window Substring](problem_misc/minimum_window_substring.md)
   * [Continuous Subarray Sum](problem_misc/continuous_subarray_sum.md)
   * [Continuous Subarray Sum II](problem_misc/continuous_subarray_sum_ii.md)
   * [Longest Consecutive Sequence](problem_misc/longest_consecutive_sequence.md)
* [Part III - Contest](part_iii_contest/README.md)
* [Google APAC](google_apac/README.md)
   * [APAC 2015 Round B](google_apac/google_apac_2015_round_b/README.md)
       * [Problem A. Password Attacker](google_apac/google_apac_2015_round_b/problem_a_password_attacker.md)
   * [APAC 2016 Round D](google_apac/google_apac_2016_round_d/README.md)
       * [Problem A. Dynamic Grid](google_apac/google_apac_2016_round_d/problem_a_dynamic_grid.md)
* [Microsoft](microsoft/README.md)
   * [Microsoft 2015 April](microsoft/mstest2015april/README.md)
       * [Problem A. Magic Box](microsoft/mstest2015april/problem_a_magic_box.md)
       * [Problem B. Professor Q's Software](microsoft/mstest2015april/problem_b_professor_qs_software.md)
       * [Problem C. Islands Travel](microsoft/mstest2015april/problem_c_islands_travel.md)
       * [Problem D. Recruitment](microsoft/mstest2015april/problem_d_recruitment.md)
   * [Microsoft 2015 April 2](microsoft/mstest2015april2/README.md)
       * [Problem A. Lucky Substrings](microsoft/mstest2015april2/problem_a_lucky_substrings.md)
       * [Problem B. Numeric Keypad](microsoft/mstest2015april2/problem_b_numeric_keypad.md)
       * [Problem C. Spring Outing](microsoft/mstest2015april2/problem_c_spring_outing.md)
   * [Microsoft 2015 September 2](microsoft/mstest2015sept2/README.md)
       * [Problem A. Farthest Point](microsoft/mstest2015sept2/problem_a_farthest_point.md)
* [Appendix I Interview and Resume](appendix_i_interview_and_resume/README.md)
   * [Interview](appendix_i_interview_and_resume/interview.md)
   * [Resume](appendix_i_interview_and_resume/resume.md)
* [Appendix II System Design](appendix_ii_system_design/README.md)
   * [The System Design Process](appendix_ii_system_design/the_system_design_process.md)
   * [Statistics](appendix_ii_system_design/statistics.md)
   * [System Architecture](appendix_ii_system_design/system_architecture.md)
   * [Scalability](appendix_ii_system_design/scalability.md)
* [Tags](tags.md)

