Index
(Started from 8th October 2020)
1. Understanding computer programs (First week - 8/10/2020 - 14/10/2020)
- What is computer program and algorithm
- What is flowchart
- What is pseudocode
- Examples
- Setting up c++ environment
- Hello world program
- Brain teasers
2. Programming Fundamentals l (First week)
- Data Types and ranges
- Type modifiers
- Input output in C++
- If else
- Loops - while, do while, for
3. Programming Fundamentals ll (First week)
- Break and continue
- Switch
- Operators - arithmetic, relational, logical, bitwise, assignment
4. Pattern Questions (Second week 15/10/2020 - 21/10/2020)
- Introductory examples
- Difficult examples
5. Basics of Number System (Second week)
- Binary number system
- Reverse a number
- Armstrong number
- Prime numbers
6. Functions (second week) (Second week)
- Introduction to functions
- Examples
7. Space and time complexity (Third week 22/10/2020 - 28/10/2020)
- Definition and basics
- Polynomial evaluation
8. Arrays (Third week)
- Introduction to arrays
- Linear search and Binary search
- Sorting algorithms
- STL sort
- Max subarray sum
- Pair sum problem
9. 2D arrays (Third week)
- Introduction and searching
- Example questions
10. Character arrays (Fourth week 29/10/2020 - 4/11/2020)
- Introduction and input
- Palindromic arrays
- Largest word in a string
11. Strings (Fourth week)
- Intro + STL functions on strings
- Sorting a string
12. Questions (Fourth week)
- Target sum triplets
(https://www.geeksforgeeks.org/find-a-triplet-that-sum-to-a-given-value/)
- Max circular sum
(https://www.geeksforgeeks.org/maximum-contiguous-circular-sum/)
- String questions
13. Pointers (Fourth week)
- & operator
- Introduction to pointers
- Dereference operator
- Pass by reference and Pass by value
14. Dynamic Memory Allocation (Fourth week)
- Compile time and run time
- Heap and Stack
- New, delete
15. Bit Manipulation (Fifth week 5/11/2020 - 11/11/2020)
- Get, set, clear, update
- Is Power of 2
- Number of ones
- Generate subsets
16. Questions (Fifth week)
- Unique number in an array of duplicates
- 2 unique numbers in an array of duplicates
- Unique number in an array of triplets
17. Prime Sieve (Fifth week)
- Prime sieve
18. Number Theory basics (Fifth week)
- Euclid’s algo for GCD
- Inclusion exclusion principle
19. Introduction to Recursion (Fifth week)
- Call stack
- Fibonacci numbers
- Factorial
- Fast power
- First occurrence and last occurrence
- Increasing, Decreasing order
- Time complexity for recursive functions (Master’s theorem)
20. Recursion - ll (Fifth week)
- Tower of hanoi
- Reverse string
- Replace pi
- Remove duplicates
- Move all x
- Subsequence generation
- Generate permutations
21. Recursion - lll (Fifth week)
- Permutation
- Board game
- 0-1 Knapsack
- Tiling problem
- Friends pairing problem
- Count paths in Maze
22. Backtracking (Sixth week 12/11/2020 - 18/11/2020)
- Rat in maze problem
- N-queen problem
23. Divide and Conquer (Sixth week)
- Merge sort
- Quick sort
24. More sorting techniques (Sixth week)
- Counting sort
- DNF algorithm
- Wave sort
25. OOPS concepts (Sixth week)
- Classes and objects
- Data members and functions
- Getters, setters
- Constructor & its types
- Shallow and deep copy
- Copy assignment
- Destructor
- Overloading
26. STL (Sixth week)
- Pair class
- Other STL functions, Iterators, comparators 3
- Templates
27. Vectors (Sixth week)
- Intro
- Methods
- Sorting
- Template
28. Linked List (Sixth week)
- Introduction and implementation
- Insertion in linked list
- Searching in linked list
- Deletion in linked list
- Reverse a linked list - Iterative and recursive solution
- K reverse problem
- Floyd's cycle detection and removal
- Doubly linked list
- Circular linked list
29. Challenges (Seventh week 19/11/2020 - 25/11/2020)
- K append
- Even after odd
- Intersection point
- Merge 2 sorted linked lists
30. Stacks (Seventh week)
- Introduction
- Implement using array
- Implement using linked list
- Reverse a stack
- Balanced parenthesis
31. Infix, prefix, postfix (Seventh week)
- Infix, prefix, postfix expression evaluation
- Infix to prefix using stack
- Infix to postfix using stack
32. Queues (Seventh week)
- Introduction
- Implement using array
- Implement using linked list
- Implement stack using queue
- Implement queue using stacks
33. Deque (Seventh week)
- Introduction
- Maximum element
- Max length unique character substring
34. Questions (Eighth week 26/11/2020 - 02/12/2020)
- Histogram area
- Circular tour
- Balanced parentheses
35. Binary Trees (Eighth week)
- Introduction
- Preorder, inorder, postorder
- Level order
- Sum at level K
- Height and Diameter of Binary Tree
- BFS traversal
- DFS traversal
- Count and sum nodes
- Height balanced tree
- Build balanced tree from array
- Different views of binary tree
- Nodes at distance K
- Lowest common ancestor
36. Questions (Eighth week)
- Build from inorder and preorder
- Sum at level K
- Sum replacement problem
- Maximum sum path
- Shortest distance between nodes
37. Binary Search Tree (Ninth week 03/12/2020 - 09/12/2020)
- Introduction
- Implementation and insertion
- Searching
- Deletion
- Check for BST
- Find min and max element
- Flatten a tree
- Construct from preorder
- Catalan no concept
- Set STL
38. Questions (Ninth week)
- Structurally identical BST
- ZigZag order
- Largest BST in BT
39. Heaps (ninth week)
- Introduction to priority queue
- Heaps, insertion
- Remove min and max element
- Build heap from array
- Heapsort
- Priority queue STL, Running median
40. Challenges (ninth week)
- Top k most frequent numbers in stream
- Merge k sorted arrays
- Length of Smallest Subsequence such that sum of elements is greater than equal
to K
41. Hashtable (Tenth week 10/12/2020 - 16/12/2020)
- Introduction to hash functions
- Collision handling and separate chaining
- Rehashing, load factor
- Unordered Map STL
- Max frequency character
- Vertical order print
42. Hashing Problems (Tenth week)
- Number of subarrays with sum 0
- Longest subarray with sum k
- Longest consecutive subsequence
(https://www.geeksforgeeks.org/longest-consecutive-subsequence/)
- Minimum window substring
43. Greedy Algorithm (Tenth week)
- Introduction
- Activity selection problem
- Job selection problem
- 0/n knapsack problem
- Optimal merge pattern problem
- Huffman coding problem
44. Challenges (Tenth week)
- Coin change
- Max Circles
- Dividing array
45. Dynamic Programming (Eleventh week 17/12/2020 - 23/12/2020)
- Introduction
- Fibonacci problem
- Minimum steps to 1
- Minimum coin change
- Maximum subarray sum
- Snakes and Ladders
- 0/1 knapsack
- LIS and LCS problem
- Matrix chain multiplication
- Friends pairing problem
- Catalan number concept
- Optimal game strategy
- Optimal binary search tree
- All pair shortest path problem
46. Challenges (Eleventh week)
- No. of Binary String
- LCS w 3 strings
- Wildcard pattern matching
- Brackets all over
- Max length bitonic subsequence
- Max sum submatrix
(https://www.geeksforgeeks.org/maximum-sum-rectangle-in-a-2d-matrix-dp-27/)
47. Graphs - l (Twelfth week 24/12/2020 - 30/12/2020)
- Introduction
- Representation
- Adjacency list implementation
- BFS
- DFS
- Topological sort
- Cycle detection in directed and undirected graph
- Connected components
- Pairing problem
- Bipartite graph check
48. Graphs - ll (Twelfth week)
- Disjoint set introduction
- Union and find
- Path compression
- Union by rank optimisation
- Implementation
49. Graphs - lll (Twelfth week)
- Kruskal’s algorithm
- Prim’s algorithm
- Dijkstra’s algorithm
- Bellman ford algorithm
- Floyd Warshall algorithm
- Strongly connected component using Kosaraju’s algo
50. Challenges (Twelfth week)
- Snakes and ladders problem
- MST problem
- Beautiful vertices
51. Questions (Thirteenth week 31/12/2020 - 6/01/2021)
- Sum of all submatrices in a matrix
- Searching in sorted matrix
- Rain water harvesting (https://www.geeksforgeeks.org/trapping-rain-water/)
52. Number theory Advanced (Thirteenth week)
- Extended Euclid
- Multiplicative modulo inverse
- Euler totient function
- Segmented sieve
- Binary/Modular exponentiation - both recursive and iterative
- Matrix Exponentiation - It’s cases
- Fermat little theorem, wilson theorem
53. Tries (Thirteenth week)
- Data structure introduction
- Insertion
- Searching
- Phonebook problem
- Xor subarray problem
54. Questions (Thirteenth week)
- Intersection of 2 arrays
- String window
- Subarrays with distinct element
- Digital dictionary
55. String algorithms (Thirteenth week)
- Brute force
- KMP
- Finite automata
- Robin karp
56. Segment tree (Fourteenth week 7/01/2021 - 13/01/2021)
- Intro, build, updation, query
- Min, max, sum in the subarray
- Lazy propagation
57. Binary indexed tree (Fourteenth week)
- Structure of BIT
- Update or build, query.
- Problems
58. Mo’s (sqrt decomposition) (Fifthteenth week 14/01/2021 - 20/01/2021)
- Offline processing of queries with examples
- Introduction, code and examples
59. HLD (Fifthteenth week)
60. Fourier series (Fifthteenth week)