From 15e262f3f94e4dabfc09162c21b0994b688afc22 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Sun, 3 Nov 2019 11:45:44 +0530 Subject: [PATCH 01/16] update: entry in TOC.md --- TOC.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/TOC.md b/TOC.md index e19354ef..b6d6102f 100644 --- a/TOC.md +++ b/TOC.md @@ -1,4 +1,3 @@ - ## Table of Contents ### Data Structures @@ -44,6 +43,8 @@ - [Unique words count in a Trie](src/_DataStructures_/Trees/Trie/unique-word-count) - [All the words from a Trie](src/_DataStructures_/Trees/Trie/all-words-in-trie) - [Unique words in a Trie](src/_DataStructures_/Trees/Trie/get-unique-words) +- [Heaps](src/_DataStructures_/Heaps) + - [MaxHeap](src/_DataStructures_/Heaps/MaxHeap) ### Logical Problems @@ -75,8 +76,7 @@ - [LRU Cache](src/_Algorithms_/lru-cache) - Path Finders - - [A*](src/_Algorithms_/path-finder/a-star) - + - [A\*](src/_Algorithms_/path-finder/a-star) ### Classics From c2f5934f28099c7bb7174b146ead275b9c94fc80 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 14:01:46 +0530 Subject: [PATCH 02/16] fix: used pop() instead of splice() --- src/_DataStructures_/Heaps/MaxHeap/index.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/_DataStructures_/Heaps/MaxHeap/index.js b/src/_DataStructures_/Heaps/MaxHeap/index.js index bf94e9d6..ca6f15fb 100644 --- a/src/_DataStructures_/Heaps/MaxHeap/index.js +++ b/src/_DataStructures_/Heaps/MaxHeap/index.js @@ -14,13 +14,14 @@ class MaxHeap { return this.heap[0] || null; } + // eslint-disable-next-line consistent-return remove() { // return the element at the root const max = this.heap[0] || null; if (this.heap.length > 1) { // move the leaf to the root this.heap[0] = this.heap[this.heap.length - 1]; - this.heap.splice(this.heap.length - 1, 1); + this.heap.pop(); // restore the heapify property // eslint-disable-next-line no-underscore-dangle this.__heapify(0); @@ -28,11 +29,9 @@ class MaxHeap { } if (this.heap.length === 1) { - this.heap.splice(this.heap.length - 1, 1); + this.heap.pop(); return max; } - - return max; } __heapify(index) { From 5338710d1651a3b10f2775736911ed9f9b90bf4a Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 14:44:22 +0530 Subject: [PATCH 03/16] update: added MinHeap, support for collection in constructor --- src/_DataStructures_/Heaps/MaxHeap/index.js | 11 ++- src/_DataStructures_/Heaps/MinHeap/index.js | 79 +++++++++++++++++++++ 2 files changed, 87 insertions(+), 3 deletions(-) create mode 100644 src/_DataStructures_/Heaps/MinHeap/index.js diff --git a/src/_DataStructures_/Heaps/MaxHeap/index.js b/src/_DataStructures_/Heaps/MaxHeap/index.js index ca6f15fb..fb96e96e 100644 --- a/src/_DataStructures_/Heaps/MaxHeap/index.js +++ b/src/_DataStructures_/Heaps/MaxHeap/index.js @@ -1,6 +1,11 @@ class MaxHeap { - constructor() { + constructor(collection) { this.heap = []; + if (collection) { + collection.forEach((element) => { + this.add(element); + }); + } } add(element) { @@ -25,13 +30,13 @@ class MaxHeap { // restore the heapify property // eslint-disable-next-line no-underscore-dangle this.__heapify(0); - return max; } if (this.heap.length === 1) { this.heap.pop(); - return max; } + + return max; } __heapify(index) { diff --git a/src/_DataStructures_/Heaps/MinHeap/index.js b/src/_DataStructures_/Heaps/MinHeap/index.js new file mode 100644 index 00000000..d2d7c682 --- /dev/null +++ b/src/_DataStructures_/Heaps/MinHeap/index.js @@ -0,0 +1,79 @@ +class MinHeap { + constructor(collection) { + this.heap = []; + + if (collection) { + collection.forEach((element) => { + this.add(element); + }); + } + } + + add(element) { + this.heap.push(element); + // check for the parent element & swap if required + // eslint-disable-next-line no-underscore-dangle + this.__traverseUpAndSwap(this.heap.length - 1); + } + + getMin() { + return this.heap[0] || null; + } + + remove() { + const min = this.heap[0] || null; + + if (this.heap.length > 1) { + this.heap[0] = this.heap[this.heap.length - 1]; + this.heap.pop(); + // eslint-disable-next-line no-underscore-dangle + this.__heapify(0); + } + if (this.heap.length === 1) { + this.heap.pop(); + } + return min; + } + + destroy() { + this.heap = []; + } + + // eslint-disable-next-line consistent-return + __traverseUpAndSwap(index) { + if (index <= 0) return null; + + const parent = Math.floor(index / 2); + + if (this.heap[parent] > this.heap[index]) { + const temp = this.heap[parent]; + this.heap[parent] = this.heap[index]; + this.heap[index] = temp; + // eslint-disable-next-line no-underscore-dangle + this.__traverseUpAndSwap(parent); + } + } + + __heapify(index) { + const left = index * 2; + const right = index * 2 + 1; + + let smallest = index; + + if (this.heap.length > left && this.heap[smallest] > this.heap[left]) { + smallest = left; + } + if (this.heap.length > right && this.heap[smallest] > this.heap[right]) { + smallest = right; + } + if (smallest !== index) { + const tmp = this.heap[smallest]; + this.heap[smallest] = this.heap[index]; + this.heap[index] = tmp; + // eslint-disable-next-line no-underscore-dangle + this.__heapify(smallest); + } + } +} + +module.exports = MinHeap; From 16006e00054c2c5c893799cfc3a7a96093689061 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 15:04:50 +0530 Subject: [PATCH 04/16] fix: order of length check in remove() --- src/_DataStructures_/Heaps/MaxHeap/MaxHeap.test.js | 12 ++++++++++++ src/_DataStructures_/Heaps/MaxHeap/index.js | 12 +++++------- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/src/_DataStructures_/Heaps/MaxHeap/MaxHeap.test.js b/src/_DataStructures_/Heaps/MaxHeap/MaxHeap.test.js index 181390ed..d396f2f7 100644 --- a/src/_DataStructures_/Heaps/MaxHeap/MaxHeap.test.js +++ b/src/_DataStructures_/Heaps/MaxHeap/MaxHeap.test.js @@ -47,4 +47,16 @@ describe('MaxHeap', () => { expect(mh.remove()).toEqual(1); expect(mh.getMax()).toEqual(null); }); + + it('Should return `null` on `remove() called on empty heap`', () => { + expect(mh.getMax()).toEqual(null); + }); + + it('Should create MaxHeap using collection : [2, 12, 0, 90]', () => { + const arr = [2, 12, 0, 90]; + const mHBulk = new MaxHeap(arr); + + expect(mHBulk.getMax()).toEqual(90); + // expect(mHBulk.()).toEqual(90); + }); }); diff --git a/src/_DataStructures_/Heaps/MaxHeap/index.js b/src/_DataStructures_/Heaps/MaxHeap/index.js index fb96e96e..16dbb98c 100644 --- a/src/_DataStructures_/Heaps/MaxHeap/index.js +++ b/src/_DataStructures_/Heaps/MaxHeap/index.js @@ -19,10 +19,13 @@ class MaxHeap { return this.heap[0] || null; } - // eslint-disable-next-line consistent-return remove() { - // return the element at the root const max = this.heap[0] || null; + // return the element at the root + if (this.heap.length === 1) { + this.heap.pop(); + } + if (this.heap.length > 1) { // move the leaf to the root this.heap[0] = this.heap[this.heap.length - 1]; @@ -31,11 +34,6 @@ class MaxHeap { // eslint-disable-next-line no-underscore-dangle this.__heapify(0); } - - if (this.heap.length === 1) { - this.heap.pop(); - } - return max; } From 7b958e92fdef94e89399867a8df85f81650c2dfb Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 15:43:00 +0530 Subject: [PATCH 05/16] fix & update: handled case of min/max element 0, fixes in tests --- .../Heaps/MaxHeap/MaxHeap.test.js | 13 ++-- src/_DataStructures_/Heaps/MaxHeap/index.js | 4 +- .../Heaps/MinHeap/MinHeap.test.js | 59 +++++++++++++++++++ src/_DataStructures_/Heaps/MinHeap/index.js | 11 ++-- 4 files changed, 71 insertions(+), 16 deletions(-) create mode 100644 src/_DataStructures_/Heaps/MinHeap/MinHeap.test.js diff --git a/src/_DataStructures_/Heaps/MaxHeap/MaxHeap.test.js b/src/_DataStructures_/Heaps/MaxHeap/MaxHeap.test.js index d396f2f7..5fee6e35 100644 --- a/src/_DataStructures_/Heaps/MaxHeap/MaxHeap.test.js +++ b/src/_DataStructures_/Heaps/MaxHeap/MaxHeap.test.js @@ -15,6 +15,11 @@ describe('MaxHeap', () => { expect(mh instanceof MaxHeap).toEqual(true); }); + it('Should create a MaxHeap using collection', () => { + const mHBulk = new MaxHeap([1, 3, 21, 9, 101, 0]); + expect(mHBulk.getMax()).toEqual(101); + }); + it('Should add an element to the MaxHeap', () => { mh.add(10); expect(mh.getMax()).toEqual(10); @@ -51,12 +56,4 @@ describe('MaxHeap', () => { it('Should return `null` on `remove() called on empty heap`', () => { expect(mh.getMax()).toEqual(null); }); - - it('Should create MaxHeap using collection : [2, 12, 0, 90]', () => { - const arr = [2, 12, 0, 90]; - const mHBulk = new MaxHeap(arr); - - expect(mHBulk.getMax()).toEqual(90); - // expect(mHBulk.()).toEqual(90); - }); }); diff --git a/src/_DataStructures_/Heaps/MaxHeap/index.js b/src/_DataStructures_/Heaps/MaxHeap/index.js index 16dbb98c..81dcdb97 100644 --- a/src/_DataStructures_/Heaps/MaxHeap/index.js +++ b/src/_DataStructures_/Heaps/MaxHeap/index.js @@ -16,11 +16,11 @@ class MaxHeap { } getMax() { - return this.heap[0] || null; + return this.heap[0] !== undefined ? this.heap[0] : null; } remove() { - const max = this.heap[0] || null; + const max = this.heap[0] !== undefined ? this.heap[0] : null; // return the element at the root if (this.heap.length === 1) { this.heap.pop(); diff --git a/src/_DataStructures_/Heaps/MinHeap/MinHeap.test.js b/src/_DataStructures_/Heaps/MinHeap/MinHeap.test.js new file mode 100644 index 00000000..7c47bc6c --- /dev/null +++ b/src/_DataStructures_/Heaps/MinHeap/MinHeap.test.js @@ -0,0 +1,59 @@ +const MinHeap = require('.'); + +describe('MinHeap', () => { + it('Should be a class', () => { + expect(typeof MinHeap.prototype.constructor).toEqual('function'); + }); + + const mh = new MinHeap(); + + beforeEach(() => { + mh.destroy(); + }); + + it('Should create an instance of MinHeap', () => { + expect(mh instanceof MinHeap).toEqual(true); + }); + + it('Should create a MinHeap using collection', () => { + const mHBulk = new MinHeap([112, 3, 21, 9, 10, 0]); + expect(mHBulk.getMin()).toEqual(0); + }); + + it('Should add an element to the MinHeap', () => { + mh.add(10); + expect(mh.getMin()).toEqual(10); + }); + + it('Should keep the smallest element at the root', () => { + [12, 5, 34].forEach(el => mh.add(el)); + expect(mh.getMin()).toEqual(5); + }); + + it('Should retain Heap properties after removal of an element', () => { + [12, 45, 1, 34].forEach(el => mh.add(el)); + expect(mh.getMin()).toEqual(1); + mh.remove(); + expect(mh.getMin()).toEqual(12); + }); + + it('Should return `null` when heap is empty', () => { + [1, 34].forEach(el => mh.add(el)); + expect(mh.getMin()).toEqual(1); + mh.remove(); + mh.remove(); + expect(mh.getMin()).toEqual(null); + }); + + it('Should return the elelment value on `remove()`', () => { + [1, 34].forEach(el => mh.add(el)); + expect(mh.getMin()).toEqual(1); + expect(mh.remove()).toEqual(1); + expect(mh.remove()).toEqual(34); + expect(mh.getMin()).toEqual(null); + }); + + it('Should return `null` on `remove() called on empty heap`', () => { + expect(mh.getMin()).toEqual(null); + }); +}); diff --git a/src/_DataStructures_/Heaps/MinHeap/index.js b/src/_DataStructures_/Heaps/MinHeap/index.js index d2d7c682..d5a3e370 100644 --- a/src/_DataStructures_/Heaps/MinHeap/index.js +++ b/src/_DataStructures_/Heaps/MinHeap/index.js @@ -17,21 +17,20 @@ class MinHeap { } getMin() { - return this.heap[0] || null; + return this.heap[0] !== undefined ? this.heap[0] : null; } remove() { - const min = this.heap[0] || null; - + const min = this.heap[0] !== undefined ? this.heap[0] : null; + if (this.heap.length === 1) { + this.heap.pop(); + } if (this.heap.length > 1) { this.heap[0] = this.heap[this.heap.length - 1]; this.heap.pop(); // eslint-disable-next-line no-underscore-dangle this.__heapify(0); } - if (this.heap.length === 1) { - this.heap.pop(); - } return min; } From 6ced3ff345b6a9f8c0ca5200436224556a039ecd Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 15:46:45 +0530 Subject: [PATCH 06/16] update: entry in TOC.md --- TOC.md | 1 + 1 file changed, 1 insertion(+) diff --git a/TOC.md b/TOC.md index b6d6102f..0921e4e7 100644 --- a/TOC.md +++ b/TOC.md @@ -45,6 +45,7 @@ - [Unique words in a Trie](src/_DataStructures_/Trees/Trie/get-unique-words) - [Heaps](src/_DataStructures_/Heaps) - [MaxHeap](src/_DataStructures_/Heaps/MaxHeap) + - [MinHeap](src/_DataStructures_/Heaps/MinHeap) ### Logical Problems From 042670ac10909e315e6e91e971979cd2c816bfd3 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 18:46:41 +0530 Subject: [PATCH 07/16] update: added k smallest elements problem --- .../k-smallest-elements-in-array/index.js | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/_Problems_/k-smallest-elements-in-array/index.js diff --git a/src/_Problems_/k-smallest-elements-in-array/index.js b/src/_Problems_/k-smallest-elements-in-array/index.js new file mode 100644 index 00000000..f6775fe0 --- /dev/null +++ b/src/_Problems_/k-smallest-elements-in-array/index.js @@ -0,0 +1,21 @@ +/** + * Find 4 smallest elements in an array + */ + +const MinHeap = require('../../_DataStructures_/Heaps/MinHeap'); + +function findKSmallest(collection, k) { + if (!collection || !Array.isArray(collection)) { + throw new Error('Invalid / missing collection'); + } + + // create a MinHeap using the collection + const mh = new MinHeap(collection); + const result = []; + for (let i = 0; i < k; i += 1) { + result.push(mh.getMin()); + } + return result; +} + +module.exports = findKSmallest; From f9f2cfcb8e3a172a8e965dd4c250e4cd1ac6cf04 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 18:52:06 +0530 Subject: [PATCH 08/16] update: added K largest array elements --- src/_Problems_/k-largest-in-array/index.js | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 src/_Problems_/k-largest-in-array/index.js diff --git a/src/_Problems_/k-largest-in-array/index.js b/src/_Problems_/k-largest-in-array/index.js new file mode 100644 index 00000000..922150a8 --- /dev/null +++ b/src/_Problems_/k-largest-in-array/index.js @@ -0,0 +1,22 @@ +const MaxHeap = require('../../_DataStructures_/Heaps/MaxHeap'); + +/** + * Find the 4 largest elements from an array + */ + +function findKLargest(collection, k) { + if (!collection || !Array.isArray(collection)) { + throw new Error('Invalid / missing collection'); + } + + // create a MaxHeap using the collection + const mh = new MaxHeap(collection); + const result = []; + + for (let i = 0; i < k; i += 1) { + result.push(mh.getMax()); + } + return result; +} + +module.exports = findKLargest; From a03369c6f9c2637a37e2b2bd9ee2b93d25ef37ee Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 18:52:47 +0530 Subject: [PATCH 09/16] fix: repo name change --- .../index.js | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/_Problems_/{k-smallest-elements-in-array => k-smallest-in-array}/index.js (100%) diff --git a/src/_Problems_/k-smallest-elements-in-array/index.js b/src/_Problems_/k-smallest-in-array/index.js similarity index 100% rename from src/_Problems_/k-smallest-elements-in-array/index.js rename to src/_Problems_/k-smallest-in-array/index.js From 875f6cab95e5aae978836153d268b99735bd4706 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 18:54:25 +0530 Subject: [PATCH 10/16] fix: repo placement --- .../Heaps}/k-largest-in-array/index.js | 2 +- .../Heaps/k-smallest-in-array/index.js | 21 ++++++++++++++++++ .../k-largest-in-array/index.js | 22 +++++++++++++++++++ src/_Problems_/k-smallest-in-array/index.js | 2 +- 4 files changed, 45 insertions(+), 2 deletions(-) rename src/{_Problems_ => _DataStructures_/Heaps}/k-largest-in-array/index.js (86%) create mode 100644 src/_DataStructures_/Heaps/k-smallest-in-array/index.js create mode 100644 src/_DataStructures_/k-largest-in-array/index.js diff --git a/src/_Problems_/k-largest-in-array/index.js b/src/_DataStructures_/Heaps/k-largest-in-array/index.js similarity index 86% rename from src/_Problems_/k-largest-in-array/index.js rename to src/_DataStructures_/Heaps/k-largest-in-array/index.js index 922150a8..8e0fde8a 100644 --- a/src/_Problems_/k-largest-in-array/index.js +++ b/src/_DataStructures_/Heaps/k-largest-in-array/index.js @@ -1,4 +1,4 @@ -const MaxHeap = require('../../_DataStructures_/Heaps/MaxHeap'); +const MaxHeap = require('../MaxHeap'); /** * Find the 4 largest elements from an array diff --git a/src/_DataStructures_/Heaps/k-smallest-in-array/index.js b/src/_DataStructures_/Heaps/k-smallest-in-array/index.js new file mode 100644 index 00000000..df33d2b5 --- /dev/null +++ b/src/_DataStructures_/Heaps/k-smallest-in-array/index.js @@ -0,0 +1,21 @@ +/** + * Find 4 smallest elements in an array + */ + +const MinHeap = require('../MinHeap'); + +function findKSmallest(collection, k) { + if (!collection || !Array.isArray(collection)) { + throw new Error('Invalid / missing collection'); + } + + // create a MinHeap using the collection + const mh = new MinHeap(collection); + const result = []; + for (let i = 0; i < k; i += 1) { + result.push(mh.getMin()); + } + return result; +} + +module.exports = findKSmallest; diff --git a/src/_DataStructures_/k-largest-in-array/index.js b/src/_DataStructures_/k-largest-in-array/index.js new file mode 100644 index 00000000..8e0fde8a --- /dev/null +++ b/src/_DataStructures_/k-largest-in-array/index.js @@ -0,0 +1,22 @@ +const MaxHeap = require('../MaxHeap'); + +/** + * Find the 4 largest elements from an array + */ + +function findKLargest(collection, k) { + if (!collection || !Array.isArray(collection)) { + throw new Error('Invalid / missing collection'); + } + + // create a MaxHeap using the collection + const mh = new MaxHeap(collection); + const result = []; + + for (let i = 0; i < k; i += 1) { + result.push(mh.getMax()); + } + return result; +} + +module.exports = findKLargest; diff --git a/src/_Problems_/k-smallest-in-array/index.js b/src/_Problems_/k-smallest-in-array/index.js index f6775fe0..df33d2b5 100644 --- a/src/_Problems_/k-smallest-in-array/index.js +++ b/src/_Problems_/k-smallest-in-array/index.js @@ -2,7 +2,7 @@ * Find 4 smallest elements in an array */ -const MinHeap = require('../../_DataStructures_/Heaps/MinHeap'); +const MinHeap = require('../MinHeap'); function findKSmallest(collection, k) { if (!collection || !Array.isArray(collection)) { From 4f5f695c46dafeed45c1e6035f261c3d1392ea8d Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 18:55:34 +0530 Subject: [PATCH 11/16] cleanup --- .../k-largest-in-array/index.js | 22 ------------------- src/_Problems_/k-smallest-in-array/index.js | 21 ------------------ 2 files changed, 43 deletions(-) delete mode 100644 src/_DataStructures_/k-largest-in-array/index.js delete mode 100644 src/_Problems_/k-smallest-in-array/index.js diff --git a/src/_DataStructures_/k-largest-in-array/index.js b/src/_DataStructures_/k-largest-in-array/index.js deleted file mode 100644 index 8e0fde8a..00000000 --- a/src/_DataStructures_/k-largest-in-array/index.js +++ /dev/null @@ -1,22 +0,0 @@ -const MaxHeap = require('../MaxHeap'); - -/** - * Find the 4 largest elements from an array - */ - -function findKLargest(collection, k) { - if (!collection || !Array.isArray(collection)) { - throw new Error('Invalid / missing collection'); - } - - // create a MaxHeap using the collection - const mh = new MaxHeap(collection); - const result = []; - - for (let i = 0; i < k; i += 1) { - result.push(mh.getMax()); - } - return result; -} - -module.exports = findKLargest; diff --git a/src/_Problems_/k-smallest-in-array/index.js b/src/_Problems_/k-smallest-in-array/index.js deleted file mode 100644 index df33d2b5..00000000 --- a/src/_Problems_/k-smallest-in-array/index.js +++ /dev/null @@ -1,21 +0,0 @@ -/** - * Find 4 smallest elements in an array - */ - -const MinHeap = require('../MinHeap'); - -function findKSmallest(collection, k) { - if (!collection || !Array.isArray(collection)) { - throw new Error('Invalid / missing collection'); - } - - // create a MinHeap using the collection - const mh = new MinHeap(collection); - const result = []; - for (let i = 0; i < k; i += 1) { - result.push(mh.getMin()); - } - return result; -} - -module.exports = findKSmallest; From 1e2a54886b0e8da030a863f721d40b76f297e5da Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 18:57:04 +0530 Subject: [PATCH 12/16] update: entry in TOC.md --- TOC.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/TOC.md b/TOC.md index 0921e4e7..8bcc7ec6 100644 --- a/TOC.md +++ b/TOC.md @@ -46,6 +46,9 @@ - [Heaps](src/_DataStructures_/Heaps) - [MaxHeap](src/_DataStructures_/Heaps/MaxHeap) - [MinHeap](src/_DataStructures_/Heaps/MinHeap) + - Problems + - [K Largest Elements](src/_DataStructures_/Heaps/k-largest-in-array) + - [K Smallest Elements](src/_DataStructures_/Heaps/k-smallest-in-array) ### Logical Problems From c2d8c128cbe83b63452b08728790d179a145f8c4 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Mon, 4 Nov 2019 19:05:32 +0530 Subject: [PATCH 13/16] fix: remove will return and remove the element from the heap --- src/_DataStructures_/Heaps/k-largest-in-array/index.js | 2 +- src/_DataStructures_/Heaps/k-smallest-in-array/index.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/_DataStructures_/Heaps/k-largest-in-array/index.js b/src/_DataStructures_/Heaps/k-largest-in-array/index.js index 8e0fde8a..e1d16e90 100644 --- a/src/_DataStructures_/Heaps/k-largest-in-array/index.js +++ b/src/_DataStructures_/Heaps/k-largest-in-array/index.js @@ -14,7 +14,7 @@ function findKLargest(collection, k) { const result = []; for (let i = 0; i < k; i += 1) { - result.push(mh.getMax()); + result.push(mh.remove()); } return result; } diff --git a/src/_DataStructures_/Heaps/k-smallest-in-array/index.js b/src/_DataStructures_/Heaps/k-smallest-in-array/index.js index df33d2b5..4030e0c0 100644 --- a/src/_DataStructures_/Heaps/k-smallest-in-array/index.js +++ b/src/_DataStructures_/Heaps/k-smallest-in-array/index.js @@ -13,7 +13,7 @@ function findKSmallest(collection, k) { const mh = new MinHeap(collection); const result = []; for (let i = 0; i < k; i += 1) { - result.push(mh.getMin()); + result.push(mh.remove()); } return result; } From c3e44dfdacff81722490afc3320c588c7f096c03 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Tue, 5 Nov 2019 11:42:43 +0530 Subject: [PATCH 14/16] update: README makeover --- .assets/dsa.jpeg | Bin 0 -> 97089 bytes .assets/logo.png | Bin 0 -> 9732 bytes README.md | 5 +++++ 3 files changed, 5 insertions(+) create mode 100644 .assets/dsa.jpeg create mode 100644 .assets/logo.png diff --git a/.assets/dsa.jpeg b/.assets/dsa.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..2b9440ab7708ce61d628075dd7501633bfd511fa GIT binary patch literal 97089 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

