gitextract_2921o4fk/ ├── .gitignore ├── DynamicStackBaseArray.java ├── LICENSE ├── README.md ├── StackBaseArray.java ├── c-cpp/ │ ├── .gitignore │ ├── .gitkeep │ ├── 05_array/ │ │ ├── .gitkeep │ │ ├── Array_gp.c │ │ ├── Array_gp.h │ │ └── array.c │ ├── 06_linkedlist/ │ │ ├── .gitkeep │ │ ├── Dlist/ │ │ │ ├── Dlist.c │ │ │ └── Dlist.h │ │ ├── LRUBasedLinkedList.cpp │ │ ├── list_isPalindrome/ │ │ │ ├── LinkList.cpp │ │ │ └── LinkList.h │ │ ├── palindromeList/ │ │ │ ├── LinkedList.hpp │ │ │ ├── ListNode.hpp │ │ │ └── palindromeList.cpp │ │ ├── single_list.c │ │ └── singlelist_gc/ │ │ ├── singleList.c │ │ └── singleList.h │ ├── 07_linkedlist/ │ │ ├── .gitkeep │ │ ├── LinkedListAlgo.c │ │ ├── SingleList.cpp │ │ ├── linked_list.h │ │ ├── linked_list_algo.hpp │ │ └── linklist_jinshaohui.c │ ├── 08_stack/ │ │ ├── StackBasedOnArray/ │ │ │ ├── StackBasedOnArray.cpp │ │ │ └── StackBasedOnArray.h │ │ ├── StackBasedOnLinkedList/ │ │ │ ├── StackBasedOnLinkedList.cpp │ │ │ └── StackBasedOnLinkedList.h │ │ ├── arrayStack/ │ │ │ ├── arrayStack.c │ │ │ └── arrayStack.h │ │ ├── linkList/ │ │ │ ├── linklist_stack.c │ │ │ └── linklist_stack.h │ │ ├── linked_list.h │ │ └── stack_based_on_linked_list.hpp │ ├── 09_queue/ │ │ ├── .gitkeep │ │ ├── array_queue/ │ │ │ ├── array_queue.c │ │ │ └── array_queue.h │ │ ├── array_queue.hpp │ │ ├── array_queue_test.cc │ │ ├── block_queue.hpp │ │ ├── circular_queue.hpp │ │ ├── circular_queue_test.cc │ │ ├── concurrency_queue.hpp │ │ ├── dynamic_array_queue.hpp │ │ ├── dynamic_array_queue_test.cc │ │ ├── linked_queue.hpp │ │ ├── linked_queue_test.cc │ │ ├── list_queue/ │ │ │ ├── list_queue.c │ │ │ └── list_queue.h │ │ ├── lock_free_queue.hpp │ │ └── ring_queue.c │ ├── 10_recursive/ │ │ ├── .gitkeep │ │ ├── one_two_step.c │ │ └── one_two_step.cc │ ├── 11_sorts/ │ │ ├── .gitkeep │ │ ├── sorts.c │ │ ├── sorts.cpp │ │ ├── sorts.hpp │ │ ├── sorts_jinshaohui.c │ │ └── sorts_test.cc │ ├── 12_sorts/ │ │ ├── .gitkeep │ │ ├── merge_sort.c │ │ ├── merge_sort.hpp │ │ ├── merge_sort_test.cc │ │ ├── my12_sorts/ │ │ │ ├── merge_sort.c │ │ │ └── quick_sort.c │ │ ├── quick_sort.c │ │ ├── quick_sort.hpp │ │ └── quick_sort_test.cc │ ├── 13_sorts/ │ │ ├── .gitkeep │ │ ├── bucket_sort.hpp │ │ ├── bucket_sort_test.cc │ │ ├── counting_sort.hpp │ │ ├── counting_sort_test.cc │ │ └── sort.c │ ├── 14_sorts/ │ │ ├── .gitkeep │ │ ├── analytics_of_std_sort.md │ │ └── counting_sort.c │ ├── 15_bsearch/ │ │ ├── .gitkeep │ │ ├── binary_search.c │ │ ├── bsearch.hpp │ │ ├── bsearch_c/ │ │ │ ├── bsearch.c │ │ │ └── sqrt.c │ │ └── bsearch_test.cc │ ├── 16_bsearch/ │ │ ├── .gitkeep │ │ ├── bsearch.c │ │ ├── bsearch_variant.c │ │ ├── bsearch_varients.hpp │ │ └── bsearch_varients_test.cc │ ├── 17_skiplist/ │ │ ├── .gitkeep │ │ ├── SkipList.cpp │ │ ├── skiplist.c │ │ ├── skiplist.hpp │ │ ├── skiplist_c/ │ │ │ ├── skiplist.c │ │ │ └── skiplist.h │ │ ├── skiplist_test.cc │ │ ├── skiplist_tr.hpp │ │ └── skiplist_tr_test.cc │ ├── 18_hashtable/ │ │ ├── .gitkeep │ │ ├── hash_map.cc │ │ ├── hashtable.c │ │ └── listhash/ │ │ ├── listhash.c │ │ └── listhash.h │ ├── 19_Dlisthash/ │ │ ├── Dlist.h │ │ ├── LinkedHashMap.c │ │ └── LinkedHashMap.h │ ├── 23_binarytree/ │ │ ├── binarytree.c │ │ └── tree/ │ │ ├── binarytree.c │ │ ├── list_queue.c │ │ └── list_queue.h │ ├── 24_binarysearchtree/ │ │ ├── binary_search_tree.cpp │ │ ├── binarysearchtree.c │ │ ├── binarysearchtree.h │ │ └── bst.c │ ├── 24_tree/ │ │ ├── Trie.c │ │ └── binarysearchtree.c │ ├── 28_heap/ │ │ └── heap.c │ ├── 30_Graph/ │ │ └── graph.c │ └── bst.c ├── csharp/ │ ├── 05-array/ │ │ ├── Array.cs │ │ └── algo05_array.csproj │ ├── 06-linkedlist/ │ │ ├── LRUWithArray.cs │ │ ├── LRUWithLinkedList.cs │ │ ├── LRU缓存实现思路.txt │ │ ├── SingleLinkedList.cs │ │ └── algo06_linked_list.csproj │ ├── 07-linkedlist/ │ │ └── _07_linkedlist/ │ │ ├── SingleLinkedListAlgo.cs │ │ └── algo07_linkedlist.csproj │ ├── 08-stack/ │ │ └── algo08_stack/ │ │ ├── ArrayStack.cs │ │ ├── LinkedStack.cs │ │ ├── LinkedStackBrowser.cs │ │ └── algo08_stack.csproj │ ├── Tests/ │ │ ├── _05_array_tests/ │ │ │ ├── Array.Tests.cs │ │ │ └── algo05_array_tests.csproj │ │ ├── _06_linkedlist_tests/ │ │ │ ├── BaseLinkedListTests.cs │ │ │ ├── LRUWithArray.Tests.cs │ │ │ ├── LRUWithLinkedList.Tests.cs │ │ │ ├── SingleLinkedList.Tests.cs │ │ │ └── algo06_linkedlist_tests.csproj │ │ ├── _07_linkedlist_tests/ │ │ │ ├── SingleLinkedListAlgo.Tests.cs │ │ │ └── algo07_linkedlist_tests.csproj │ │ └── algo08_stack_tests/ │ │ ├── ArrayStack.Tests.cs │ │ ├── LinkedStack.Tests.cs │ │ ├── LinkedStackBrowser.Tests.cs │ │ └── algo08_stack_tests.csproj │ ├── csharp.sln │ └── csharp.sln.DotSettings.user ├── f21 ├── go/ │ ├── .gitkeep │ ├── 05_array/ │ │ ├── .gitkeep │ │ ├── array.go │ │ └── array_test.go │ ├── 06_linkedlist/ │ │ ├── .gitkeep │ │ ├── palindrome-linked-list.go │ │ ├── palindrome.go │ │ ├── palindrome_test.go │ │ ├── singlelinkedlist.go │ │ └── singlelinkedlist_test.go │ ├── 07_linkedlist/ │ │ ├── .gitkeep │ │ ├── main.go │ │ └── main_test.go │ ├── 08_stack/ │ │ ├── SimpleBrowser.go │ │ ├── SimpleBrowser_test.go │ │ ├── StackBasedOnArray.go │ │ ├── StackBasedOnArray_test.go │ │ ├── StackBasedOnLinkedList.go │ │ ├── StackBasedOnLinkedList_test.go │ │ └── StatckInterface.go │ ├── 09_queue/ │ │ ├── CircularQueue.go │ │ ├── CircularQueue_test.go │ │ ├── QueueBasedOnArray.go │ │ ├── QueueBasedOnArray_test.go │ │ ├── QueueBasedOnLinkedList.go │ │ └── QueueBasedOnLinkedList_test.go │ ├── 10_recursion/ │ │ ├── Factorial.go │ │ ├── Factorial_test.go │ │ ├── Fibonacci.go │ │ ├── Fibonacci_test.go │ │ ├── RangAll.go │ │ └── RangAll_test.go │ ├── 11_sorts/ │ │ ├── Sort.go │ │ └── Sort_test.go │ ├── 12_sorts/ │ │ ├── MergeSort.go │ │ ├── MergeSort_test.go │ │ ├── QuickSort.go │ │ └── QuickSort_test.go │ ├── 13_sorts/ │ │ ├── BucketSort.go │ │ └── BucketSort_test.go │ ├── 14_sorts/ │ │ ├── CountingSort.go │ │ └── CountingSort_test.go │ ├── 15_binarysearch/ │ │ ├── binarysearch.go │ │ └── binarysearch_test.go │ ├── 17_skiplist/ │ │ ├── skiplist.go │ │ └── skiplist_test.go │ ├── 20_lru/ │ │ ├── lru_cache.go │ │ └── lru_cache_test.go │ ├── 23_binarytree/ │ │ ├── binarytree.go │ │ └── binarytree_test.go │ ├── 24_tree/ │ │ ├── BinarySearchTree.go │ │ ├── BinarySearchTree_test.go │ │ ├── BinaryTree.go │ │ ├── BinaryTree_test.go │ │ ├── StackBasedOnArray.go │ │ └── TreeNode.go │ ├── 28_heap/ │ │ ├── heap.go │ │ └── heap_sort.go │ ├── 29_priority_queue/ │ │ ├── heap.go │ │ ├── heap_test.go │ │ ├── priority_queue.go │ │ ├── priority_queue_test.go │ │ └── readme.md │ ├── 31_graph/ │ │ └── graph_search.go │ ├── 32_string/ │ │ ├── string_bf.go │ │ └── string_bm.go │ ├── 34_kmp/ │ │ └── kmp.go │ ├── 41_dynamic_programming/ │ │ ├── backtracking/ │ │ │ ├── leastcoins.go │ │ │ └── leastcoins_test.go │ │ └── dp/ │ │ ├── leastcoins.go │ │ └── leastcoins_test.go │ ├── 42_dynamic_programming/ │ │ └── longest_common_substring.go │ ├── 45_bitmap/ │ │ ├── bitmap.go │ │ └── bitmap_test.go │ └── binarysearch2.go ├── java/ │ ├── 05_array/ │ │ ├── .gitkeep │ │ ├── Array.java │ │ └── GenericArray.java │ ├── 06_linkedlist/ │ │ ├── .gitkeep │ │ ├── LRUBaseLinkedList.java │ │ ├── LRUBasedArray.java │ │ └── SinglyLinkedList.java │ ├── 07_linkedlist/ │ │ ├── .gitkeep │ │ └── LinkedListAlgo.java │ ├── 08_stack/ │ │ ├── SampleBrowser.java │ │ └── StackBasedOnLinkedList.java │ ├── 09_queue/ │ │ ├── ArrayQueue.java │ │ ├── CircularQueue.java │ │ ├── DynamicArrayQueue.java │ │ └── QueueBasedOnLinkedList.java │ ├── 11_sorts/ │ │ ├── InsertionSortAdd.java │ │ ├── Sorts.java │ │ └── SortsAddOn.java │ ├── 12_sorts/ │ │ ├── KthSmallest.java │ │ ├── MergeSort.java │ │ ├── QuickSort.java │ │ └── Sorts.java │ ├── 13_sorts/ │ │ ├── BucketSort.java │ │ ├── CountingSort.java │ │ └── RadixSort.java │ ├── 17_skiplist/ │ │ ├── SkipList.java │ │ └── SkipList2.java │ ├── 18_hashtable/ │ │ └── HashTable.java │ ├── 20_hashtable/ │ │ └── LRUBaseHashTable.java │ ├── 24_tree/ │ │ └── BinarySearchTree.java │ ├── 28_sorts/ │ │ └── HeapSort.java │ ├── 30_graph/ │ │ └── Graph.java │ ├── 32_BFRK │ └── 36_ac_automata/ │ └── ACAutoMata.java ├── javascript/ │ ├── .gitkeep │ ├── 05_array/ │ │ ├── .gitkeep │ │ └── Array.md │ ├── 06_linkedlist/ │ │ ├── .gitkeep │ │ └── SinglyLinkedList.js │ ├── 07_linkedlist/ │ │ ├── .gitkeep │ │ └── LinkedListAlgo.js │ ├── 08_stack/ │ │ ├── SampleBrowser.js │ │ └── StackBasedOnLinkedList.js │ ├── 09_queue/ │ │ ├── CircularQueueBasedOnLinkedList.js │ │ └── QueueBasedOnLinkedList.js │ ├── 11_sorts/ │ │ └── sort.js │ ├── 12_sorts/ │ │ ├── KthNum.js │ │ ├── MergeSort.js │ │ └── QuickSort.js │ ├── 13_sorts/ │ │ ├── bucketSort.js │ │ └── countingSort.js │ ├── 15_binary/ │ │ └── binaryFind.js │ ├── 16_binary/ │ │ └── binary-find.js │ ├── 17_skiplist/ │ │ └── SkipList.js │ ├── 18_hashmap/ │ │ └── HashTable.html │ ├── 19_hashTable/ │ │ └── hashtable.js │ ├── 23_tree/ │ │ └── binary_tree.js │ ├── 28_heapsort/ │ │ ├── heap-sort.js │ │ └── heap.js │ ├── 35_trie/ │ │ └── trie.js │ ├── 36_ac_automata/ │ │ ├── ac_automata.js │ │ └── ac_automata_unicode.js │ ├── 42_dynamic_programming/ │ │ └── levenshtein_distance.js │ ├── 43_topological_sorting/ │ │ └── dsf.js │ └── 45_bitmap/ │ └── bitmap.js ├── kotlin/ │ ├── 05_array/ │ │ ├── ArrayKt.kt │ │ └── DynamicArray.kt │ ├── 06_linkedlist/ │ │ └── SinglyLinkedList.kt │ ├── 07_linkedlist/ │ │ └── LinkedListAlgo.kt │ └── 08_stack/ │ └── StackBasedOnLinkedList.kt ├── notes/ │ ├── .gitkeep │ ├── 10_recursion/ │ │ └── readme.md │ ├── 11_sorts/ │ │ └── readme.md │ ├── 12_sorts/ │ │ ├── .gitkeep │ │ └── readme.md │ ├── 13_sorts/ │ │ ├── .gitkeep │ │ └── readme.md │ ├── 14_sorts/ │ │ ├── .gitkeep │ │ └── readme.md │ ├── 15_bsearch/ │ │ ├── .gitkeep │ │ └── readme.md │ ├── 16_bsearch/ │ │ ├── .gitkeep │ │ └── readme.md │ ├── 17_skiplist/ │ │ ├── .gitkeep │ │ └── readme.md │ ├── 18_hashtable/ │ │ ├── .gitkeep │ │ └── readme.md │ ├── 19_hashtable/ │ │ ├── .gitkeep │ │ └── readme.md │ └── 20_hashtable/ │ ├── .gitkeep │ └── readme.md ├── object-c/ │ ├── .gitkeep │ ├── 05_array/ │ │ ├── .gitkeep │ │ ├── MyArray.h │ │ └── MyArray.m │ ├── 06_linkedlist/ │ │ ├── .gitkeep │ │ ├── ListNode.h │ │ ├── ListNode.m │ │ ├── SinglyLinkedList.h │ │ ├── SinglyLinkedList.m │ │ └── SinglyLinkedListTests.m │ ├── 07_linkedlist/ │ │ └── .gitkeep │ ├── 08_stack/ │ │ ├── LinkedStack.h │ │ ├── LinkedStack.m │ │ ├── LinkedStackTests.m │ │ ├── ListNode.h │ │ ├── ListNode.m │ │ └── stack_practice/ │ │ ├── ArrayStack.h │ │ ├── ArrayStack.m │ │ ├── BalancedParentheses.h │ │ ├── BalancedParentheses.m │ │ ├── FourOperation.h │ │ ├── FourOperation.m │ │ └── main.m │ ├── 11_Sort/ │ │ ├── Sort.h │ │ └── Sort.m │ └── 33_bm_match/ │ ├── BM.h │ ├── BM.m │ └── main.m ├── php/ │ ├── .gitignore │ ├── 05_array/ │ │ ├── .gitkeep │ │ ├── array.php │ │ └── array_test.php │ ├── 06_linkedlist/ │ │ ├── .gitkeep │ │ ├── SingleLinkedList.php │ │ ├── SingleLinkedListNode.php │ │ └── main.php │ ├── 07_linkedlist/ │ │ ├── .gitkeep │ │ └── main.php │ ├── 08_stack/ │ │ ├── .gitkeep │ │ ├── Compute.php │ │ ├── StackOnLinkedList.php │ │ └── main.php │ ├── 09_queue/ │ │ ├── QueueOnLinkedList.php │ │ ├── Sequential.php │ │ └── main.php │ ├── 10_heap/ │ │ ├── Heap.php │ │ ├── findmiddle.php │ │ ├── main.php │ │ └── topn.php │ ├── 11_sort/ │ │ └── Sort.php │ ├── 12_sort/ │ │ ├── mergeSort.php │ │ └── quicksort.php │ ├── 13_sort/ │ │ ├── bucketSort.php │ │ ├── countingSort.php │ │ └── radixSort.php │ ├── 15_binary/ │ │ └── binary.php │ ├── 16_binary/ │ │ └── binary.php │ ├── 17_skiplist/ │ │ └── skipList.php │ ├── 24_tree/ │ │ ├── Tree.php │ │ ├── TreeNode.php │ │ ├── levelOrder.php │ │ └── main.php │ ├── 38_divide_and_conquer/ │ │ └── matrix_production.php │ ├── 39_backtracking/ │ │ └── queens.php │ ├── README.md │ ├── Stack/ │ │ └── Compute.php │ ├── buildAutoLoad.sh │ └── composer.json ├── python/ │ ├── .gitkeep │ ├── 05_array/ │ │ ├── .gitkeep │ │ └── myarray.py │ ├── 06_linkedlist/ │ │ ├── .gitkeep │ │ ├── LRUCache.py │ │ ├── palindrome.py │ │ ├── singlyLinkedList.py │ │ └── singly_linked_list.py │ ├── 07_linkedlist/ │ │ ├── .gitkeep │ │ └── linked_list_algo.py │ ├── 08_stack/ │ │ ├── linked_stack.py │ │ └── simple_browser.py │ ├── 09_queue/ │ │ ├── array_queue.py │ │ ├── circular_queue.py │ │ ├── dynamic_array_queue.py │ │ └── linked_queue.py │ ├── 11_sorts/ │ │ └── sorts.py │ ├── 12_sorts/ │ │ ├── merge_sort.py │ │ ├── quick_sort.py │ │ └── quicksort_twoway.py │ ├── 14_sorts/ │ │ └── counting_sort.py │ ├── 15_bsearch/ │ │ ├── bsearch.py │ │ └── bsearch_recursion.py │ ├── 16_bsearch/ │ │ └── bsearch_variants.py │ ├── 17_skiplist/ │ │ ├── skip_list.py │ │ └── skip_list_comments.py │ ├── 23_binarytree/ │ │ ├── binary_search_tree.py │ │ └── binary_tree.py │ ├── 24_tree/ │ │ └── binary_search_tree.py │ ├── 26_red_black_tree/ │ │ └── red_black_tree.py │ ├── 28_binary_heap/ │ │ ├── binary_heap.py │ │ ├── binary_heap_sort.py │ │ ├── heap.py │ │ ├── priority_queue.py │ │ └── top_k.py │ ├── 28_heap/ │ │ ├── heap.py │ │ └── min_heap.py │ ├── 31_bfs_dfs/ │ │ ├── bfs_dfs.py │ │ ├── graph.py │ │ └── graph_application.py │ ├── 32_bf_rk/ │ │ └── bf_rk.py │ ├── 33_bm/ │ │ ├── bm.py │ │ └── bm_.py │ ├── 34_kmp/ │ │ ├── kmp.py │ │ └── kmp_.py │ ├── 35_trie/ │ │ ├── trie.py │ │ └── trie_.py │ ├── 36_ac_automata/ │ │ ├── ac_automata.py │ │ └── ac_automata_.py │ ├── 38_divide_and_conquer/ │ │ └── merge_sort_counting.py │ ├── 39_back_track/ │ │ ├── 01_bag.py │ │ ├── eight_queens.py │ │ ├── permutations.py │ │ └── regex.py │ ├── 39_backtracking/ │ │ └── backtracking.py │ ├── 40_dynamic_programming/ │ │ ├── 01_bag.py │ │ ├── knapsack.py │ │ └── yh_triangle.py │ ├── 41_dynamic_programming/ │ │ ├── coins_problem.py │ │ └── min_dist.py │ ├── 42_dynamic_programming/ │ │ ├── longest_increasing_subsequence.py │ │ └── min_edit_dist.py │ ├── 43_topological_sorting/ │ │ └── topological_sorting.py │ ├── 44_shortest_path/ │ │ ├── dijkstra.py │ │ └── shortest_path.py │ ├── 45_bitmap/ │ │ └── bitmap.py │ └── array.py ├── rust/ │ ├── 05_array/ │ │ └── main.rs │ ├── 07_linkedlist/ │ │ ├── linked_list_cycle.rs │ │ ├── merge_two_sorted_lists.rs │ │ ├── middle_of_the_linked_list.rs │ │ ├── remove_nth_node_from_end_of_list.rs │ │ ├── reverse_linked_list.rs │ │ └── util/ │ │ └── linked_list.rs │ ├── 08_stack/ │ │ ├── simple_browser.rs │ │ ├── stack_based_on_array.rs │ │ └── stack_based_on_linked_list.rs │ ├── 09_queue/ │ │ ├── array_queue.rs │ │ ├── circle_queue.rs │ │ └── linked_list_queue.rs │ ├── 11_sorts/ │ │ ├── bubble_sort.rs │ │ ├── insertion_sort.rs │ │ └── selection_sort.rs │ ├── 12_sorts/ │ │ ├── kth_largest.rs │ │ ├── merge_sort.rs │ │ └── quick_sort.rs │ ├── 13_sorts/ │ │ ├── bucket_sort.rs │ │ ├── counting_sort.rs │ │ ├── radix_sort.rs │ │ └── sort_string.rs │ ├── 15_binary_search/ │ │ ├── binary_search.rs │ │ └── sqrtx.rs │ ├── 16_binary_search/ │ │ ├── binary_search.rs │ │ └── search_in_rotated_sorted_array.rs │ ├── 19_hash_table/ │ │ └── hash_table.rs │ ├── 23_binary_tree/ │ │ ├── inorder_traversal.rs │ │ ├── level_order_traversal.rs │ │ ├── postorder_traversal.rs │ │ ├── preorder_traversal.rs │ │ └── util/ │ │ └── tree.rs │ ├── 24_binary_tree/ │ │ ├── insert_in_binary_tree.rs │ │ ├── max_depth_in_binary_tree.rs │ │ ├── search_in_binary_tree.rs │ │ └── util/ │ │ └── tree.rs │ ├── 28_heap/ │ │ ├── build_heap.rs │ │ ├── heap.rs │ │ └── sort_heap.rs │ ├── 29_heap/ │ │ ├── get_median.rs │ │ ├── get_top_k.rs │ │ └── merge_sorted_array.rs │ ├── 31_graph/ │ │ └── graph_search.rs │ ├── 32_string/ │ │ └── bf_rk.rs │ ├── 33_string/ │ │ └── bm.rs │ ├── 34_string/ │ │ └── kmp.rs │ ├── 35_trie/ │ │ └── trie.rs │ ├── 38_divide_and_conquer/ │ │ └── merge_sort_count.rs │ ├── 39_back_tracking/ │ │ ├── bag.rs │ │ ├── bag_exec.rs │ │ ├── n_queens.rs │ │ └── regex.rs │ ├── 40_dynamic_programming/ │ │ ├── bag.rs │ │ ├── knapsack.rs │ │ └── triangle.rs │ ├── 41_dynamic_programming/ │ │ ├── coin_change.rs │ │ └── min_dis_path.rs │ └── 42_dynamic_programming/ │ ├── edit_distance.rs │ └── longest_increasing_subsequence.rs ├── scala/ │ ├── .gitignore │ ├── build.sbt │ ├── project/ │ │ └── build.properties │ └── src/ │ ├── main/ │ │ └── scala/ │ │ ├── ch05_array/ │ │ │ └── ArrayDemo.scala │ │ ├── ch06_linkedlist/ │ │ │ └── SinglyLinkedList.scala │ │ ├── ch07_linkedlist/ │ │ │ └── LinkedListAlgo.scala │ │ ├── ch08_stack/ │ │ │ ├── BrowserDemo.scala │ │ │ └── StackDemo.scala │ │ ├── ch09_queue/ │ │ │ ├── ArrayQueue.scala │ │ │ ├── CircularQueue.scala │ │ │ ├── DemoQueue.scala │ │ │ ├── DynamicArrayQueue.scala │ │ │ └── LinkedListQueue.scala │ │ ├── ch10_recursive/ │ │ │ └── RecursiveDemo.scala │ │ ├── ch11_sorts/ │ │ │ └── Sorts.scala │ │ ├── ch12_sorts/ │ │ │ ├── MergeSort.scala │ │ │ └── QuickSort.scala │ │ ├── ch15_bsearch/ │ │ │ ├── BSearch.scala │ │ │ └── BSearchRecursive.scala │ │ ├── ch16_bsearch/ │ │ │ └── BSearch.scala │ │ ├── ch17_skip_list/ │ │ │ └── SkipList.scala │ │ ├── ch20_linked_hash_map/ │ │ │ └── LRUCache.scala │ │ ├── ch23_binary_tree/ │ │ │ └── BinaryTree.scala │ │ ├── ch24_binary_search_tree/ │ │ │ └── BinarySearchTree.scala │ │ ├── ch28_heap/ │ │ │ └── Heap.scala │ │ ├── ch29_heap_solutions/ │ │ │ ├── FileMerger.scala │ │ │ ├── MiddleNumberKeeper.scala │ │ │ └── TopKItemsKeeper.scala │ │ ├── ch31_graph/ │ │ │ └── Graph.scala │ │ ├── ch32_matching/ │ │ │ ├── BruteForce.scala │ │ │ └── RabinKarp.scala │ │ ├── ch35_tire_tree/ │ │ │ └── TrieTree.scala │ │ ├── ch39_back_tracking/ │ │ │ ├── BagWeight.scala │ │ │ ├── EightQueens.scala │ │ │ ├── NQueens.scala │ │ │ └── Sudoku.scala │ │ └── ch43_topology_sort/ │ │ └── GraphTopology.scala │ └── test/ │ └── scala/ │ ├── ch05_array/ │ │ └── ArrayDemoSpec.scala │ ├── ch06_linkedlist/ │ │ ├── NodeTest.scala │ │ └── SinglyLinkedListTest.scala │ ├── ch07_linkedlist/ │ │ └── LinkedListAlgoTest.scala │ ├── ch08_stack/ │ │ ├── BrowserDemoTest.scala │ │ └── StackDemoTest.scala │ ├── ch09_queue/ │ │ ├── ArrayQueueTest.scala │ │ ├── CircularQueueTest.scala │ │ ├── DemoQueueTest.scala │ │ ├── DynamicArrayQueueTest.scala │ │ └── LinkedListQueueTest.scala │ ├── ch10_recursive/ │ │ └── RecursiveDemoTest.scala │ ├── ch11_sorts/ │ │ └── SortsTest.scala │ ├── ch12_sorts/ │ │ ├── MergeSortTest.scala │ │ └── QuickSortTest.scala │ ├── ch15_bsearch/ │ │ ├── BSearchRecursiveTest.scala │ │ └── BSearchTest.scala │ ├── ch16_bsearch/ │ │ └── BSearchTest.scala │ ├── ch17_skip_list/ │ │ └── SkipListTest.scala │ ├── ch20_linked_hash_map/ │ │ └── LRUCacheTest.scala │ ├── ch23_binary_tree/ │ │ └── BinaryTreeTest.scala │ ├── ch24_binary_search_tree/ │ │ └── BinarySearchTreeTest.scala │ ├── ch28_heap/ │ │ └── HeapTest.scala │ ├── ch29_heap_solutions/ │ │ ├── FileMergerTest.scala │ │ ├── MiddleNumberKeeperTest.scala │ │ └── TopKItemsKeeperTest.scala │ ├── ch31_graph/ │ │ └── GraphTest.scala │ ├── ch32_matching/ │ │ ├── BruteForceTest.scala │ │ └── RabinKarpTest.scala │ ├── ch35_tire_tree/ │ │ └── TrieTreeTest.scala │ ├── ch39_back_tracking/ │ │ ├── BagWeightTest.scala │ │ ├── EightQueensTest.scala │ │ ├── NQueensTest.scala │ │ └── SudokuTest.scala │ └── ch43_topology_sort/ │ └── GraphTopologyTest.scala ├── swift/ │ ├── 05_array/ │ │ └── MyArray.swift │ ├── 06_linkedlist/ │ │ └── SinglyLinkedList.swift │ ├── 07_linkedlist/ │ │ └── LinkedListAlgo.swift │ ├── 08_stack/ │ │ ├── Browser.swift │ │ ├── BrowserDemo.swift │ │ ├── Stack.swift │ │ └── StackBasedOnLinkedList.swift │ ├── 09_queue/ │ │ ├── ArrayQueue.swift │ │ ├── CircularQueue.swift │ │ ├── Queue.swift │ │ └── QueueBasedOnLinkedList.swift │ ├── 11_sorts/ │ │ └── Sorts.swift │ ├── 12_sorts/ │ │ ├── QuickSort.swift │ │ ├── SortsTests.swift │ │ └── mergeSort.swift │ └── 14_sorts/ │ └── CountingSort.swift └── typescript/ ├── 06_linkedlist/ │ ├── LRUCache.ts │ ├── LinkedList.ts │ ├── List.ts │ └── SingleLinkedList.ts ├── 07_linkedlist/ │ └── LinkedListAlog.ts ├── 08_stack/ │ └── StackAndBrowser.ts ├── 09_queue/ │ ├── CircularQueue.ts │ ├── README.md │ └── SimpleQueue.ts ├── 10_recursive/ │ └── climbStairs.ts ├── 11_sorts/ │ └── simpleSort.ts ├── 12_sorts/ │ ├── KthNum.ts │ ├── MergeSort.ts │ └── quickSort.ts ├── 13_sorts/ │ ├── BucketSort.ts │ └── CountingSort.ts ├── 14_binarysearch/ │ └── BinarySearch.ts ├── 15_binarysearch/ │ └── BinaryFind.ts ├── 17_skiplist/ │ └── SkipList.ts └── 24_treesearch/ └── TreeSearch.ts