abdulhaseeb13mar / 50DaysOfCode

During the last 50 days I covered 10+ topics from different difficulty levels and achieved 100 percentile time complexity 35 times.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

xord banner

The Ultimate 50 Days Of Code

The joy of reaching the destination is momentary, the real fun is in the journey. Habit Change. Learn how to successfully acquire good habits and how to quit bad ones. Make habit to learn something new and manage time.

What we will be covering

During this 50 days We will covered 13+ topics from different difficulty levels and achieved 100 percentile time complexity 35 times.

1. Array 101
2. Array and Strings
3. Linked List
4. Recursion 1
5. Queue & Stack
6. Recursion 2
7. Binary Search
8. Binary Tree
9. N-ary Tree
10. Binary Search Tree
11. trie
12. Hash Table
13. Decision Tree

Join the discussion

I would love to get some feedback here.

  • How was your first week of learnig?
  • How do you deal with trolls?
  • Do you have some good podcasts recommendations?
  • Do you have a suggestion / or a recommendation I should follow?
  • How was your experience of the first fifty days of coding?
  • How do you balance your time?
  • How do you manage your time effectively?

Resources

  1. Hands-On Data Structures and Algorithms with Rust
  2. VisualAlgo - Visual representations of algo
  3. Geeks for Geeks
  4. Learneroo
  5. Hands-On Data Structures and Algorithms with Javasricpt
  6. Rehan Sattter series of Data Strucre blogs

Contents

Kicking Off

The only thing that is important here is your consistency and then Hard Work beats talent.

Day 1-3

Arrays are a simple data structure for storing lots of similar items. They exist in all programming languages, and are used as the basis for most other data structures. On their own, Arrays can be used to solve many interesting problems. Arrays come up very often in interview problems, and so being a guru with them is a must!

After completing this Explore Card on Arrays, you will understand:

1. What an Array is.
2. Basic properties of Arrays.
3. Implementing basic Array operations.
4. Simple programming techniques with Arrays.

Link: https://leetcode.com/explore/learn/card/fun-with-arrays/

Day 4-6

Array is one of the fundamental blocks in data structure. Since a string is just formed by an array of characters, they are both similar. Most interview questions fall into this category.

We will introduce array and string. After finishing this card, you should:

1. Understand the differences between array and dynamic array.
2. Be familiar with basic operations in the array and dynamic array.
3. Understand multidimensional arrays and be able to use a two-dimensional array.
4. Understand the concept of string and the different features string has.
5. Be able to apply the two-pointer technique to practical problems.

Link: https://leetcode.com/explore/learn/card/array-and-string/

Day 7-9

In this card, we are going to introduce another data structure - Linked List. Similar to the array, the linked list is also a linear data structure.

We will introduce more in later chapters. After this card, you will:

1. Understand the structure of singly linked list and doubly linked list.
2. Implement traversal, insertion, deletion in a singly or doubly linked list.
3. Analyze the complexity of different operations in a singly or doubly linked list.
4. Use two-pointer technique (fast-pointer-slow-pointer technique) in the linked list.
5. Solve classic problems such as reverse a linked list.
6. Analyze the complexity of the algorithms you designed.
7. Accumulate experience in designing and debugging.

Link: https://leetcode.com/explore/learn/card/linked-list/

Day 10-12

Recursion is an important concept in computer science. It is a foundation for many other algorithms and data structures. However, the concept of recursion can be tricky to grasp for many beginners.

In this Explore card, we answer the following questions:

1. What is recursion? How does it work?
2. How to solve a problem recursively?
3. How to analyze the time and space complexity of a recursive algorithm?
4. How can we apply recursion in a better way?

Link: https://leetcode.com/explore/learn/card/recursion-i/

Day 13-15

We may access a random element by index in Array. However, we might want to restrict the processing order in some cases.

In this card, we introduce two different processing orders, First-in-First-out and Last-in-First-out and its two corresponding linear data structures, Queue and Stack.

We go through the definition, implementation and built-in functions for each data structure. Then, we focus more on the practical applications of these two data structures.

By completing this card, you should be able to:

1. Understand the principle of the processing orders of FIFO and LIFO.
2. Implement these two data structures.
3. Be familiar with the built-in queue and stack structure.
4. Solve basic queue-related problems, especially BFS.
5. Solve basic stack-related problems.
6. Understand how system stack helps you when you solve problems using DFS and other recursion algorithms.

Link: https://leetcode.com/explore/learn/card/queue-stack/

