david-kariuki / ace-the-java-coding-interview

Java project to learn advanced Data Structures and Algorithms
MIT License
48 stars 10 forks source link
dsa dsa-learning-series dsa-practice dsa-project dsalgo-questions

Ace The Java Coding Interview

Java project to learn advanced Data Structures and Algorithms


GitHub issues   GitHub Contributions   repo size   GitHub forks   GitHub stars   GitHub LastCommit  

Project Contents


1. Complexity Problems

- Introduction to Asymptotic Analysis and Big O
- Challenge 1: Big (O) of Nested Loop with Addition
- Challenge 2: Big (O) of Nested Loop with Subtraction
- Challenge 3: Big O of Nested Loop with Multiplication
- Challenge 4: Nested Loop with Multiplication (Basic)
- Challenge 5: Nested Loop with Multiplication (Intermediate)
- Challenge 6: Nested Loop with Multiplication (Advanced)
- Challenge 7: Nested Loop with Multiplication (Pro)
- Problem Sets
- Complexity Interview Questions
- Cheat Sheet



2. DATA STRUCTURES

a. ARRAYS

    . Two Dimensional Arrays.
    . Challenge 1: Remove Even Integers from an Array
    . Challenge 2: Merge Two Sorted Arrays
    . Challenge 3: Find Two Numbers that Add up to "n"
    . Challenge 4: Array of Products of All Elements Except Itself
    . Challenge 5: Find Minimum Value in Array
    . Challenge 6: First Non-Repeating Integer in an Array
    . Challenge 7: Find Second Maximum Value in an Array
    . Challenge 8: Right Rotate the Array by One Index
    . Challenge 9: Re-arrange Positive & Negative Values
    . Challenge 10: Rearrange Sorted Array in Max/Min Form
    . Challenge 11: Find the Sum of Maximum Sum Subarray
    . Implement Binary Search on a Sorted Array
    . Find Maximum in Sliding Window
    . Search a Rotated Array
    . Find the Smallest Common Number
    . Find Low/High Index of an Element in a Sorted Array
    . Move All Zeros to the Beginning of the Array
    . Stock Buy Sell to Maximize Profit
    . Merge an Array With Overlapping Intervals
    . Sort an Array Using Quicksort Algorithm
    . Cyclic Sort (easy)
    . Maximum Sum Subarray of Size K (easy)
    . Smallest Subarray With a Greater Sum (easy)
    . Squaring a Sorted Array (easy)
    . Subset (easy)
    . Subsets With Duplicates (easy)
    . Order-agnostic Binary Search (easy)
    . Bitonic Array Maximum (easy)
    .

b. LINKED LISTS

    . Introduction to Linked Lists
    . Basic Linked List Operations
    . Insertion in a Singly Linked List
    . Challenge 1: Insertion in a Singly Linked List (insert at End)
    . Solution Review: Insertion in a Singly Linked List(insert at End)
    . Challenge 2: Search in Singly Linked List
    . Solution Review: Search in a Singly Linked List
    . Challenge 3: Deletion in Singly Linked List(Delete by Value)
    . Solution Review: Deletion in Singly Linked List
    . Linked Lists vs. Arrays
    . What is a Doubly Linked List (DLL)?
    . Linked List with Tail
    . Challenge 4: Find the Length of a Linked List
    . Solution Review: Find the Length of a Linked List
    . Challenge 5: Reverse a Linked List
    . Solution Review: Reverse a Linked List
    . Challenge 6: Detect Loop in a Linked List
    . Solution Review: Detect Loop in a Linked List
    . Challenge 7: Find the Middle Node of a Linked List
    . Solution Review: Find the Middle Node of a Linked List
    . Challenge 8: Remove Duplicates from a Linked List
    . Solution Review: Remove Duplicate from a Linked List
    . Challenge 9: Union and Intersection of Lists
    . Solution Review: Union & Intersection of Lists
    . Challenge 10: Return the Nth node from End
    . Solution Review: Return the Nth node from End
    . Challenge 11: Find if Doubly Linked-list is a Palindrome
    . Solution: Find if a Doubly Linked-list is a Palindrome
    . Implementation of Linked List
    . Intersection Point of Two Lists
    . Rotate a Linked List
    . Reverse Alternative K Node in a Singly Linked List
    . Add Two Integers Represented by Linked Lists
    . Reverse a Sub-list (medium)
    . Reverse every K-element Sub-list (medium)
    . Merge K Sorted Lists (medium)
    . Kth Smallest Number in M Sorted Lists (medium)
    . Linked list Interview Questions

