https://github.com/teimurjan/educative-grokking-coding-interview
Solutions for Grokking the Coding Interview: Patterns for Coding Question in JavaScript.
https://github.com/teimurjan/educative-grokking-coding-interview
algorithms data-structures interview-preparation
Last synced: 3 months ago
JSON representation
Solutions for Grokking the Coding Interview: Patterns for Coding Question in JavaScript.
- Host: GitHub
- URL: https://github.com/teimurjan/educative-grokking-coding-interview
- Owner: teimurjan
- Created: 2021-07-07T05:51:27.000Z (over 4 years ago)
- Default Branch: main
- Last Pushed: 2021-11-05T12:43:08.000Z (almost 4 years ago)
- Last Synced: 2025-06-07T08:03:54.157Z (5 months ago)
- Topics: algorithms, data-structures, interview-preparation
- Language: JavaScript
- Homepage: https://www.educative.io/courses/grokking-the-coding-interview
- Size: 10.1 MB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

# About
This repository contains solutions for [Grokking the Coding Interview: Patterns for Coding Question](https://www.educative.io/courses/grokking-the-coding-interview) from https://educative.io.
# Get started
## Install dependencies
The problems are solved without any external dependency (required data structures and helper functions lay in [the utils folder](/src/utils/index.js)). The project uses `jest` and `prettier` only to have smooth development.
```sh
npm install
```## Run tests
```sh
npm test
```# Problems
## Cyclic Sort
* [Cyclic Sort](/src/patterns/cyclic-sort/cyclic-sort/cyclic-sort.js)
* [Find All Duplicate Numbers](/src/patterns/cyclic-sort/find-all-duplicate-numbers/find-all-duplicate-numbers.js)
* [Find All Missing Numbers](/src/patterns/cyclic-sort/find-all-missing-numbers/find-all-missing-numbers.js)
* [Find The Corrupt Pair](/src/patterns/cyclic-sort/find-the-corrupt-pair/find-the-corrupt-pair.js)
* [Find The Duplicate Number](/src/patterns/cyclic-sort/find-the-duplicate-number/find-the-duplicate-number.js)
* [Find The Missing Number](/src/patterns/cyclic-sort/find-the-missing-number/find-the-missing-number.js)
* [Find The Smallest Missing Positive Number](/src/patterns/cyclic-sort/find-the-smallest-missing-positive-number/find-the-smallest-missing-positive-number.js)## Fast And Slow Pointers
* [Happy Number](/src/patterns/fast-and-slow-pointers/happy-number/happy-number.js)
* [Linked List Cycle](/src/patterns/fast-and-slow-pointers/linked-list-cycle/linked-list-cycle.js)
* [Middle Of Linked List](/src/patterns/fast-and-slow-pointers/middle-of-linked-list/middle-of-linked-list.js)
* [Palindorme Linked List](/src/patterns/fast-and-slow-pointers/palindorme-linked-list/palindorme-linked-list.js)
* [Start Of Linked List Cycle](/src/patterns/fast-and-slow-pointers/start-of-linked-list-cycle/start-of-linked-list-cycle.js)## In Place Linked List Reversal
* [Reverse Every Kth Sub List](/src/patterns/in-place-linked-list-reversal/reverse-every-kth-sub-list/reverse-every-kth-sub-list.js)
* [Reverse Linked List](/src/patterns/in-place-linked-list-reversal/reverse-linked-list/reverse-linked-list.js)
* [Reverse Linked List Recursively](/src/patterns/in-place-linked-list-reversal/reverse-linked-list-recursively/reverse-linked-list-recursively.js)
* [Reverse Sub List](/src/patterns/in-place-linked-list-reversal/reverse-sub-list/reverse-sub-list.js)## Merge Intervals
* [Conflicting Appointments](/src/patterns/merge-intervals/conflicting-appointments/conflicting-appointments.js)
* [Insert Interval](/src/patterns/merge-intervals/insert-interval/insert-interval.js)
* [Intervals Intersection](/src/patterns/merge-intervals/intervals-intersection/intervals-intersection.js)
* [Merge Intervals](/src/patterns/merge-intervals/merge-intervals/merge-intervals.js)
* [Minimum Meeting Rooms](/src/patterns/merge-intervals/minimum-meeting-rooms/minimum-meeting-rooms.js)## Sliding Window
* [Fruits Into Basket](/src/patterns/sliding-window/fruits-into-basket/fruits-into-basket.js)
* [Longest Subarray With Ones After Replacement](/src/patterns/sliding-window/longest-subarray-with-ones-after-replacement/longest-subarray-with-ones-after-replacement.js)
* [Longest Substring After Replacement](/src/patterns/sliding-window/longest-substring-after-replacement/longest-substring-after-replacement.js)
* [Longest Substring With K Distinct Chars](/src/patterns/sliding-window/longest-substring-with-k-distinct-chars/longest-substring-with-k-distinct-chars.js)
* [Max Sum Subarray](/src/patterns/sliding-window/max-sum-subarray/max-sum-subarray.js)
* [No Repeat Substring](/src/patterns/sliding-window/no-repeat-substring/no-repeat-substring.js)
* [Permutation In A String](/src/patterns/sliding-window/permutation-in-a-string/permutation-in-a-string.js)
* [Smallest Subarray With A Given Sum](/src/patterns/sliding-window/smallest-subarray-with-a-given-sum/smallest-subarray-with-a-given-sum.js)## Tree Breadth First Search
* [Binary Tree Level Order Traversal](/src/patterns/tree-breadth-first-search/binary-tree-level-order-traversal/binary-tree-level-order-traversal.js)
* [Connect All Level Order Siblings](/src/patterns/tree-breadth-first-search/connect-all-level-order-siblings/connect-all-level-order-siblings.js)
* [Connect Level Order Siblings](/src/patterns/tree-breadth-first-search/connect-level-order-siblings/connect-level-order-siblings.js)
* [Level Averages In Binary Tree](/src/patterns/tree-breadth-first-search/level-averages-in-binary-tree/level-averages-in-binary-tree.js)
* [Level Order Successor](/src/patterns/tree-breadth-first-search/level-order-successor/level-order-successor.js)
* [Minimum Depth Of Binary Tree](/src/patterns/tree-breadth-first-search/minimum-depth-of-binary-tree/minimum-depth-of-binary-tree.js)
* [Reverse Level Order Traversal](/src/patterns/tree-breadth-first-search/reverse-level-order-traversal/reverse-level-order-traversal.js)
* [Zigzag Traversal](/src/patterns/tree-breadth-first-search/zigzag-traversal/zigzag-traversal.js)## Tree Depth First Search
* [All Paths For A Sum](/src/patterns/tree-depth-first-search/all-paths-for-a-sum/all-paths-for-a-sum.js)
* [Binary Tree Path Sum](/src/patterns/tree-depth-first-search/binary-tree-path-sum/binary-tree-path-sum.js)
* [Path With Given Sequence](/src/patterns/tree-depth-first-search/path-with-given-sequence/path-with-given-sequence.js)
* [Sum Of Path Numbers](/src/patterns/tree-depth-first-search/sum-of-path-numbers/sum-of-path-numbers.js)## Two Heaps
* [Find The Median Of Number Stream](/src/patterns/two-heaps/find-the-median-of-number-stream/find-the-median-of-number-stream.js)
* [Sliding Window Median](/src/patterns/two-heaps/sliding-window-median/sliding-window-median.js)## Two Pointers
* [Dutch National Flag Problem](/src/patterns/two-pointers/dutch-national-flag-problem/dutch-national-flag-problem.js)
* [Pair With Target Sum](/src/patterns/two-pointers/pair-with-target-sum/pair-with-target-sum.js)
* [Remove Duplicates](/src/patterns/two-pointers/remove-duplicates/remove-duplicates.js)
* [Squaring A Sorted Array](/src/patterns/two-pointers/squaring-a-sorted-array/squaring-a-sorted-array.js)
* [Subarrays With Product Less Than Target](/src/patterns/two-pointers/subarrays-with-product-less-than-target/subarrays-with-product-less-than-target.js)
* [Triplet Sum Close To Target](/src/patterns/two-pointers/triplet-sum-close-to-target/triplet-sum-close-to-target.js)
* [Triplet Sum To Zero](/src/patterns/two-pointers/triplet-sum-to-zero/triplet-sum-to-zero.js)
* [Triplets With Smaller Sum](/src/patterns/two-pointers/triplets-with-smaller-sum/triplets-with-smaller-sum.js)