README
home
1 motivation
2 resources
3 roadmap
4 resource itineraries
1 CN Intro to Cpp
1. Flowcharts
0 index
1. Intro to flowcharts
2. Decision Making
3. Loops
4. Largest of N numbers
5. Assignments
Conclusion
10. Multidimensional Arrays
0 index
Assignments
2. C++, W2H
1. About C++
2. Why learn C++
3. C++ Setup
3. main, Variables and Operators
0 index
1. First Program
2. Variables and data types
0 index
2.1 Type Aliases
2.2 Automatic Type Deductions
1. auto
0 index
2. decltype
4. How is the data stored
5. How are negative numbers stored
6. Operators
4. Conditionals and while loops
0 index
1. Conditionals
2. Farenheit to Celsius
3. Patterns
4. Pratice problems
1. Patterns 1
0 index
1. Pattern1
2. Square Patterns
3. Triangle Patterns
4. Character Pattern
5. Interesting Alphabets
2. Patterns 2
1. Mirror Triangles
2. Isosceles Triangle
3. More Patterns
5. For loop and bitwise ops
1. Bitwise Operator
2. Increment Operators
3.0 For loop
3.1 For each loop
4. Break and continue
5. Scope of variables
6. cin vs cin.get()
7. Assignments
6. Functions
0 index
1. What are functions
2. How function calling works
3. Scope of variables w.r.t functions
4. Call by Value
7. Arrays
0 index
1. Why arrays
2. More On Arrays
0 index
3. Arrays and memory
4. Arrays as function parameters
5. Assignments
8. Searching and Sorting
0 index
1.Linear Search
2. Binary Search
3. Merging two sorted arrays
4. Bubble Sort
5. Insertion Sort
6. Selection Sort
Analyzing sorting algorithms
Assignments
0 index
9. Stringsx
Home
notebook
2 CN Data Structures and OOP
1. Memory and Pointers
0 index
1. Pointers
0 index
1. Pointer Intro
2. Pointer Arithmetic
3. Arrays and Pointers
0 index
Assignment questions
questionnaire1&2&3
4. Characters and Pointers
5. Function and Pointers
6. Nested pointer
0 index
questionnaire4&5&6
7. Address Typecasting
8. References and Pass by Reference
2. Dynamic Memory Allocation
1. Dynamic Allocation
2. Dynamic Memory Allocation of 2D arrays
questionnaire1
2. Time and Space Analysis
0 index
1. Time
1. Order Complexity Analysis
0 index
2. Linear Search Time Complexity
3. Insertion Sort
4. Selection Sort
5. Time complexity for recursive algorithms
0 index
6. Fibonacci is bad
2. Space
exerciseques
zAssignments
0 index
after assignments
3. Recursion
1. Recursion Basics
0 index
1. Intro to Recursion
2. Recursion and PMI
3. Fibonacci Number
4. Recursion with Arrays
5. Approach for recursive problems
questionnare2
zAssignments
0 index
after assignments
lect assignments
2. Recursion Practice
assignments
3. Applications of Recursion
0 index
1. Recursion and Strings
0 index
assignments
ms and qs
2. Merge Sort
3. Quick Sort
4. Strings
zAssignments
0 index
1. Subsequences of Strings
0 index
lectureCodes
2. Printing subsequence
0 index
after assignments
Test1
4. OOP Basics
0 index
1. Intro and syntax
0 index
1. Principles of OOP
2. Classes
3. Objects
4. Functions(in class)
1. Getters and Setters
0 index
2. Core member functions
5. this keyword
exercise ques
2. Special Functions
0 index
1. Constructor idea and syntax
0 index
1. The Copy constructor
0 index
1. Shallow and Deep copy
2. Feature Delegating constructors
2. Destructor
3. Special functions details
0 index
3. Member constraints
0 index
1. const
1. const fields Intialization List
2. const member functions
2. static
4. Operator overloading
0 index
1. Binary operator
2. Unary post
0 index
3. Unary pre
exercises
zAssignment Polynomial class
0 index
5. Separate Compilation
6. Approach for writing a class
5. Data Structures
1. Linear Data Structures
1. Vector aka Dynamic Array
2. Linked List
1. Linked List Basics
0 index
1. What are data structures and why are they important
2. What is a linked list
3. Basic Operations on LL
1. Length of LL (recursive)
2. Insert node at the ith position
3. Delete Node
4. Delete Node recursive
5. Insert Node recursive
6. Print the Linked List
8. Variations of LL
Exercises
zAssignments
0 index
1. Linear Search in LL
2. AppendLastNToFirst
3. Eliminate dupicates from the array
4. Print LL in reverse
5. Palindrome Linked List
Assignments
2. Popular LL problems
0 index
1. Midpoint of the LL
2. Merging two sorted LLs
3. Merge Sort on LL
4. Reverse LL(recursive)
5. Reverse LL using 2 pointers
6. Reverse LL recursive easiest
7. Reverse LL Iterative
zAssignments
Assignments
3. Stack
0 index
1. Introduction to Stacks
2. Stack using arrays
0 index
3. Stack using dynamic arrays
0 index
4. Templates
0 index
5. Stacks with templates
0 index
6. Stack using LL
0 index
7. Inbuilt stack STL
0 index
4. Queue
0 index
1. Queue Introduction
0 index
2. Queue using Array Code
0 index
3. Queue using Dynamic Array Code
0 index
3. zNamespaces
4. Queue using LL
0 index
5. Inbuilt queue STL
0 index
zAssignments
Assignments
zTest 2
Test2
2. Trees
1. Generic Trees
0 index
1. Introduction to trees
2. Coding a tree
1. TreeNode class
0 index
2. Destructor
3. IO for trees
1. Take input and print recursive
0 index
2. Take input levelwise
3. Output level wise
3. Tree params
1. Number of nodes
2. Height of a tree Exercise
3. Depth of a Node
0 index
4. Number of leaf nodes
0 index
4. Tree Traversals
0 index
2 .Binary trees
0 index
1. Intro to Binary trees
2. Coding a Binary Tree
2. Input
0 index
3. Printing a tree
0 index
3. Params
1. Count nodes
2. Diameter of a Binary tree
4. Traversals
0 index
5. Construction from traversal
1. Pre and In
0 index
2. Post and In
3. Level and In
4 Pre and post
zAssignments
0 index
Assignments
3. Binary Search Trees
0 index
1. Intro to BST
2. Coding BST BST Node class
0 index
3. Search Operation in BST
4. Common BST questions
1. Check if BST
1. Check BST 1
0 index
2. Check BST 2
3. Check BST 3 best
2. Construct BST from sorted array
3. BST to sorted LL
4. Find Path
0 index
Find in BST
5. Variations of BST
0 index
1. AVL trees
0 index
3. Auxilary Data Structures
0 index
1. Priority Queue and Heap
0 index
1. Intro to priority queue
2. Intro to Heap
3. The two kinds of heaps
4. Complete Binary Trees
5. Heap Insertion and Deletion
7. In place heap
8. STL priority queue
9. Practice Problems
1. K sorted array
2. K smallest elements
Find last node
Check if CBT
2. Hashmaps
0 index
1. Intro to hashMaps
2. Bucket Array and hash functions
3. Collision Handling
4. Time complexity and time factor
5. Coding a hashMap
7. Question Infinite Stream
8. STL map and set
1. map and unordered map
0 index
2. set and unordered set
3. Iterators C++ Feature
3. Tries
0 index
1. Introduction to Tries
2. Coding a Trie
1. TrieNode class
2. Trie basic API
Simple leetcode based
Dot matching
3. Types of Tries
0 index
4. Huffman Encoding
4. Graphs
1. Graphs Basics
1. Intro to graphs
2. Graph Terminology
3. Graph varieties
4. Coding a Graph
5. Basic Traversals
1. DFS
2. BFS
6. Basic path operations
1. Has Path
2. Get Path
7. Problem get connected components
2. Graphs 2
0 index
Graph coloring
Check bipartite
Cycle detection
Articulation vertex
Strongly Connected components
Topological sorting
Graphs 3
1. Intro to MST
2. Prim's Algorithm
3. Kruskal's Algorithm
Union Find structure
Graphs 4
1. Dijkstra's Algorithm
Floyd Warshall
Bellman Ford
6. Algorithm Design
0. Brute force
0 index
3. Design Techniques
1. Divide and Conquer
2. Backtracking
4. Greedy
4. NP Completeness
7. C++ Continued
0 index
1. Macros and Global Variables
0 index
questionnaire5 6 7
2. Inline and Default Arguments
3. const and constexpr
4. Exception Handling
0 index
8. OOP Continued
0 index
1. Relations between classes
0 index
1. Inheritance
1 Inheritance Concept
2 Access specifiers in inheritance
3 Syntax
4 Overriding, Overloading, Delegation
5 1 Types of Inheritance (specifier)
5 2 Types of Inheritance (level)
5 Types of Inheritance
6 Hybrid Inheritance
7 Liskov Substitution Principle 1
7 Liskov Substitution Principle
Codes
DFS.cpp
Home
notebook
3 CN Competitive programming
1. CP intro and tools
1. Intro to Competitive Programming
1. What is CP
2. Why CP
3. Various Types of Errors
4. How to approach a problem in a competitive programming contest
0 index
a. Reading problem statements
b. IO Format
c. Constraints
0 index
2. Time and Space Complexity
0 index
Problems
1. Kadane's Algorithm
2. LeftRight Sum
3. IO Techniques
0 index
1. Console streams
2. C++ File streams
0 index
1. Writing to a file
2. Reading from a file
3. Serialization
3. General tricks
4. Language Tools
0 index
1. STL Data Structures
0. Conveniences
1. pair
2. tuple
0 index
1. Physical Data Structures
1. Vector
0 index
2. List
2. ADTs
2. String
4. Stack
5. Queue
6. Map
7. Set
0 index
8. Prioirty Queue
2. Functions
0 index
1. Sorting
2. Searching
0 index
3. Math functions
4. Utility functions
3. Hussain Set
0 index
10. TreesX
0 index
1. Tries
0 index
1. Tries and XOR
2. Maximum XOR value of subarray
2. Segment Tree
1. Introduction To Segment Tree
2. Building a segment tree
3. Update on a segment tree
4. Query on a Segment Tree
5. Size of a segment tree
Assignments
0 index
zAssignments
0 index
3. Fenwick Tree
11. Number Theory
1. Modulo Arithmetic
0 index
1. Modulo operation
0 index
2. Modulo properties
3. Modulo properties continued
4. Exercise number of Binary Trees
0 index
2. Prime generator and GCD
1. Primes
1. Find prime numbers between 1 and N
2. Sieve of Eratosthenes
0 index
3. Complexity of Sieve of Eratosthenes
2. Euclid's Algo
1. GCD Euclid's Algorithm
2. Complexity of Euclid's GCD algorithm
3. Diophantine Equations
0 index
4. Extended Euclidean Algorithm
0 index
3. Multiplicative Modulo Inverse
4. Applications Of NT 1
1. Sachin and Varun
0 index
2. Advanced GCD
3. Totient Function
1. Euler's Totient Function
2. LCM Sum
4. Solving equations using NT
1. Optimized Power Function
0 index
2. Modular exponentiation
0 index
3. Matrix Exponentiation
0 index
1. Matrix Exponentiation More Recurrence Relation
2. Matrix Expo Fibonacci Sum
4. Fermat's Little Theorem
0 index
5. Wilson's Theorem
6. Income on the Nth day
12. Game Theory
1. Intro to Game Theory
2. Game of Nim
3. Proof of Nim Formula
4. Grundy Numbers
5. Sprague Grundy Theorem
6. MinMax Algorithm
13. Computational Geometry
0 index
1. Intro to Computational Geometry
2. Distance betwn point and line
3. Area of a polygon
4. Intersection of two lines
5. Convex Hull
14. FFT
15. HLD
0 index
1. Intro to HLD
2. Basics of HLD
3. Importance of HLD
4. Complexity of operations
2. Unconventional use of Searching And Sorting
0 index
1. Aggressive Cows
2. Inversion Count
0 index
3. chef
0 index
4. Variation
0 index
5. Murder
0 index
6. Momos Market
type
7. Distribute Candies
distribute candies
8. Taj Mahal Entry
0 index
3. Backtracking
0 index
Search Pruning
Problems
1. N Queens Problem Exercise
0 index
2. Rat And Maze problem
0 index
3. Sudoku Puzzle
0 index
4. Crossword Problem
0 index
More problems
1. Find Power of number
2. Sorting the Skills
3. Collecing the balls
4. Sudoku Solver
4. Bit Manipulation
0 index
1. Shift Operators
0 index
2. Remaining Bitwise Operators
0 index
3. ith bit
0 index
4. Flipping a specific bit
5. Check if oddeven
6. Check if number is power of 2
7. First Set bit
8. Clear all bits from the LSB
5. Adhoc Problems
0 index
1. Equalize CodeForces
0 index
2. Rectangular Area
0 index
3. Light up the bulbs
0 index
4. Circular List of students
0 index
5. Interesting Sequences
0 index
6. Winning Strategy
0 index
7. Greedy Method
1. Introduction to Greedy technique
0 index
2. Minimum Absolute difference in an array
Assignment 1
1. Min. Absolute Difference In Array 40
2. Nikunj and Donuts 40
3. Activity Selection 80
4. Fractional Knapsack 40
5. Weighted Job Scheduling 80
Assignment 2
1. Perimeter with conditions 40
2. Problem discussion 40
3. Winning Lottery 40
8. GraphsX
1. Connected Components
2. Permutation Swaps
3. Connected Horses
4. Strongly connected components
5. Bottom of the graph
6. Bipartite Graph
7. Fill Matrix
9. String Algorithms
1. Pattern Matching Basics
2. KMP algorithm
0 index
3. Z algorithm for pattern matching
Home
0 index
3. Resources
cpbook.net
notebook
The Algorithm Design Manual Skiena
Introduction to Algorithm Design
Robot Tour Optimization
Selecting the right jobs
Reasoning about Correctness
Induction And Recursion
Modeling the Problem
Proof by Contradiction
Dynamic Programming
Edit Distance
Longest Increasing Subsequence
Knapsack or subset sum
Ordered partition problem
Parsing Context Free Grammars
Limitations of DP TSP
Algorithm Analysis
RAM model of computation
Advanced Analysis
Big Oh notation
Growth rates and dominance relations
Working with Big Oh
Reasoning about efficiency
Summations
Logarithms and their applications
Properties of Logarithms
Divide and Conquer
Binary Search and related
Recurrence relations
Fast multiplication
Largest subrange and closest pair
Data parallelism
Convolution
Fast Polynomial Multiplication
Combinatorial search
Backtracking
Best First Search
A star heuristic
CLRS
Foundations
The Role of Algorithms in Computing
Divide and Conquer
Math assumptions
Recurrence equations
Probabilistic Analysis and Randomized Algorithms
Advanced Design and Analysis Techniques
Dynamic Programming
Greedy Algorithms
5 projects
6 setup
tooling
README
obsidian templates
README
templater
timestamp
title and date
w2h
sortspec
vault
Algorithms
Searching
Merging
Sorting
Divide n Conquer
DP
Greedy
Data Structures
String
Array
LL
Stack
Queue
Trees
Heap
Hashmap
Graphs
STL
Containers
Algorithms
13. Computational Geometry
#
Created Monday 22 June 2020
Vectors are represented.