c. STRINGS

    . String: Common Methods & Operations
    . Reverse Words in a Sentence
    . Remove Duplicates from a String
    . Remove White Spaces from a String
    . Word Break Problem
    . XML to Tree
    . Find all Palindrome Substrings
    . Regular Expression Matching in String
    . Longest Palindromic Substring
    . Longest Palindromic Subsequence
    . Count of Palindromic Substrings
    . Minimum Deletions in a String to make it a Palindrome
    . Palindromic Partitioning
    . Longest Common Substring
    . Longest Common Subsequence
    . Minimum Deletions & Insertions to Transform a String into another
    . Fruits into Baskets (medium)
    . Longest Substring with maximum K Distinct Characters (medium)
    . String Permutations by changing case (medium)
    . Balanced Parentheses (hard)
    . Unique Generalized Abbreviations (hard)
    . Longest Substring with Distinct Characters (hard)
    . Longest Substring with Same Letters after Replacement (hard)
    . Boggle
    . Generate all Combinations of Balanced Parentheses

d. STACKS and QUEUES  

    . Introduction to Stacks & Queues
    . Stack (Implementation)
    . Queue (Implementation)
    . Implement Queue Using Stacks
    . Implement Stack Using Queues
    . Challenge 1: Generate Binary Numbers from 1 to n using a Queue
    . Solution Review: Generate Binary Numbers from 1 to n using Queue
    . Challenge 2: Implement Two Stacks using one Array
    . Solution Review: Implement Two Stacks using one Array
    . Challenge 3: Reversing the First k Elements of a Queue
    . Solution Review: Reversing the First k Elements of a Queue
    . Challenge 4: Implement Queue using Stack
    . Solution Review: Implement Queue using Stack
    . Challenge 5: Sort the Values in a Stack
    . Solution Review: Sort the Values in a Stack
    . Challenge 6: Evaluate Postfix Expressions using Stacks
    . Solution Review: Evaluate Postfix Expressions using Stacks
    . Challenge 7: Next Greater Element using Stack
    . Solution Review: Next Greater Element using Stack
    . Challenge 8: Solve a Celebrity Problem using a Stack
    . Solution Review: Solve a Celebrity Problem using a Stack
    . Challenge 9: Check for Balanced Parentheses using a Stack
    . Solution Review: Check for Balanced Parentheses using a Stack
    . Challenge 10: Create Stack where min() gives minimum in O(1)
    . Solution Review: Create Stack where min() gives minimum in O(1)
    . Stack/Queue Interview Questions

e. TREES

    . Introduction to Trees
    . Implementation of Binary Tree
    . Check if Two Binary Trees are Identical
    . Write an In-Order Iterator for a Binary Tree
    . Iterative In-order Traversal of Binary Tree
    . In-order Successor of Binary Search Tree
    . In-order Successor Binary Search Tree With Parent Pointers
    . Level Order Traversal of Binary Tree
    . Is a Binary Search Tree Valid?
    . Convert Binary Tree to Doubly Linked List
    . Print Tree Perimeter
    . Connect Same Level Siblings of a Binary Tree
    . Connect All Siblings of a Binary Tree
    . Serialize/Deserialize Binary Tree
    . Nth Highest Number in Binary Search Tree
    . Mirror Binary Tree Nodes
    . Delete Zero Sum Sub-Trees
    . Convert N-ary Tree to Binary Tree

