# Introduction

## Algorithm and Data Structure Notes

\#algorithm# #datastructure# #数据结构和算法#

Problems coming from LeetCode, LintCode, TopCoder, CtCi, etc.

**Disclaimer:**

1. Under construction
2. Some solutions, comments, concepts, explanation, analysis may come from Internet, discussion forums
3. Personal use only, for learning purpose

### Contents

## Summary

* [Introduction](https://aaronice.gitbook.io/lintcode/master)
* [Linked List](https://aaronice.gitbook.io/lintcode/linked_list)
* [Sort List](https://aaronice.gitbook.io/lintcode/linked_list/sort_list)
* [Merge Two Sorted Lists](https://aaronice.gitbook.io/lintcode/linked_list/merge-two-sorted-lists)
* [Merge k Sorted Lists](https://aaronice.gitbook.io/lintcode/heap/merge_k_sorted_lists)
* [Linked List Cycle](https://aaronice.gitbook.io/lintcode/linked_list/linked_list_cycle)
* [Linked List Cycle II](https://aaronice.gitbook.io/lintcode/linked_list/linked_list_cycle_ii)
* [Add Two Numbers II](https://aaronice.gitbook.io/lintcode/linked_list/add_two_numbers_ii)
* [Add Two Numbers](https://aaronice.gitbook.io/lintcode/linked_list/add-two-numbers)
* [Odd Even Linked List](https://aaronice.gitbook.io/lintcode/linked_list/odd-even-linked-list)
* [Intersection of Two Linked Lists](https://aaronice.gitbook.io/lintcode/linked_list/intersection-of-two-linked-lists)
* [Reverse Linked List](https://aaronice.gitbook.io/lintcode/linked_list/reverse-linked-list)
* [Reverse Linked List II](https://aaronice.gitbook.io/lintcode/linked_list/reverse-linked-list-ii)
* [Remove Linked List Elements](https://aaronice.gitbook.io/lintcode/linked_list/remove-linked-list-elements)
* [Remove Nth Node From End of List](https://aaronice.gitbook.io/lintcode/linked_list/remove-nth-node-from-end-of-list)
* [Middle of the Linked List](https://aaronice.gitbook.io/lintcode/linked_list/middle-of-the-linked-list)
* [Design Linked List](https://aaronice.gitbook.io/lintcode/linked_list/design-linked-list)
* [Design Singly Linked List](https://aaronice.gitbook.io/lintcode/linked_list/design-linked-list/design-singly-linked-list)
* [Design Doubly Linked List](https://aaronice.gitbook.io/lintcode/linked_list/design-linked-list/design-doubly-linked-list)
* [Palindrome Linked List](https://aaronice.gitbook.io/lintcode/linked_list/palindrome-linked-list)
* [Remove Duplicates from Sorted List](https://aaronice.gitbook.io/lintcode/linked_list/remove-duplicates-from-sorted-list)
* [Remove Duplicates from Sorted List II](https://aaronice.gitbook.io/lintcode/linked_list/remove-duplicates-from-sorted-list-ii)
* [Implement Stack Using Singly Linked List](https://aaronice.gitbook.io/lintcode/linked_list/implement-stack-using-singly-linked-list)
* [Copy List with Random Pointer](https://aaronice.gitbook.io/lintcode/linked_list/copy-list-with-random-pointer)
* [Binary Search](https://aaronice.gitbook.io/lintcode/binary-search)
* [Search in Rotated Sorted Array](https://aaronice.gitbook.io/lintcode/binary-search/search-in-rotated-sorted-array)
* [Search in Rotated Sorted Array II](https://aaronice.gitbook.io/lintcode/binary-search/search-in-rotated-sorted-array-ii)
* [Search in a Sorted Array of Unknown Size](https://aaronice.gitbook.io/lintcode/binary-search/search-in-a-sorted-array-of-unknown-size)
* [First Bad Version](https://aaronice.gitbook.io/lintcode/binary-search/first-bad-version)
* [Find Minimum in Rotated Sorted Array](https://aaronice.gitbook.io/lintcode/binary-search/find-minimum-in-rotated-sorted-array)
* [Find Minimum in Rotated Sorted Array II](https://aaronice.gitbook.io/lintcode/binary-search/find-minimum-in-rotated-sorted-array-ii)
* [Find Peak Element](https://aaronice.gitbook.io/lintcode/binary-search/find-peak-element)
* [Search for a Range](https://aaronice.gitbook.io/lintcode/binary-search/search-for-a-range)
* [Find K Closest Elements](https://aaronice.gitbook.io/lintcode/binary-search/find-k-closest-elements)
* [Search Insert Position](https://aaronice.gitbook.io/lintcode/binary-search/search-insert-position)
* [Peak Index in a Mountain Array](https://aaronice.gitbook.io/lintcode/binary-search/peak-index-in-a-mountain-array)
* [Heaters](https://aaronice.gitbook.io/lintcode/binary-search/heaters)
* [Hash Table](https://aaronice.gitbook.io/lintcode/hash-table)
* [Jewels and Stones](https://aaronice.gitbook.io/lintcode/hash-table/jewels-and-stones)
* [Single Number](https://aaronice.gitbook.io/lintcode/hash-table/single-number)
* [Subdomain Visit Count](https://aaronice.gitbook.io/lintcode/hash-table/subdomain-visit-count)
* [Design HashMap](https://aaronice.gitbook.io/lintcode/hash-table/design-hashmap)
* [Design HashSet](https://aaronice.gitbook.io/lintcode/hash-table/design-hashset)
* [Logger Rate Limiter](https://aaronice.gitbook.io/lintcode/hash-table/logger-rate-limiter)
* [Isomorphic Strings](https://aaronice.gitbook.io/lintcode/hash-table/isomorphic-strings)
* [Minimum Index Sum of Two Lists](https://aaronice.gitbook.io/lintcode/hash-table/minimum-index-sum-of-two-lists)
* [Contains Duplicate II](https://aaronice.gitbook.io/lintcode/hash-table/contains-duplicate-ii)
* [Contains Duplicate III](https://aaronice.gitbook.io/lintcode/hash-table/contains-duplicate-iii)
* [Longest Consecutive Sequence](https://aaronice.gitbook.io/lintcode/hash-table/longest_consecutive_sequence)
* [Valid Sudoku](https://aaronice.gitbook.io/lintcode/hash-table/valid-sudoku)
* [Distribute Candies](https://aaronice.gitbook.io/lintcode/hash-table/distribute-candies)
* [Shortest Word Distance](https://aaronice.gitbook.io/lintcode/hash-table/shortest-word-distance)
* [Shortest Word Distance II](https://aaronice.gitbook.io/lintcode/hash-table/shortest-word-distance-ii)
* [String](https://aaronice.gitbook.io/lintcode/string)
* [Rotate String](https://aaronice.gitbook.io/lintcode/string/rotate-string)
* [Add Binary](https://aaronice.gitbook.io/lintcode/string/add-binary)
* [Implement strStr()](https://aaronice.gitbook.io/lintcode/string/implement-strstr)
* [Longest Common Prefix](https://aaronice.gitbook.io/lintcode/string/longest-common-prefix)
* [Reverse Words in a String](https://aaronice.gitbook.io/lintcode/string/reverse-words-in-a-string)
* [Reverse Words in a String II](https://aaronice.gitbook.io/lintcode/string/reverse-words-in-a-string-ii)
* [Reverse Words in a String III](https://aaronice.gitbook.io/lintcode/string/reverse-words-in-a-string-iii)
* [Valid Word Abbreviation](https://aaronice.gitbook.io/lintcode/string/valid-word-abbreviation)
* [Group Anagrams](https://aaronice.gitbook.io/lintcode/string/group-anagrams)
* [Unique Email Addresses](https://aaronice.gitbook.io/lintcode/string/unique-email-addresses)
* [Next Closest Time](https://aaronice.gitbook.io/lintcode/string/next-closest-time)
* [License Key Formatting](https://aaronice.gitbook.io/lintcode/string/license-key-formatting)
* [String to Integer - atoi](https://aaronice.gitbook.io/lintcode/string/string-to-integer-atoi)
* [Ransom Note](https://aaronice.gitbook.io/lintcode/string/ransom-note)
* [Multiply Strings](https://aaronice.gitbook.io/lintcode/string/multiply-strings)
* [Text Justification](https://aaronice.gitbook.io/lintcode/string/text-justification)
* [Reorder Log Files](https://aaronice.gitbook.io/lintcode/string/reorder-log-files)
* [Most Common Word](https://aaronice.gitbook.io/lintcode/string/most-common-word)
* Valid Parenthesis String
* [K-Substring with K different characters](https://aaronice.gitbook.io/lintcode/string/k-substring-with-k-different-characters)
* [Find All Anagrams in a String](https://aaronice.gitbook.io/lintcode/string/find-all-anagrams-in-a-string)
* [Find the Closest Palindrome](https://aaronice.gitbook.io/lintcode/string/find-the-closest-palindrome)
* [Simplify Path](https://aaronice.gitbook.io/lintcode/string/simplify-path)
* [Array](https://aaronice.gitbook.io/lintcode/array)
* [Partition Array](https://aaronice.gitbook.io/lintcode/array/partition_array)
* [Median of Two Sorted Arrays](https://aaronice.gitbook.io/lintcode/array/median_of_two_sorted_arrays)
* [Intersection of Two Arrays](https://aaronice.gitbook.io/lintcode/array/intersection_of_two_arrays)
* [Intersection of Two Arrays II](https://aaronice.gitbook.io/lintcode/array/intersection_of_two_arrays_ii)
* [Maximum Subarray Sum](https://aaronice.gitbook.io/lintcode/array/maximum_subarray_sum)
* [Minimum Subarray Sum](https://aaronice.gitbook.io/lintcode/array/minimum-subarray-sum)
* [Maximum Subarray II](https://aaronice.gitbook.io/lintcode/array/maximum-subarray-ii)
* [Maximum Subarray III](https://aaronice.gitbook.io/lintcode/array/maximum-subarray-iii)
* [Subarray Sum Closest](https://aaronice.gitbook.io/lintcode/array/subarray_sum_closest)
* [Subarray Sum](https://aaronice.gitbook.io/lintcode/array/subarray_sum)
* [Plus One](https://aaronice.gitbook.io/lintcode/array/plus_one)
* [Maximum Subarray Difference](https://aaronice.gitbook.io/lintcode/array/maximum-subarray-difference)
* [Maximum Subarray IV](https://aaronice.gitbook.io/lintcode/array/maximum-subarray-iv)
* [Subarray Sum Equals K](https://aaronice.gitbook.io/lintcode/array/subarray-sum-equals-k)
* [Intersection of Two Arrays](https://aaronice.gitbook.io/lintcode/array/intersection-of-two-arrays)
* [Intersection of Two Arrays II](https://aaronice.gitbook.io/lintcode/array/intersection-of-two-arrays-ii)
* [Find Pivot Index](https://aaronice.gitbook.io/lintcode/array/find-pivot-index)
* [Rotate Array](https://aaronice.gitbook.io/lintcode/array/rotate-array)
* [Get Smallest Nonnegative Integer Not In The Array](https://aaronice.gitbook.io/lintcode/array/get-smallest-nonnegative-integer-not-in-the-array)
* [Maximize Distance to Closest Person](https://aaronice.gitbook.io/lintcode/array/maximize-distance-to-closest-person)
* [Sort Colors](https://aaronice.gitbook.io/lintcode/array/sort-colors)
* [Next Permutation](https://aaronice.gitbook.io/lintcode/array/next-permutation)
* [Rotate Image](https://aaronice.gitbook.io/lintcode/array/rotate-image)
* [Pour Water](https://aaronice.gitbook.io/lintcode/array/pour-water)
* [Prison Cells After N Days](https://aaronice.gitbook.io/lintcode/array/active-and-inactive-cells-after-k-days)
* [Majority Element](https://aaronice.gitbook.io/lintcode/array/majority-element)
* [Can Place Flowers](https://aaronice.gitbook.io/lintcode/array/can-place-flowers)
* [Candy](https://aaronice.gitbook.io/lintcode/array/candy)
* [Matrix](https://aaronice.gitbook.io/lintcode/matrix)
* [Spiral Matrix](https://aaronice.gitbook.io/lintcode/matrix/spiral-matrix)
* [Set Matrix Zeroes](https://aaronice.gitbook.io/lintcode/matrix/set-matrix-zeroes)
* [Diagonal Traverse](https://aaronice.gitbook.io/lintcode/matrix/diagonal-traverse)
* [Queue](https://aaronice.gitbook.io/lintcode/queue)
* [Design Circular Queue](https://aaronice.gitbook.io/lintcode/queue/design-circular-queue)
* [Implement Queue using Stacks](https://aaronice.gitbook.io/lintcode/queue/implement-queue-using-stacks)
* [Implement Queue by Two Stacks](https://aaronice.gitbook.io/lintcode/queue/implement_queue_by_two_stacks)
* [Implement Stack using Queues](https://aaronice.gitbook.io/lintcode/queue/implement-stack-using-queues)
* [Moving Average from Data Stream](https://aaronice.gitbook.io/lintcode/data_structure/moving-average-from-data-stream)
* [Walls and Gates](https://aaronice.gitbook.io/lintcode/queue/walls-and-gates)
* [Open the Lock](https://aaronice.gitbook.io/lintcode/queue/open-the-lock)
* [Sliding Window Maximum](https://aaronice.gitbook.io/lintcode/data_structure/sliding_window_maximum)
* Implement Queue Using Fixed Length Array
* [Animal Shelter](https://aaronice.gitbook.io/lintcode/data_structure/animal_shelter)
* [Stack](https://aaronice.gitbook.io/lintcode/stack)
* [Valid Parentheses](https://aaronice.gitbook.io/lintcode/stack/valid-parentheses)
* [Longest Valid Parentheses](https://aaronice.gitbook.io/lintcode/stack/longest-valid-parentheses)
* [Min Stack](https://aaronice.gitbook.io/lintcode/stack/min_stack)
* [Max Stack](https://aaronice.gitbook.io/lintcode/stack/max-stack)
* [Daily Temperatures](https://aaronice.gitbook.io/lintcode/stack/daily-temperatures)
* [Evaluate Reverse Polish Notation](https://aaronice.gitbook.io/lintcode/stack/evaluate-reverse-polish-notation)
* [Next Greater Element I](https://aaronice.gitbook.io/lintcode/stack/next-greater-element-i)
* [Next Greater Element II](https://aaronice.gitbook.io/lintcode/stack/next-greater-element-ii)
* [Next Greater Element III](https://aaronice.gitbook.io/lintcode/stack/next-greater-element-iii)
* [Largest Rectangle in Histogram](https://aaronice.gitbook.io/lintcode/stack/largest_rectangle_in_histogram)
* [Maximal Rectangle](https://aaronice.gitbook.io/lintcode/stack/maximal-rectangle)
* [Car Fleet](https://aaronice.gitbook.io/lintcode/stack/car-fleet)
* [Heap](https://aaronice.gitbook.io/lintcode/heap)
* [Trapping Rain Water II](https://aaronice.gitbook.io/lintcode/heap/trapping_rain_water_ii)
* [The Skyline Problem](https://aaronice.gitbook.io/lintcode/heap/the-skyline-problem)
* [Top K Frequent Words](https://aaronice.gitbook.io/lintcode/heap/top-k-frequent-words)
* [Top K Frequent Words II](https://aaronice.gitbook.io/lintcode/heap/top-k-frequent-words-ii)
* [Top K Frequent Elements](https://aaronice.gitbook.io/lintcode/heap/top-k-frequent-elements)
* [Top k Largest Numbers](https://aaronice.gitbook.io/lintcode/heap/top_k_largest_numbers)
* [Top k Largest Numbers II](https://aaronice.gitbook.io/lintcode/heap/top_k_largest_numbers_ii)
* [Minimum Cost to Hire K Workers](https://aaronice.gitbook.io/lintcode/heap/minimum-cost-to-hire-k-workers)
* [Kth Largest Element in an Array](https://aaronice.gitbook.io/lintcode/heap/kth_largest_element)
* [Kth Smallest Number in Sorted Matrix](https://aaronice.gitbook.io/lintcode/heap/kth_smallest_number_in_sorted_matrix)
* [Kth Smallest Sum In Two Sorted Arrays](https://aaronice.gitbook.io/lintcode/heap/kth_smallest_sum_in_two_sorted_arrays)
* [K Closest Points to the Origin](https://aaronice.gitbook.io/lintcode/heap/k-closest-points-to-the-origin)
* [Merge K Sorted Lists](https://aaronice.gitbook.io/lintcode/heap/merge_k_sorted_lists)
* [Merge K Sorted Arrays](https://aaronice.gitbook.io/lintcode/heap/merge-k-sorted-arrays)
* [Top K Frequent Words - Map Reduce](https://aaronice.gitbook.io/lintcode/heap/top-k-frequent-words-map-reduce)
* [Data Structure & Design](https://aaronice.gitbook.io/lintcode/data_structure)
* [Hash Function](https://aaronice.gitbook.io/lintcode/data_structure/hash_function)
* [Heapify](https://aaronice.gitbook.io/lintcode/data_structure/heapify)
* [LRU Cache](https://aaronice.gitbook.io/lintcode/data_structure/lru_cache)
* [LFU Cache](https://aaronice.gitbook.io/lintcode/data_structure/lfu_cache)
* [Rehashing](https://aaronice.gitbook.io/lintcode/data_structure/rehashing)
* [Stack Sorting](https://aaronice.gitbook.io/lintcode/data_structure/stack_sorting)
* [Animal Shelter](https://aaronice.gitbook.io/lintcode/data_structure/animal_shelter)
* [Sliding Window Maximum](https://aaronice.gitbook.io/lintcode/data_structure/sliding_window_maximum)
* [Moving Average from Data Stream](https://aaronice.gitbook.io/lintcode/data_structure/moving-average-from-data-stream)
* [Find Median from Data Stream](https://aaronice.gitbook.io/lintcode/data_structure/data_stream_median)
* [Sliding Window Median](https://aaronice.gitbook.io/lintcode/data_structure/sliding-window-median)
* [Design Hit Counter](https://aaronice.gitbook.io/lintcode/data_structure/design-hit-counter)
* [Read N Characters Given Read4 II - Call multiple times](https://aaronice.gitbook.io/lintcode/data_structure/read-n-characters-given-read4-ii-call-multiple-times)
* [Read N Characters Given Read4](https://aaronice.gitbook.io/lintcode/data_structure/read-n-characters-given-read4)
* [Flatten 2D Vector](https://aaronice.gitbook.io/lintcode/data_structure/flatten-2d-vector)
* [Flatten Nested List Iterator](https://aaronice.gitbook.io/lintcode/data_structure/flatten-nested-list-iterator)
* [Design Search Autocomplete System](https://aaronice.gitbook.io/lintcode/trie/design-search-autocomplete-system)
* [Time Based Key-Value Store](https://aaronice.gitbook.io/lintcode/data_structure/time-based-key-value-store)
* [Design Tic-Tac-Toe](https://aaronice.gitbook.io/lintcode/data_structure/design-tic-tac-toe)
* [Insert Delete GetRandom O(1)](https://aaronice.gitbook.io/lintcode/data_structure/insert-delete-getrandom-o1)
* [Union Find](https://aaronice.gitbook.io/lintcode/union_find)
* [Find the Connected Component in the Undirected Graph](https://aaronice.gitbook.io/lintcode/union_find/find_the_connected_component_in_the_undirected_graph)
* [Find the Weak Connected Component in the Directed Graph](https://aaronice.gitbook.io/lintcode/union_find/find_the_weak_connected_component_in_the_directed_graph)
* [Graph Valid Tree](https://aaronice.gitbook.io/lintcode/union_find/graph_valid_tree)
* [Number of Islands](https://aaronice.gitbook.io/lintcode/graph_search/number_of_islands)
* [Number of Islands II](https://aaronice.gitbook.io/lintcode/union_find/number_of_islands_ii)
* [Surrounded Regions](https://aaronice.gitbook.io/lintcode/union_find/surrounded_regions)
* [Most Stones Removed with Same Row or Column](https://aaronice.gitbook.io/lintcode/graph_search/most-stones-removed-with-same-row-or-column)
* [Redundant Connection](https://aaronice.gitbook.io/lintcode/union_find/redundant-connection)
* [Trie](https://aaronice.gitbook.io/lintcode/trie)
* [Implement Trie](https://aaronice.gitbook.io/lintcode/trie/implement_trie)
* [Add and Search Word](https://aaronice.gitbook.io/lintcode/trie/add_and_search_word)
* [Word Search II](https://aaronice.gitbook.io/lintcode/trie/word_search_ii)
* [Longest Word in Dictionary](https://aaronice.gitbook.io/lintcode/trie/longest-word-in-dictionary)
* [Palindrome Pairs](https://aaronice.gitbook.io/lintcode/trie/palindrome-pairs)
* [Trie Serialization](https://aaronice.gitbook.io/lintcode/trie/trie-serialization)
* [Trie Service](https://aaronice.gitbook.io/lintcode/trie/trie-service)
* [Design Search Autocomplete System](https://aaronice.gitbook.io/lintcode/trie/design-search-autocomplete-system)
* [Typeahead](https://aaronice.gitbook.io/lintcode/trie/typeahead)
* [Trees](https://aaronice.gitbook.io/lintcode/trees)
* [Binary Tree Inorder Traversal](https://aaronice.gitbook.io/lintcode/trees/binary-tree-inorder-traversal)
* [Binary Tree Postorder Traversal](https://aaronice.gitbook.io/lintcode/trees/binary-tree-postorder-traversal)
* [Binary Tree Preorder Traversal](https://aaronice.gitbook.io/lintcode/trees/binary-tree-preorder-traversal)
* [Binary Tree Level Order Traversal](https://aaronice.gitbook.io/lintcode/trees/binary-tree-level-order-traversal)
* [Binary Tree Zigzag Level Order Traversal](https://aaronice.gitbook.io/lintcode/trees/binary-tree-zigzag-level-order-traversal)
* [Binary Tree Vertical Order Traversal](https://aaronice.gitbook.io/lintcode/trees/binary-tree-vertical-order-traversal)
* [N-ary Tree Level Order Traversal](https://aaronice.gitbook.io/lintcode/trees/n-ary-tree-level-order-traversal)
* [N-ary Tree Preorder Traversal](https://aaronice.gitbook.io/lintcode/trees/n-ary-tree-preorder-traversal)
* [N-ary Tree Postorder Traversal](https://aaronice.gitbook.io/lintcode/trees/n-ary-tree-postorder-traversal)
* [Construct Binary Tree from Preorder and Inorder Traversal](https://aaronice.gitbook.io/lintcode/trees/construct-binary-tree-from-preorder-and-inorder-traversal)
* [Populating Next Right Pointers in Each Node](https://aaronice.gitbook.io/lintcode/trees/populating-next-right-pointers-in-each-node)
* [Populating Next Right Pointers in Each Node II](https://aaronice.gitbook.io/lintcode/trees/populating-next-right-pointers-in-each-node-ii)
* [Maximum Depth of Binary Tree](https://aaronice.gitbook.io/lintcode/trees/maximum-depth-of-binary-tree)
* [Symmetric Tree](https://aaronice.gitbook.io/lintcode/trees/symmetric-tree)
* [Validate Binary Search Tree](https://aaronice.gitbook.io/lintcode/trees/validate-binary-search-tree)
* [Convert Sorted Array to Binary Search Tree](https://aaronice.gitbook.io/lintcode/trees/convert-sorted-array-to-binary-search-tree)
* [Path Sum](https://aaronice.gitbook.io/lintcode/trees/path-sum)
* [Path Sum II](https://aaronice.gitbook.io/lintcode/trees/path-sum-ii)
* [Path Sum III](https://aaronice.gitbook.io/lintcode/trees/path-sum-iii)
* [Binary Tree Maximum Path Sum](https://aaronice.gitbook.io/lintcode/trees/binary-tree-maximum-path-sum)
* [Kth Smallest Element in a BST](https://aaronice.gitbook.io/lintcode/trees/kth-smallest-element-in-a-bst)
* [Same Tree](https://aaronice.gitbook.io/lintcode/trees/same-tree)
* [Lowest Common Ancestor of a Binary Tree](https://aaronice.gitbook.io/lintcode/trees/lowest-common-ancestor-of-a-binary-tree)
* [Lowest Common Ancestor of a Binary Search Tree](https://aaronice.gitbook.io/lintcode/trees/lowest-common-ancestor-of-a-binary-search-tree)
* [Nested List Weight Sum II](https://aaronice.gitbook.io/lintcode/trees/nested-list-weight-sum-ii)
* [BST Node Distance](https://aaronice.gitbook.io/lintcode/trees/bst-node-distance)
* [Minimum Distance (Difference) Between BST Nodes](https://aaronice.gitbook.io/lintcode/trees/minimum-distance-difference-between-bst-nodes)
* [Closet Common Manager](https://aaronice.gitbook.io/lintcode/trees/closet-common-manager)
* N-ary Tree Postorder Traversal
* [Serialize and Deserialize Binary Tree](https://aaronice.gitbook.io/lintcode/trees/serialize-and-deserialize-binary-tree)
* [Serialize and Deserialize N-ary Tree](https://aaronice.gitbook.io/lintcode/trees/serialize-and-deserialize-n-ary-tree)
* [Diameter of a Binary Tree](https://aaronice.gitbook.io/lintcode/trees/diameter-of-a-binary-tree)
* [Print Binary Trees](https://aaronice.gitbook.io/lintcode/trees/print-binary-trees)
* [Segment Tree](https://aaronice.gitbook.io/lintcode/segment_tree)
* [Segment Tree Build](https://aaronice.gitbook.io/lintcode/segment_tree/segment_tree_build)
* [Range Sum Query - Mutable](https://aaronice.gitbook.io/lintcode/segment_tree/range-sum-query-mutable)
* [Binary Indexed Tree](https://aaronice.gitbook.io/lintcode/binary-indexed-tree)
* [Graph & Search](https://aaronice.gitbook.io/lintcode/graph_search)
* [Clone Graph](https://aaronice.gitbook.io/lintcode/graph_search/clone_graph)
* [N Queens](https://aaronice.gitbook.io/lintcode/graph_search/n_queens)
* [Six Degrees](https://aaronice.gitbook.io/lintcode/graph_search/six_degrees)
* [Number of Islands](https://aaronice.gitbook.io/lintcode/graph_search/number_of_islands)
* [Number of Distinct Islands](https://aaronice.gitbook.io/lintcode/graph_search/number-of-distinct-islands)
* [Word Search](https://aaronice.gitbook.io/lintcode/graph_search/word_search)
* [Course Schedule](https://aaronice.gitbook.io/lintcode/graph_search/course-schedule)
* [Course Schedule II](https://aaronice.gitbook.io/lintcode/graph_search/course-schedule-ii)
* [Word Ladder](https://aaronice.gitbook.io/lintcode/graph_search/word-ladder)
* [Redundant Connection](https://aaronice.gitbook.io/lintcode/graph_search/redundant-connection)
* [Redundant Connection II](https://aaronice.gitbook.io/lintcode/graph_search/redundant-connection-ii)
* [Longest Increasing Path in a Matrix](https://aaronice.gitbook.io/lintcode/graph_search/longest-increasing-path-in-a-matrix)
* [Reconstruct Itinerary](https://aaronice.gitbook.io/lintcode/graph_search/reconstruct-itinerary)
* [The Maze](https://aaronice.gitbook.io/lintcode/graph_search/the-maze)
* [The Maze II](https://aaronice.gitbook.io/lintcode/graph_search/the-maze-ii)
* [The Maze III](https://aaronice.gitbook.io/lintcode/graph_search/the-maze-iii)
* [Topological Sorting](https://aaronice.gitbook.io/lintcode/graph_search/topological-sorting)
* [Island Perimeter](https://aaronice.gitbook.io/lintcode/graph_search/island-perimeter)
* [Flood Fill](https://aaronice.gitbook.io/lintcode/graph_search/flood-fill)
* [Cheapest Flights Within K Stops](https://aaronice.gitbook.io/lintcode/graph_search/cheapest-flights-within-k-stops)
* [Evaluate Division](https://aaronice.gitbook.io/lintcode/graph_search/evaluate-division)
* [Alien Dictionary](https://aaronice.gitbook.io/lintcode/graph_search/alien-dictionary)
* [Cut Off Trees for Golf Event](https://aaronice.gitbook.io/lintcode/graph_search/cut-off-trees-for-golf-event)
* [Jump Game II](https://aaronice.gitbook.io/lintcode/greedy/jump-game-ii)
* [Most Stones Removed with Same Row or Column](https://aaronice.gitbook.io/lintcode/graph_search/most-stones-removed-with-same-row-or-column)
* [Backtracking](https://aaronice.gitbook.io/lintcode/backtracking)
* [Subsets](https://aaronice.gitbook.io/lintcode/backtracking/subsets)
* [Subsets II](https://aaronice.gitbook.io/lintcode/backtracking/subsets-ii)
* [Letter Combinations of a Phone Number](https://aaronice.gitbook.io/lintcode/backtracking/letter-combinations-of-a-phone-number)
* [Permutations](https://aaronice.gitbook.io/lintcode/backtracking/permutations)
* [Permutations II](https://aaronice.gitbook.io/lintcode/backtracking/permutations-ii)
* [Combinations](https://aaronice.gitbook.io/lintcode/backtracking/combinations)
* [Combination Sum](https://aaronice.gitbook.io/lintcode/backtracking/combination-sum)
* [Combination Sum II](https://aaronice.gitbook.io/lintcode/backtracking/combination-sum-ii)
* [Combination Sum III](https://aaronice.gitbook.io/lintcode/backtracking/combination-sum-iii)
* [Combination Sum IV](https://aaronice.gitbook.io/lintcode/backtracking/combination-sum-iv)
* [N-Queens](https://aaronice.gitbook.io/lintcode/backtracking/n-queens)
* [N-Queens II](https://aaronice.gitbook.io/lintcode/backtracking/n-queens-ii)
* [Generate Parentheses](https://aaronice.gitbook.io/lintcode/backtracking/generate-parentheses)
* [Subsets of Size K](https://aaronice.gitbook.io/lintcode/backtracking/subsets-of-size-k)
* [Two Pointers](https://aaronice.gitbook.io/lintcode/two_pointers)
* [Two Sum II](https://aaronice.gitbook.io/lintcode/two_pointers/two_sum_ii)
* [Triangle Count](https://aaronice.gitbook.io/lintcode/two_pointers/triangle_count)
* [Trapping Rain Water](https://aaronice.gitbook.io/lintcode/two_pointers/trapping_rain_water)
* [Container with Most Water](https://aaronice.gitbook.io/lintcode/two_pointers/container_with_most_water)
* [Minimum Size Subarray Sum](https://aaronice.gitbook.io/lintcode/two_pointers/minimum_size_subarray_sum)
* [Minimum Window Substring](https://aaronice.gitbook.io/lintcode/two_pointers/minimum_window_substring)
* [Longest Substring Without Repeating Characters](https://aaronice.gitbook.io/lintcode/two_pointers/longest_substring_without_repeating_characters)
* [Longest Substring with At Most K Distinct Characters](https://aaronice.gitbook.io/lintcode/two_pointers/longest_substring_with_at_most_k_distinct_characters)
* [Longest Substring with At Most Two Distinct Characters](https://aaronice.gitbook.io/lintcode/two_pointers/longest-substring-with-at-most-two-distinct-characters)
* [Fruit Into Baskets](https://aaronice.gitbook.io/lintcode/two_pointers/fruit-into-baskets)
* [Nuts & Bolts Problem](https://aaronice.gitbook.io/lintcode/two_pointers/nuts_and_bolts_problem)
* [Valid Palindrome](https://aaronice.gitbook.io/lintcode/two_pointers/valid_palindrome)
* [The Smallest Difference](https://aaronice.gitbook.io/lintcode/two_pointers/the_smallest_difference)
* [Reverse String](https://aaronice.gitbook.io/lintcode/two_pointers/reverse-string)
* [Remove Element](https://aaronice.gitbook.io/lintcode/two_pointers/remove-element)
* [Max Consecutive Ones](https://aaronice.gitbook.io/lintcode/two_pointers/max-consecutive-ones)
* [Max Consecutive Ones II](https://aaronice.gitbook.io/lintcode/two_pointers/max-consecutive-ones-ii)
* [Remove Duplicates from Sorted Array](https://aaronice.gitbook.io/lintcode/two_pointers/remove-duplicates-from-sorted-array)
* [Remove Duplicates from Sorted Array II](https://aaronice.gitbook.io/lintcode/two_pointers/remove-duplicates-from-sorted-array-ii)
* [Move Zeroes](https://aaronice.gitbook.io/lintcode/two_pointers/move-zeroes)
* [Longest Repeating Character Replacement](https://aaronice.gitbook.io/lintcode/two_pointers/longest-repeating-character-replacement)
* [3Sum With Multiplicity](https://aaronice.gitbook.io/lintcode/two_pointers/3sum-with-multiplicity)
* [Merge Sorted Array](https://aaronice.gitbook.io/lintcode/two_pointers/merge-sorted-array)
* [3Sum Smaller](https://aaronice.gitbook.io/lintcode/two_pointers/3sum-smaller)
* [Backspace String Compare](https://aaronice.gitbook.io/lintcode/two_pointers/backspace-string-compare)
* [Mathematics](https://aaronice.gitbook.io/lintcode/mathematics)
* [Ugly Number](https://aaronice.gitbook.io/lintcode/mathematics/ugly_number)
* [Ugly Number II](https://aaronice.gitbook.io/lintcode/mathematics/ugly_number_ii)
* [Super Ugly Number](https://aaronice.gitbook.io/lintcode/mathematics/super-ugly-number)
* [Sqrt(x)](https://aaronice.gitbook.io/lintcode/mathematics/sqrt_x)
* [Random Number 1 to 7 With Equal Probability](https://aaronice.gitbook.io/lintcode/mathematics/random-number-1-to-7-with-equal-probability)
* [Pow(x, n)](https://aaronice.gitbook.io/lintcode/mathematics/powx-n)
* [Narcissistic Number](https://aaronice.gitbook.io/lintcode/mathematics/narcissistic-number)
* [Rectangle Overlap](https://aaronice.gitbook.io/lintcode/mathematics/rectangle-overlap)
* [Happy Number](https://aaronice.gitbook.io/lintcode/mathematics/happy-number)
* [Add N Days to Given Date](https://aaronice.gitbook.io/lintcode/mathematics/add-n-days-to-given-date)
* [Reverse Integer](https://aaronice.gitbook.io/lintcode/mathematics/reverse-integer)
* [Greatest Common Divisor or Highest Common Factor](https://aaronice.gitbook.io/lintcode/mathematics/greatest-common-divisor-or-highest-common-factor)
* [Bit Operation](https://aaronice.gitbook.io/lintcode/bit-operation)
* [IP to CIDR](https://aaronice.gitbook.io/lintcode/bit-operation/ip-to-cidr)
* [Random](https://aaronice.gitbook.io/lintcode/random)
* [Random Pick with Weight](https://aaronice.gitbook.io/lintcode/random/random-pick-with-weight)
* [Random Pick Index](https://aaronice.gitbook.io/lintcode/random/random-pick-index)
* [Linked List Random Node](https://aaronice.gitbook.io/lintcode/random/linked-list-random-node)
* [Dynamic Programming](https://aaronice.gitbook.io/lintcode/dynamic_programming)
* [House Robber](https://aaronice.gitbook.io/lintcode/dynamic_programming/house_robber)
* [House Robber II](https://aaronice.gitbook.io/lintcode/dynamic_programming/house_robber_ii)
* [House Robber III](https://aaronice.gitbook.io/lintcode/dynamic_programming/house-robber-iii)
* [Longest Increasing Continuous Subsequence](https://aaronice.gitbook.io/lintcode/dynamic_programming/longest_increasing_continuous_subsequence)
* [Longest Increasing Continuous Subsequence II](https://aaronice.gitbook.io/lintcode/dynamic_programming/longest_increasing_continuous_subsequence_ii)
* [Coins in a Line](https://aaronice.gitbook.io/lintcode/dynamic_programming/coins_in_a_line)
* [Coins in a Line II](https://aaronice.gitbook.io/lintcode/dynamic_programming/coins_in_a_line_ii)
* [Coins in a Line III](https://aaronice.gitbook.io/lintcode/dynamic_programming/coins_in_a_line_iii)
* [Maximum Product Subarray](https://aaronice.gitbook.io/lintcode/dynamic_programming/maximum_product_subarray)
* [Longest Palindromic Substring](https://aaronice.gitbook.io/lintcode/dynamic_programming/longest_palindromic_substring)
* [Stone Game](https://aaronice.gitbook.io/lintcode/dynamic_programming/stone_game)
* [Burst Balloons](https://aaronice.gitbook.io/lintcode/dynamic_programming/burst-balloons)
* [Perfect Squares](https://aaronice.gitbook.io/lintcode/dynamic_programming/perfect-squares)
* [Triangle](https://aaronice.gitbook.io/lintcode/dynamic_programming/triangle)
* [Pascal's Triangle](https://aaronice.gitbook.io/lintcode/dynamic_programming/pascals-triangle)
* [Pascal's Triangle II](https://aaronice.gitbook.io/lintcode/dynamic_programming/pascals-triangle-ii)
* [Min Cost Climbing Stairs](https://aaronice.gitbook.io/lintcode/dynamic_programming/min-cost-climbing-stairs)
* [Climbing Stairs](https://aaronice.gitbook.io/lintcode/dynamic_programming/climbing-stairs)
* [Unique Paths](https://aaronice.gitbook.io/lintcode/dynamic_programming/unique-paths)
* [Unique Paths II](https://aaronice.gitbook.io/lintcode/dynamic_programming/unique-paths-ii)
* [Minimum Path Sum](https://aaronice.gitbook.io/lintcode/dynamic_programming/minimum-path-sum)
* [Word Break](https://aaronice.gitbook.io/lintcode/dynamic_programming/word-break)
* [Word Break II](https://aaronice.gitbook.io/lintcode/dynamic_programming/word-break-ii)
* [Range Sum Query - Immutable](https://aaronice.gitbook.io/lintcode/dynamic_programming/range-sum-query-immutable)
* [Decode Ways](https://aaronice.gitbook.io/lintcode/dynamic_programming/decode-ways)
* [Edit Distance](https://aaronice.gitbook.io/lintcode/dynamic_programming/edit-distance)
* [Unique Binary Search Trees](https://aaronice.gitbook.io/lintcode/dynamic_programming/unique-binary-search-trees)
* [Unique Binary Search Trees II](https://aaronice.gitbook.io/lintcode/dynamic_programming/unique-binary-search-trees-ii)
* [Maximal Rectangle](https://aaronice.gitbook.io/lintcode/dynamic_programming/maximal-rectangle)
* [Maximal Square](https://aaronice.gitbook.io/lintcode/dynamic_programming/maximal-square)
* [Regular Expression Matching ](https://aaronice.gitbook.io/lintcode/dynamic_programming/regular-expression-matching)
* [Wildcard Matching](https://aaronice.gitbook.io/lintcode/dynamic_programming/wildcard-matching)
* [Flip Game II](https://aaronice.gitbook.io/lintcode/dynamic_programming/flip-game-ii)
* [Longest Increasing Subsequence](https://aaronice.gitbook.io/lintcode/dynamic_programming/longest-increasing-subsequence)
* [Target Sum](https://aaronice.gitbook.io/lintcode/dynamic_programming/target-sum)
* [Partition Equal Subset Sum](https://aaronice.gitbook.io/lintcode/dynamic_programming/partition-equal-subset-sum)
* [Coin Change](https://aaronice.gitbook.io/lintcode/knapsack_problems/coin-change)
* [Jump Game](https://aaronice.gitbook.io/lintcode/dynamic_programming/jump-game)
* [Can I Win](https://aaronice.gitbook.io/lintcode/minimax/can-i-win)
* [Maximum Sum Rectangle in a 2D Matrix](https://aaronice.gitbook.io/lintcode/dynamic_programming/maximum-sum-rectangle-in-a-2d-matrix)
* [Cherry Pick](https://aaronice.gitbook.io/lintcode/dynamic_programming/cherry-pick)
* [Knapsack](https://aaronice.gitbook.io/lintcode/knapsack_problems)
* [Backpack](https://aaronice.gitbook.io/lintcode/knapsack_problems/backpack)
* [Backpack II](https://aaronice.gitbook.io/lintcode/knapsack_problems/backpack_ii)
* [Backpack III](https://aaronice.gitbook.io/lintcode/knapsack_problems/backpack-iii)
* [Backpack IV](https://aaronice.gitbook.io/lintcode/knapsack_problems/backpack-iv)
* [Backpack V](https://aaronice.gitbook.io/lintcode/knapsack_problems/backpack-v)
* [Backpack VI ](https://aaronice.gitbook.io/lintcode/knapsack_problems/backpack-vi)
* [Backpack VII](https://aaronice.gitbook.io/lintcode/knapsack_problems/backpack-vii)
* [Coin Change](https://aaronice.gitbook.io/lintcode/knapsack_problems/coin-change)
* [Coin Change II](https://aaronice.gitbook.io/lintcode/knapsack_problems/coin-change-ii)
* [High Frequency](https://aaronice.gitbook.io/lintcode/high_frequency)
* [2 Sum Closest](https://aaronice.gitbook.io/lintcode/high_frequency/2sum_closest)
* [3 Sum](https://aaronice.gitbook.io/lintcode/high_frequency/3sum)
* [3 Sum Closest](https://aaronice.gitbook.io/lintcode/high_frequency/3sum_closest)
* [Sort Colors II](https://aaronice.gitbook.io/lintcode/high_frequency/sort_colors_ii)
* [Majority Number](https://aaronice.gitbook.io/lintcode/high_frequency/majority_number)
* [Majority Number II](https://aaronice.gitbook.io/lintcode/high_frequency/majority_number_ii)
* [Majority Number III](https://aaronice.gitbook.io/lintcode/high_frequency/majority_number_iii)
* [Best Time to Buy and Sell Stock](https://aaronice.gitbook.io/lintcode/high_frequency/best_time_to_buy_and_sell_stock)
* [Best Time to Buy and Sell Stock II](https://aaronice.gitbook.io/lintcode/high_frequency/best_time_to_buy_and_sell_stock_ii)
* [Best Time to Buy and Sell Stock III](https://aaronice.gitbook.io/lintcode/high_frequency/best_time_to_buy_and_sell_stock_iii)
* [Best Time to Buy and Sell Stock IV](https://aaronice.gitbook.io/lintcode/high_frequency/best_time_to_buy_and_sell_stock_iv)
* [Two Sum](https://aaronice.gitbook.io/lintcode/high_frequency/two-sum)
* [Two Sum II - Input array is sorted](https://aaronice.gitbook.io/lintcode/high_frequency/two-sum-ii-input-array-is-sorted)
* [Two Sum III - Data structure design](https://aaronice.gitbook.io/lintcode/high_frequency/two-sum-iii-data-structure-design)
* [Two Sum IV - Input is a BST](https://aaronice.gitbook.io/lintcode/high_frequency/two-sum-iv-input-is-a-bst)
* [4 Sum](https://aaronice.gitbook.io/lintcode/high_frequency/4-sum)
* [4 Sum II](https://aaronice.gitbook.io/lintcode/high_frequency/4-sum-ii)
* [Sorting](https://aaronice.gitbook.io/lintcode/sorting)
* Greedy
* [Jump Game II](https://aaronice.gitbook.io/lintcode/greedy/jump-game-ii)
* [Remove K Digits](https://aaronice.gitbook.io/lintcode/greedy/remove-k-digits)
* Minimax
* [Nim Game](https://aaronice.gitbook.io/lintcode/minimax/nim-game)
* [Can I Win](https://aaronice.gitbook.io/lintcode/minimax/can-i-win)
* [Sweep Line & Interval](https://aaronice.gitbook.io/lintcode/sweep-line)
* [Meeting Rooms](https://aaronice.gitbook.io/lintcode/sweep-line/meeting-rooms)
* [Meeting Rooms II](https://aaronice.gitbook.io/lintcode/sweep-line/meeting-rooms-ii)
* [Merge Intervals](https://aaronice.gitbook.io/lintcode/sweep-line/merge-intervals)
* [Insert Interval](https://aaronice.gitbook.io/lintcode/sweep-line/insert-interval)
* [Number of Airplanes in the Sky](https://aaronice.gitbook.io/lintcode/sweep-line/number_of_airplanes_in_the_sky)
* [Exam Room](https://aaronice.gitbook.io/lintcode/sweep-line/exam-room)
* [Employee Free Time](https://aaronice.gitbook.io/lintcode/sweep-line/employee-free-time)
* [Closest Pair of Points](https://aaronice.gitbook.io/lintcode/sweep-line/closest-pair-of-points)
* [My Calendar I](https://aaronice.gitbook.io/lintcode/sweep-line/my-calendar-i)
* [My Calendar II](https://aaronice.gitbook.io/lintcode/sweep-line/my-calendar-ii)
* [My Calendar III](https://aaronice.gitbook.io/lintcode/sweep-line/my-calendar-iii)
* [Add Bold Tag in String](https://aaronice.gitbook.io/lintcode/sweep-line/add-bold-tag-in-string)
* [Other Algorithms and Data Structure](https://aaronice.gitbook.io/lintcode/other-algorithms-and-data-structure)
* [Huffman Coding](https://aaronice.gitbook.io/lintcode/other-algorithms-and-data-structure/huffman-coding)
* [Reservoir Sampling](https://aaronice.gitbook.io/lintcode/other-algorithms-and-data-structure/reservoir-sampling)
* [Bloom Filter](https://aaronice.gitbook.io/lintcode/other-algorithms-and-data-structure/bloom-filter)
* [External Sorting](https://aaronice.gitbook.io/lintcode/other-algorithms-and-data-structure/external-sorting)
* [Construct Quad Tree](https://aaronice.gitbook.io/lintcode/other-algorithms-and-data-structure/construct-quad-tree)
* [Company Tag](https://aaronice.gitbook.io/lintcode/company-tag)
* [Google](https://aaronice.gitbook.io/lintcode/company-tag/google)
* [Guess the Word](https://aaronice.gitbook.io/lintcode/company-tag/google/guess-the-word)
* [Raindrop on Sidewalk](https://aaronice.gitbook.io/lintcode/company-tag/google/raindrop-on-sidewalk)
* Airbnb
* [Display Pages (Pagination)](https://aaronice.gitbook.io/lintcode/company-tag/airbnb/display-pages)
* Amazon
* [Problem Solving Summary ](https://aaronice.gitbook.io/lintcode/problem-solving-summary)
* [String or Array Rotation](https://aaronice.gitbook.io/lintcode/problem-solving-summary/string-rotation)
* [Tips for Avoiding Bugs ](https://aaronice.gitbook.io/lintcode/problem-solving-summary/tips-for-avoiding-bugs)
* [Substring or Subarray Search](https://aaronice.gitbook.io/lintcode/problem-solving-summary/substring-or-subarray-search)
* [Sliding Window](https://aaronice.gitbook.io/lintcode/problem-solving-summary/sliding-window)
* [K Sums](https://aaronice.gitbook.io/lintcode/problem-solving-summary/k-sums)
* [Combination Sum Series](https://aaronice.gitbook.io/lintcode/problem-solving-summary/combination-sum-series)
* Knapsack Problems
* [Depth-first Search](https://aaronice.gitbook.io/lintcode/problem-solving-summary/depth-first-search)
* [Large Number Operation](https://aaronice.gitbook.io/lintcode/problem-solving-summary/large-number-operation)
* [Implementation - Simulation](https://aaronice.gitbook.io/lintcode/problem-solving-summary/implementation-simulation)
* [Monotonic Stack & Queue](https://aaronice.gitbook.io/lintcode/problem-solving-summary/monotonic-stack)
* [Top K Problems](https://aaronice.gitbook.io/lintcode/problem-solving-summary/top-k-problems)
* [Java Interview Tips](https://aaronice.gitbook.io/lintcode/problem-solving-summary/java-interview-tips)
* [OOP in Java](https://aaronice.gitbook.io/lintcode/problem-solving-summary/java-interview-tips/oop-in-java)
* [Conversion in Java](https://aaronice.gitbook.io/lintcode/problem-solving-summary/java-interview-tips/conversion-in-java)
* [Data Structures in Java](https://aaronice.gitbook.io/lintcode/problem-solving-summary/java-interview-tips/data-structures-in-java)
* [Algorithm Optimization Tips](https://aaronice.gitbook.io/lintcode/problem-solving-summary/algorithm-optimization-tips)
* [Reference](https://aaronice.gitbook.io/lintcode/reference)
