## Course Overview

An extensive classroom program to build and enhance Data Structures and Algorithm concepts, mentored by Sandeep Jain (Founder & CEO, GeeksforGeeks). He has 7 years of teaching experience and 6 years of industry experience. The course is designed to improve your Problem-solving skill and Coding skill by enhancing your understanding of Data Structures & Algorithms. The primary goal of this course is to help you in the preparation for the Coding interviews of companies like Amazon, Microsoft, Uber, etc
Classes are scheduled in Noida.
Course is focused on practicing coding questions in the class itself

Recommended for :

• Pre-Final/Final year students preparing for the Placement drives
• Employee looking for a job change.

## Course Features

• Doubt Solving Team (TA's)
• Internship Opportunities at GeeksforGeeks
• Course completion certificate
• Complementary access to course content of the DSA Self Paced Course worth INR 5999
• Premium Lecture videos by Mr. Sandeep Jain
• Specialized topic-based content
• Weekly Assessment Tests & Practice Tracks
• Goodies for Tracks & contests toppers
• 7 Days Active doubt solving portal
• Course Content, video & practice tracks come with lifetime validity

## What You Will Learn

• All important concepts of Data Structures & Algorithms
• Enhance Problem Solving & Coding Skill for the Product- based tech hirings
• Problem-solving approach for the Puzzle based questions

## Course Content

#### Week 1

• Analysis of Algorithm

• Background analysis through a Program and its functions.

• Asymptotic Notations

• Best, Average and Worst case explanation through a program.

• Arrays

• Types of Arrays

• Fixed-sized array

• Dynamic-sized array

• Operations on Arrays

• Searching

• Insertions

• Deletion

• Arrays vs other DS

• Reversing - Explanation with complexity

• Problems

• Left Rotation of the array by 1

• Left Rotation of the array by D places

• Maximum Difference Problem

• Stock Buy and Sell Problem

• Trapping Rainwater Problem

• Maximum subarray sum

• Longest even-odd subarray

• Maximum Circular sum subarray.

• Majority Element

• Sliding Window Technique

• Prefix sum technique etc.

• Basic Recursion

#### Week 2

• Basic Bit Manipulation
• Bitwise Operators in C++

• Operation of AND, OR, XOR operators

• Operation of Left Shift, Right Shift and Bitwise Not

• Bitwise Operators in Java

• Operation of AND, OR

• Operation of Bitwise Not, Left Shift

• Operation of Right Shift and unsigned Right Shift

• Problem: Check Kth bit is set or not

• Method 1: Using the left Shift.

• Method 2: Using the right shift

• Problem: Count Set Bits

• Method 1: Simple method

• Method 2: Brian and Kerningham Algorithm

• Method 3: Using Lookup Table

• Problem: To check whether a number is a power of 2 or not

• Problem: Odd occurrences in an array.

• Problem: Two numbers having odd occurrences in an array.

• Problem: Generate power set using bitwise operators.

• Hashing
• Introduction and Time complexity analysis

• Application of Hashing

• Discussion on Direct Address Table

• Working and examples on various Hash Functions

• Introduction and Various techniques on Collision Handling

• Chaining and its implementation

• Open Addressing and its Implementation

• Double Hashing

• C++

• Unordered Set

• Unordered Map

• Java

• HashSet

• HashMap

• Problems

• Count Distinct Elements

• Count of the frequency of array elements

• The intersection of two arrays

• Union of two unsorted arrays

• Pair with given sum in an unsorted array

• Subarray with zero-sum

• Subarray with given sum

• Longest subarray with a given sum

• Longest subarray with an equal number of 0’s and 1’s

• Longest common span with the same sum in a binary array

• Longest Consecutive Subsequence

• Count Distinct elements in every window

#### Week 3

• Strings
• Discussion of String DS

• Problems

• Given a string, check if they are an anagram of each other.

• Given a string, find the leftmost character that repeats.

• Given a string, find the leftmost character that does not repeat.

• ​Given a string, find the lexicographic rank of it in O(n) time.

• Implementation of the previously discussed lexicographic rank problem.

• Given a text string and a pattern string, find if a permutation of the pattern exists in the text.

• Given two strings, check if they are rotations of each other or not.

• Various Pattern Searching Algorithms.

• Introduction

• Implementation in CPP

• Implementation in Java

• Comparison with Array DS

• Loop Problems

• Detecting Loops

• Detecting loops using Floyd cycle detection

#### Week 4

• Problem:

• Nth node from the end of linked list

• An iterative method to Reverse a linked list

• Recursive method to reverse a linked list

• Segregating even-odd nodes of linked list

• The intersection of two linked list

• Pairwise swap nodes of linked list

• Clone a linked list using a random pointer

• LRU Cache Design

• Stacks
• Understanding the Stack data structure

• Applications of Stack

• Implementation of Stack in Array and Linked List

• In C++

• In Java

• Problem:

• Balanced Parenthesis

• Two stacks in an array

• K Stacks in an array

• Stock span problem with variations

• Previous Greater Element

• Next Greater Element

• Largest Rectangular Area in a Histogram

• Queues
• Introduction and Application

• Implementation of the queue using array and LinkedList

• In C++ STL

• In Java

• Stack using queue

• Problem:

• Reversing a Queue

• Generate numbers with given digits

• Maximums of all subarrays of size k

#### Week 5

• Binary Tree
• Introduction

• Tree

• Application

• Binary Tree

• Tree Traversal

• Implementation of:

• Inorder Traversal

• Preorder Traversal

• Postorder Traversal

• Level Order Traversal (Line by Line)

• Tree Traversal in Spiral Form

• Problems:

• Size of Binary Tree

• Maximum in Binary Tree

• Height of Binary Tree

• Print Nodes at K distance

• Print Left View of Binary Tree

• Children Sum Property

• Check for Balanced Binary Tree

• Maximum Width of Binary Tree

• Convert Binary Tree to Doubly Linked List

• Construct Binary Tree from Inorder and Preorder

• The diameter of a Binary Tree

• LCA problem with an efficient solution

• Binary Search Tree
• Background, Introduction and Application

• Implementation of Search in BST

• In CPP

• In Java

• Insertion in BST

• In CPP

• In Java

• Deletion in BST

• In CPP

• In Java

• Floor in BST

• In CPP

• In Java

• Self Balancing BST

• AVL Tree

• Red Black Tree

• Set in C++ STL

• Map in C++ STL

• TreeSet in java

• TreeMap in Java

• Problems:

• The ceiling of a key in BST

• Ceiling on the left side in an array

• Find Kth Smallest in BST

• Check for BST

• Fix BST with Two Nodes Swapped

• Pair Sum with given BST

• Vertical Sum in a Binary Tree

• Vertical Traversal of Binary Tree

• Top View of Binary Tree

• Bottom View of Binary Tree

#### Week 6

• Heaps
• Introduction & Implementation

• Binary Heap

• Insertion

• Heapify and Extract

• Decrease Key, Delete and Build Heap

• Heap Sort

• Priority Queue in C++

• PriorityQueue in Java

• Problems:

• Sort K-Sorted Array

• Buy Maximum Items with Given Sum

• K Largest Elements

• Merge K Sorted Arrays

• Median of a Stream

• Graph Algorithms
• Introduction to Graph

• Graph Representation

• Adjacency List in CPP and Java

• Applications

• Depth First Search

• Applications

## Course Mentors

Sandeep Jain (Instructor)
Founder & CEO GeeksforGeeks | IIT Roorkee Alumnus

An IIT Roorkee graduate, Sandeep Jain has worked with D.E. Shaw and Co for almost 3 years. As his interest in education increased, he worked as an assistant professor in JIIT Noida from 2010-15. In 2015, he started his own company specifically as a portal for computer science and now is the founder of GeeksForGeeks. He has been mentoring on the same platform since then and specializes in Data Structure and Algorithms.

Shashi Bhushan Kumar (Instructor)

Worked with Adobe for about 2 years, Shashi Bhushan has sound knowledge of technologies like Java, Spring/Spring Boot, Hibernate, Jersey, REST APIs, Python, Django, Javascript, React Js, MySQL, DynamoDB, Redis, Kafka etc. He graduated from NIT Allahabad in 2016 and worked for Paytm as a Software Engineer for a year. He is very passionate about Competitive Programming & Problem Solving. He is currently working as a Mentor at GeeksforGeeks.

## FAQs

• Is there any number to contact for any query?
You may call us on our toll-free number: 1800 123 8622  or Drop us an email at geeks.classes@geeksforgeeks.org

• Is this a language-specific course?
Yes, the discussion forum and doubt assistance are available only for C++ & Java.

• What is the size of a batch?
The planned batch size is 50.

• How can I register for the course?

• Do we have a holiday on the occasion of Holi
On the Occasion of Holi, there would be a holiday on 7th & 8th March.

• Do We Get any Placement Assistance?
We're preparing you for your interviews. And yes, We have a hiring platform where you can see the current opening & once you have completed this course you can apply for the openings.

• Is there any online course material available with this course?

• What is the last date to make the payment?
There is no last date for the payment but the seats generally fill up 10-15 days prior to the commencement of the course

• Is there any demo class?
Please refer to this sample video for a demo class.

• What if I am not in the NCR region of India?
You may join Geeks Classes Live. In this course, students come online and we teach in an online classroom environment.

## Course Registration

#### Previous Batches

Batch Date Type Register
GC-16 16 May '20 to 12 July '20 Weekend Classes