f. TRIE

    . Introduction to Tries
    . Insertion in a Trie
    . Search in a Trie
    . Deletion in a Trie
    . The Structure of a Trie
    . Challenge 1: Total Number of Words in a Trie
    . Solution Review: Total Number of Words in a Trie
    . Challenge 2: Find All of the Words in a Trie
    . Solution Review: Find All of the Words in a Trie
    . Challenge 3: Sort the Elements of an Array using a Trie.
    . Solution Review: Sort the Elements of an Array using a Trie.
    . Challenge 4: Word Formation from a Given Dictionary using a Trie
    . Solution Review: Word Formation from Given Dictionary using Trie
    . Trie Interview Questions

g. HEAPS

    . Introduction to Heaps
    . Heap Representation in Arrays
    . Max Heap: Introduction
    . Max Heap (Implementation)
    . Min Heap: An Introduction
    . Min Heap (Implementation)
    . Challenge 1: Convert a Max-Heap to a Min-Heap
    . Solution Review: Convert a Max-Heap to a Min-Heap
    . Challenge 2: Find the k Smallest Elements in an Array
    . Solution Review: Find the k Smallest Elements in an Array
    . Challenge 3: Find the k Largest Elements in an Array
    . Solution Review: Find the k Largest Elements in an Array
    . Heap Interview Questions

h. HASH TABLES

    . Introduction to Hash Tables
    . Trie vs Hash Table
    . HashMap vs HashSet
    . Challenge 1: Find whether an array is a subset of another array
    . Solution Review: Find whether an array is a subset of another array
    . Challenge 2: Check if the given arrays are disjoint
    . Solution Review: Check if the given arrays are disjoint
    . Challenge 3: Find symmetric pairs in an Array
    . Solution Review: Find symmetric pairs in an Array
    . Challenge 4: Trace the complete path of a journey
    . Solution Review: Trace the complete path of a journey
    . Challenge 5: Find two pairs in an Array such that a+b = c+d
    . Solution Review: Find two pairs in an Array such that a+b = c+d
    . Challenge 6: Find If a Subarray with a Sum Equal to 0 Exists
    . Solution Review: Find if a subarray with a sum equal to 0 exists.
    . Challenge 7: First Non-Repeating Integer in an Array
    . Solution Review: First Non-Repeating Integer in an Array
    . Challenge 8: Remove Duplicate from a Linked List using Hashing
    . Solution Review: Remove Duplicate from Linked List using Hashing
    . Challenge 9: Union and Intersection of Lists using Hashing
    . Solution Review: Union and Intersection of Lists using Hashing
    . Challenge 10: Find Two Numbers that Add up to "n"
    . Solution Review: Find Two Numbers that Add up to "n"
    . Hashing Interview Questions

i. GRAPHS

    . Introduction to Graphs
    . Graph Implementation
    . What is a Bipartite Graph?
    . Challenge 1: Implement Breadth First Search
    . Solution Review: Implement Breadth First Search
    . Challenge 2: Implement Depth First Search
    . Solution Review: Implement Depth First Search
    . Challenge 3: Cycle Detection in a Directed Graph
    . Solution Review: Cycle Detection in a Directed Graph
    . Challenge 4: Find "Mother Vertex" in a Directed Graph
    . Solution Review: Find "Mother Vertex" in a Directed Graph
    . Challenge 5: Count the Number of Edges in an Undirected Graph
    . Solution Review: Count the number of Edges in an Undirected Graph
    . Challenge 6: Check if a Path Exists Between Two Vertices
    . Solution Review: Check if a Path Exists Between Two Vertices
    . Challenge 7: Check if a Directed Graph is Tree or not
    . Solution Review: Check if a Directed Graph is Tree or not
    . Challenge 8: Find Length of Shortest Path between Two Vertices
    . Solution Review: Find the Shortest Path between Two Vertices