Skip to content

Pyabecedarian/Algorithms-and-Data-Structures-using-Python

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Algorithms-and-Data-Structures-using-Python

Goal

  • Knowledge of basic Data Structure and Algorithm
  • Understand the implementation of various data structures
  • Know how to implement algorithms using data structures

Path

Array -> Linked List -> Stack -> Queue -> Recursion -> Sort -> Binary Search -> Hash -> String -> Binary Tree -> Heap -> Map -> Back Tracking -> Divid-and-Conquer -> Dynamic Programming

Schedule

  • STAGE ONE

    • Task 1 (2 Days): Array
    • Task 2 (2 Days): Linked List
    • Task 3 (2 Days): Stack
    • Task 4 (3 Days): Queue + Recursion
    • Task 5 (3 Days): Sorting
    • Task 6 (2 Days): Binary Search
  • STAGE TWO

    • Task 7 (3 Days): Hash
    • Task 8 (2 Days): String
    • Task 9 (2 Days): Binary Tree
    • Task 10 (2 Days): Heap
  • STAGE THREE

    • Task 11 (4 Days): Map
    • Task 12 (3 Days): Recursion + Back Tracking + Divide-and-Conquer

Details

Task 1: Array (2 Days)

  • Implement an Array, which supports expansion of storage capacity, dynamically
  • Combine two sorted arrays into a sorted one

Problem Sets 1:

Task 2: Linked List (2 Days)

  • Implement a LinkedList
  • To Reverse a LinkedList
  • Merge two sorted LinkedList to a sorted one
  • Find the middle value of a LinkedList

Problem Sets 2:

Task 3: Stack (2 Days)

  • Implement a Stack
  • Simulate browser's forward and backward function ,using stack

Problem Sets 3:

Task 4: Queue + Recursion (3 Days)

  • Queue
    • Implement a Queue
    • Implement a Cycle Queue
  • Recursion
    • Write an algorithm to calculate Fibonacci number: f(n)=f(n-1)+f(n-2)
    • Calculate n factorial: n!

Problem Sets 4:

Task 5: Sorting (3 Days)

  • Implement Bubble Sort
  • Implement Selection Sort
  • Implement Insersion Sort
  • Implement Merge Sort
  • Implement Quick Sort
  • (*)Implement Heap Sort

Problem Sets 5:

Task 6: Binary Search (2 Days)

  • Implement Binary Search on sorted list
  • Implement a fuzzy Binary Search algorithm (Search the first item that is larger than or equal to the given item)

Problem Sets 6:

Task 7: Hasing (3 Days)

  • Implement a Hash table using LinkedList to solve hash collision
  • Implement a LRU cache elimination algorithm

Problem Set 7:

Task 8: String (2 Days)

  • Implement a Character Repertoire containing 26 english letters using Trie tree
  • Implement a simple string matching algorithm

Problem Sets 8:

Task 9: Binary Tree (2 Days)

  • Implement a Binary Tree, supporting insert, delete and search methods
  • Find the successor/predecessor node of a node in a tree
  • Implement the preorder, indorder, postorder and layer traversal
  • Complete leecode 98, 102, 107

Problem Sets 9:

Task 10: Heap (2 Days)

  • Implement a Min Heap or Max Heap or Priority Queue
  • Write a heap sort algorithm
  • Merge k sorted list using priority queue
  • Find the top-k largest number in a collection of numbers

Problem Sets 10:

Task 11: Graph (4 Days)

  • Implement a Graph using adjacent list representation
  • Implement the following two searching algorithms on a graph
    • the Breadth First Search (BFS)
    • the Depth First Search (DFS)
  • Implement the Dijkstra Algorithm
  • Implement Topological Sorting

Problem Sets 11:

Task 12: Recursion + Backtracking + Divide & Conquer

  • Recursion
    • Climb Stairs
  • Backtracking
    • The Eight Queen Puzzle
    • 0/1 Knapsack Problem
  • Divide & Conquer
    • Calculate the number of reversed order pairs in a set of data

Problem Sets 12:

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages