learn algorithms in public

Recently I listened to the audiobook of Atomic Habits by James Clear, where the author stresses improving ourselves every day. He states one simple calculation on this topic which makes a lot of sense on a bigger picture,

Atomic Habits

The key takeaways that I learned from the book are, “Ultimately, it is your commitment to the process that will determine your progress.”

“Habits are the compound interest of self-improvement.”

“Getting 1 percent better every day counts for a lot in the long-run.”

But this blog is not just only about improving 1% every day, I mainly write this as my learn in the public method which I consider as an open-source learning method. Having an accountability partner helps us make sure we keep progressing but publishing to the world makes us feel responsible at the same time. So as a process of this method, I will keep updating this blog every day, so that anytime if I look back myself, I can see how my journey was.

I will be learning algorithms for the next month to improve my solving skills and to master the golang knowledge since I am actively looking for a job. So I have come up with a list of algorithm topics that I need to be aware of before stepping into my next interview.

The goal is to accomplish as many topics as much every day and mark the checkmark with the link that I prepare for the future reference which will also be going to be public here.

I am always open to receive the feedback, If you think my list or study techniques can be improved my DMs are open on Twitter or mail me directly at me@sibis.dev

Here are the lists that need to be prepared,

Data Structures

Search Algorithms

  • Linear search
  • Binary search
  • A search

Sorting Algorithms

  • Bubble Sort
  • Insertion Sort
  • Selection
  • Heapsort
  • Quicksort
  • Mergesort

Trees

  • Basic tree construction
  • Binary search tree
  • BST implementations (tree properties)
  • BFS (in-order, pre-order and post-order)
  • DFS
  • Traversal
  • Manipulation algorithms

Graphs

  • Directed
  • Undirected
  • Adjacency martix
  • Adjacency list
  • Adjacency maps

Heap

  • Implementations
  • Kth largest in array
  • Kth smallest in matrix
  • Median 
  • Ugly Number
  • Super Ugly Number

Strings

  • Reverse
  • First unique char
  • Anagram
  • Palindrome
  • Last word - [x] Common prefix 
  • Substring without repeating chars

Numbers

  • Palindrome
  • [ ]  Power
  • [ ]  Sqrt
  • [ ]  Reverse
  • Happy number
  • Guess number
  • Next permutation
  • Single

Binary Trees

  • Max depth, Min depth, Invert, Same
  • [ ]  LCA
  • Level order
  • Inorder
  • Preorder
  • Postorder
  • Balanced
  • Symmetric
  • Validate
  • Paths
  • [ ]  Path sum
  • Max path sum
  • Right side view 
  • Flatten to linked list
  • Kth smallest
  • Next Right

Dynamic Programming

  • Climb Stairs
  • House Robber
  • Combination Sum
  • Palindromic Substring
  • Max product subarray
  • Frog Jump
  • Coin Change
  • Unique Paths
  • LIS (Longest Increasing Subsequence)
  • Minimum path sum

[ ] Bit manipulation



Context in GolangHow to use JSON with Golang(Go)