sGzrm5gMy>al7yK(eFU&vjnrY&7!pr{m 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 Mel`eN@wWTF0pE2Mi~s-t literal 0 HcmV?d00001 diff --git a/.assets/logo.png b/.assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..bd744de1a52cbdd8ac52d85bf35daa47b5f357be GIT binary patch literal 9732 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md index 1b1e130c..8b1df964 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Problem Solving using Javascript + + [![Open Source Love](https://badges.frapsoft.com/os/v2/open-source.svg?v=103)](https://github.com/vinitshahdeo/HacktoberFest) [![Build Status](https://travis-ci.org/knaxus/problem-solving-javascript.svg?branch=master)](https://travis-ci.org/knaxus/problem-solving-javascript) [![Coverage Status](https://coveralls.io/repos/github/knaxus/problem-solving-javascript/badge.svg?branch=master)](https://coveralls.io/github/knaxus/problem-solving-javascript?branch=master) @@ -7,9 +9,12 @@ Collection of interview questions with Unit Tests. Problems includes Data Structures, Logical and few Classical problems. +![DSA](.assets/dsa.jpeg) + ## Table of Contents This repo contains the following in **JavaScript** + - Data Structures - Algorithms - Logical Problems From 2daa87d58e8db4f18bc369402d67eefab98d9375 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Tue, 5 Nov 2019 11:45:49 +0530 Subject: [PATCH 15/16] fixes: README changes --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 8b1df964..bc8651f1 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ -# Problem Solving using Javascript - +# Problem Solving using Javascript + [![Open Source Love](https://badges.frapsoft.com/os/v2/open-source.svg?v=103)](https://github.com/vinitshahdeo/HacktoberFest) [![Build Status](https://travis-ci.org/knaxus/problem-solving-javascript.svg?branch=master)](https://travis-ci.org/knaxus/problem-solving-javascript) [![Coverage Status](https://coveralls.io/repos/github/knaxus/problem-solving-javascript/badge.svg?branch=master)](https://coveralls.io/github/knaxus/problem-solving-javascript?branch=master) @@ -11,18 +11,18 @@ Collection of interview questions with Unit Tests. Problems includes Data Struct ![DSA](.assets/dsa.jpeg) -## Table of Contents +## Overview -This repo contains the following in **JavaScript** +This repo contains the following sections implemented in **JavaScript** - Data Structures - Algorithms - Logical Problems - Classics (Few of the classical questions) -Find the detailed Table of Contents here: [Detailed TOC](TOC.md) +Find the detailed contents and problem list here: [Table Of Contents](TOC.md) -## CONTRIBUTION Guide +## Contribution Guide It's great to know that you want to contribute to this repo. Thanks for taking interest. please fing the [guide here](https://github.com/knaxus/problem-solving-javascript/blob/master/CONTRIBUTING.md) From 2c1011a323f15f2d7074ddc2ccb7ba56c3169fb7 Mon Sep 17 00:00:00 2001 From: Ashok Dey Date: Tue, 5 Nov 2019 12:17:53 +0530 Subject: [PATCH 16/16] update: Added links in README --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index bc8651f1..01dfd851 100644 --- a/README.md +++ b/README.md @@ -15,10 +15,10 @@ Collection of interview questions with Unit Tests. Problems includes Data Struct This repo contains the following sections implemented in **JavaScript** -- Data Structures -- Algorithms -- Logical Problems -- Classics (Few of the classical questions) +- [Data Structures](src/_DataStructures_) +- [Algorithms](src/_Algorithms_) +- [Logical Problems](src/_Problems_) +- [Classics (Few of the classical questions)](src/_Classics_) Find the detailed contents and problem list here: [Table Of Contents](TOC.md)