Day 16-18

In this card, we will dive deeper into the theme of recursion. In particular, we will cover some paradigms that are often applied together with the recursion to solve some problems.

Here are list of topics that we will cover in this card:

1. Divide and Conquer
2. Backtracking
3. master theorem

Link: https://leetcode.com/explore/learn/card/recursion-ii/

Day 19-21

In this card, we are going to help you understand the general concept of Binary Search.

What is Binary Search? Binary Search is one of the most fundamental and useful algorithms in Computer Science. It describes the process of searching for a specific value in an ordered collection.

Terminology used in Binary Search:

1. Target - the value that you are searching for
2. Index - the current location that you are searching
3. Left, Right - the indicies from which we use to maintain our search Space
4. Mid - the index that we use to apply a condition to determine if we should search left or right

link https://leetcode.com/explore/learn/card/binary-search/

Day 22-24

A tree is a frequently-used data structure to simulate a hierarchical tree structure.

Each node of the tree will have a root value and a list of references to other nodes which are called child nodes. From graph view, a tree can also be defined as a directed acyclic graph which has N nodes and N-1 edges.

A Binary Tree is one of the most typical tree structure. As the name suggests, a binary tree is a tree data structure in which each node has at most two children, which are referred to as the left child and the right child.

By completing this card, you will be able to:

1. Understand the concept of a tree and a binary tree.
2. Be familiar with different traversal methods.
3. Use recursion to solve binary-tree-related problems.

link https://leetcode.com/explore/learn/card/data-structure-tree/

Day 25

In the previous article, we focused more on binary tree. This card extends the concept you have learned in binary tree to n-ary tree.

By completing this card, you will:

1. Understand the definition of an n-ary tree.
2. Know the different traversal of n-ary trees.
3. Have basic knowledge on how to approach n-ary tree problems.

link https://leetcode.com/explore/learn/card/n-ary-tree/

Day 26-27

A Binary Search Tree is a special form of a binary tree. The value in each node must be greater than (or equal to) any values in its left subtree but less than (or equal to) any values in its right subtree.

We'll go through this definition more specifically in this chapter and provide you some exercise related to the binary search tree.

The goal of this card is to:

1. Understand the properties of a binary tree;
2. Be able to do basic operations in a binary search tree;
3. Understand the concept of a height-balanced binary search tree.

link https://leetcode.com/explore/learn/card/introduction-to-data-structure-binary-search-tree/

Day 28-30

Trie, also called prefix tree, is a special form of a Nary tree.

In this card, we will go deep into the implementation of Trie and talk about how to use this data structure to solve problems.

After completing this card, you should be able to:

1. Understand the concept of Trie;
2. Do insertion and search operations in a Trie;
3. Understand how Trie helps in practical application;
4. Solve practical problems using Trie.

link https://leetcode.com/explore/learn/card/trie/

Day 31-33

Hash Table is a data structure which organizes data using hash functions in order to support quick insertion and search.

There are two different kinds of hash tables: hash set and hash map.

1. The hash set is one of the implementations of a set data structure to store no repeated values.
2. The hash map is one of the implementations of a map data structure to store (key, value) pairs.

It is easy to use a hash table with the help of standard template libraries. Most common languages such as Java, C++ and Python support both hash set and hash map.

By choosing a proper hash function, the hash table can achieve wonderful performance in both insertion and search.

In this card, we will answer the following questions:

1. What is the principle of a hash table?
2. How to design a hash table?
3. How to use hash set to solve duplicates related problems?
4. How to use hash map to aggregate information by key?
5. How to design a proper key when using a hash table?

link https://leetcode.com/explore/learn/card/hash-table/

Day 34-35

This card is intended to illustrate a classic algorithm for the classification problems in the domain of machine learning.

By completing this card, you will be able to:

1. Understand the intuition behind decision tree.
2. Implement the algorithm of decision tree.
3. Understand the important metrics (gini impurity, entropy) that involved in
   the process of decision tree construction.
4.Know how to evaluate the performance of decision tree model and the importance of input features.

Before you start, bear in mind that should you have any questions or comments, you can always pose them in the Discussion forum that is located at the end of the card. We'll do our best to response to you as soon as we can.

link https://leetcode.com/explore/learn/card/decision-tree/

More to come

About

During the last 50 days I covered 10+ topics from different difficulty levels and achieved 100 percentile time complexity 35 times.


Languages

Language:JavaScript 100.0%