Skip to content

Pulkit-Khandelwal/AlgorithmsDataStructures

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AlgorithmsDataStructures

Algorithms and data structures implemented in Python

Author: Pulkit Khandelwal Credits: https://github.com/donnemartin/interactive-coding-challenges https://github.com/jwasham/coding-interview-university

Goal: To understand data structures and algorithms. Theoretically (with proofs where possible); making sure I have space an dtime complexity in place. Then, implementing each of them in Python. I have made sure that my OOPs is in place before that.

General tips to keep in mind:

  • Always ask for clarification questions in prticular see for edge cases, test conditions, check for null conditions.
  • While coming up for solutions, speak your mind. List out all possible solution methods with their time and space complexity. Then, go ahead and write the best solution. Keep in mind to test for edge and null cases. Go step by step while writing your solution.
  • Always modularize your code. Ask if you can assume that boilerplate code has been provided or not. You can then go ahead and fill up the functions in your code.
  • The last step is to actually code the solution in Python by making sure you consider all test cases.

Main Subjects

  • Algorithms and Data Structures
  • Pythonic Code
  • Design Patterns
  • Operating Systems (Hardware Software Course)
  • System Design
  • Linux SysAdmin

Resources that I am using as of now:

  • Read the docs for Python OOPs: Understand Object oriented Programming.

  • Python tricks book: As an evening read to write better Pythonic code.

  • 6.006 MIT and 6.046 MIT: I have gone through these courses' videos. They have given a very nice explnantion of concepts.

  • CLRS: To understand the concepts clearly with proofs. I also get to see the pseudo code here. That way I can then go forward.

  • Data Structures Visualization: https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

  • HackerRank Gayle's videos: This set of videos gave me an idea of how to approach the problems as discussed above in the tips section and the level of questions one can expect in an interview.

  • Interactive Coding Challenges in Python: To make sure each data structure and algorithm is implemented from scratch. https://github.com/MisterBooo/LeetCodeAnimation

  • Interview University Repo: To supplement the above point.

  • HackerRank coding practice: To supplement the above point.

  • Advanced:
  • LeetCode

  • Google CodeJam

  • Project Euler

  • SPOJ

  • CTCI: For challenges after the above three steps are finished. To make things concrete. This should be the last step.

  • Great Blogs:

  • Short blogs for advice:
  • YouTube Channels:
  • Coding Tech
  • Success in Tech
  • CD Dojo
  • HackerRank
  • GeeksForGeeks
  • Gaurav Sen (GKCS)
  • Tushar Roy
  • Iqbal
  • Lucid Programming
  • Andrew Fiset
  • Data Science Foundations
  • MyCodeSchool

Implementations and concepts completed:

  • Understood the concept theoretically with proofs if possible.

  • Implemented in Python.

  • Pinned down space and time complexity.

  • Singly Linked Lists (implemented by keeping track of head):

    • calculate the size
    • create
    • insert
    • delete
    • add in front
    • reverse
    • remove duplicates
  • Doubly Linked Lists

  • Circular Linked Lists

  • Stacks

    • implement using Singly LinkedList (keep trackof top)
    • push
    • pop
    • check if empty
  • Queues

    • implement using Singly LinkedList (keep track of head and tail)
    • enqueue
    • dequeue
  • Hashmaps

  • Heaps

  • Priority Queue

  • Sorting

    • Bubble
    • Insertion
    • Selection
    • Quick (Efficient in-place recursive algorithm)
    • Merge
    • Radix
    • HeapSort
    • Bucket
    • Counting
  • Searching

    • Binary
  • Graphs

    • Implement a Graph with nodes, edges (both directed and undirected) and weights
  • Trees

    • Implement a Binary Seacrh Tree using keys and data
    • Depth and Breath Level Traversals:
  • Recursion and Dynamic Programming

  • Tries

  • Advanced Concepts Read and Videos Watched

    • Range Trees
    • Segment Trees
    • Splay Trees
    • 2-3 Trees
    • Balanced Binary Search Trees
    • AVL trees
    • k-d Trees
    • B Trees
    • Topological Sort
    • Tree Rotations
    • Tries
    • Suffix Arrays
    • Skip Lists
    • A star search
    • Binomial Heaps
    • Fibonacci Heaps
    • Red Black Trees
    • Priority Queues
    • Doubly Linked List
    • Circular Linked List

About

Algorithms and data structures implemented in Python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published