-
1.1 Java Basics
- Setting up the Java Environment (IDE, JDK, JRE)
- Java Syntax and Coding Conventions
- Data Types, Variables, and Constants
- Input and Output:
- Scanner and BufferedReader
- PrintWriter for Fast I/O
- Control Flow Statements:
- If-Else, Switch-Case
- Loops (For, While, Do-While)
- Methods and Recursion:
- Static Methods
- Parameter Passing (Call by Value)
- Tail Recursion and Optimization
- Exception Handling Basics
-
1.2 Object-Oriented Programming (OOP)
- Classes and Objects
- Constructors and Destructors
- Encapsulation, Inheritance, Polymorphism, Abstraction
- Method Overloading and Overriding
- Interfaces and Abstract Classes
- Static Members and Final Keywords
- Inner and Anonymous Classes
-
1.3 Advanced Java Concepts
- Java Collections Framework:
- ArrayList, LinkedList, HashSet, HashMap
- PriorityQueue, TreeMap, TreeSet
- Generics and Type Parameters
- Functional Programming:
- Lambda Expressions
- Streams API
- File Handling:
- File I/O Basics
- Serialization and Deserialization
- Multithreading Basics
- Memory Management in Java
- Java Collections Framework:
-
2.1 Number Theory
- Prime Numbers and Sieve of Eratosthenes
- GCD and LCM (Euclidean Algorithm)
- Modular Arithmetic:
- Modular Addition, Multiplication, and Inverse
- Fast Exponentiation
- Combinatorics:
- Factorials
- Binomial Coefficients (nCr, nPr)
- Applications in Problem Solving
-
2.2 Bit Manipulation
- Binary Representation of Numbers
- Bitwise Operators:
- AND, OR, XOR, NOT, Shift Operators
- Bit Tricks:
- Checking and Setting Bits
- Counting Set Bits (Brian Kernighan’s Algorithm)
- Power of Two and Subsets
-
2.3 Matrix Operations
- Matrix Representation
- Addition, Multiplication
- Transpose and Determinants
- Applications in Graphs and DP
- 3.1 Time Complexity
- Big-O, Big-Theta, Big-Omega Notations
- Best, Worst, and Average Cases
- Complexity of Loops and Recursive Functions
- Analyzing Sorting Algorithms
- 3.2 Space Complexity
- Static vs Dynamic Memory Allocation
- Auxiliary Space in Recursion
- 3.3 Recurrence Relations
- Solving Recurrences
- Master Theorem
-
4.1 Arrays
- Static and Dynamic Arrays
- Multidimensional Arrays
- Common Operations:
- Insertion, Deletion, Search, Traverse
- Optimized Techniques:
- Sliding Window Technique
- Prefix Sum and Difference Arrays
- Kadane’s Algorithm for Maximum Subarray Sum
-
4.2 Strings
- String Representation in Java
- StringBuilder and StringBuffer
- Pattern Matching:
- Naive Approach
- Knuth-Morris-Pratt (KMP) Algorithm
- Rabin-Karp Algorithm
- Applications:
- Palindrome Checking
- Longest Palindromic Substring
- Anagram Detection
-
4.3 Linked Lists
- Singly Linked List:
- Insertion, Deletion, Reversal
- Detecting Cycles (Floyd’s Cycle Detection)
- Doubly Linked List:
- Insertion and Deletion
- Applications in LRU Cache
- Circular Linked List:
- Josephus Problem
- Singly Linked List:
-
4.4 Stacks
- Implementation Using Arrays and Linked Lists
- Applications:
- Balanced Parentheses
- Postfix and Prefix Evaluation
- Infix to Postfix Conversion
- Stock Span Problem
- Largest Rectangle in Histogram
-
4.5 Queues
- Types of Queues:
- Simple Queue, Circular Queue, Deque
- Priority Queue Using Heaps
- Applications:
- Sliding Window Maximum
- BFS Traversal in Graphs
- Implementing Stacks Using Queues
- Types of Queues:
-
4.6 Hashing
- HashMap, HashSet Implementations
- Collision Handling:
- Chaining
- Open Addressing
- Applications:
- Frequency Counters
- Detecting Anagrams
- Two Sum Problem
-
4.7 Trees
- Binary Trees:
- Traversals (Inorder, Preorder, Postorder)
- Depth-First Search (DFS) and Breadth-First Search (BFS)
- Diameter of a Tree
- Binary Search Trees (BSTs):
- Insert, Delete, Search, Traverse
- Lowest Common Ancestor
- Balanced Trees:
- AVL Trees
- Rotations in AVL Trees
- Advanced Trees:
- Segment Trees (Range Queries)
- Fenwick Tree (Binary Indexed Tree)
- Applications:
- Huffman Encoding
- Binary Trees:
-
4.8 Graphs
- Representation:
- Adjacency Matrix and Adjacency List
- Graph Traversals:
- DFS and BFS
- Topological Sort
- Shortest Path Algorithms:
- Dijkstra’s Algorithm
- Bellman-Ford Algorithm
- Floyd-Warshall Algorithm
- Minimum Spanning Tree (MST):
- Kruskal’s Algorithm
- Prim’s Algorithm
- Advanced Topics:
- Connected Components
- Tarjan’s Algorithm for Strongly Connected Components (SCC)
- Kosaraju’s Algorithm
- Bipartite Graphs
- Graph Coloring
- Representation:
-
4.9 Tries (Prefix Trees)
- Insertion and Search Operations
- Longest Prefix Matching
- Applications in Auto-complete and Dictionary Matching
-
4.10 Disjoint Set Union (DSU)
- Union-Find Algorithm
- Path Compression and Union by Rank
- Applications in Kruskal’s Algorithm
- Practice on Platforms:
- Leetcode, Codeforces, CodeChef, Atcoder
- Popular Problem Categories:
- Sliding Window Problems
- Divide and Conquer Techniques
- Greedy Algorithms
- Dynamic Programming
- Backtracking
- Computational Geometry