2
* @param {number[]} nums5
var minimumDifference = function (nums) {11
this.data[0] = undefined;14
for (let i = 1; i < this.data.length; i++) {15
console.log(this.data[i]);19
return this.data.length - 1;22
this.data.push(value);23
if (this.data.length == 2) {26
let lastIndex = this.data.length - 1;28
this.data[Math.floor(lastIndex / 2)] !== undefined &&31
this.data[Math.floor(lastIndex / 2)]34
let temp = this.data[Math.floor(lastIndex / 2)];35
this.data[Math.floor(lastIndex / 2)] = this.data[lastIndex];36
this.data[lastIndex] = temp;37
lastIndex = Math.floor(lastIndex / 2);40
//This returns a positive number if a is greater than b. Here meaing of being greater depends on the type of heap. For max heap it will return positive number if a>b and for min heap it will return positive number if a<b .42
if (this.type === "min") {49
let max = this.data[1];50
if (this.getSize() > 1) {51
this.data[1] = this.data.pop();54
//If the size is 0 then just remove the element, no shifting and hipify will be applicable61
if (this.getSize() >= 1) {67
if (pos * 2 > this.data.length - 1) {68
//That means element at index 'pos' is not having any child72
(this.data[pos * 2] !== undefined &&73
this.compare(this.data[pos * 2], this.data[pos]) > 0) ||74
(this.data[pos * 2 + 1] !== undefined &&75
this.compare(this.data[pos * 2 + 1], this.data[pos]) > 0)78
this.data[pos * 2 + 1] === undefined ||79
this.compare(this.data[pos * 2 + 1], this.data[pos * 2]) <= 081
let temp = this.data[pos * 2];82
this.data[pos * 2] = this.data[pos];83
this.data[pos] = temp;84
this.heapify(pos * 2);86
let temp = this.data[pos * 2 + 1];87
this.data[pos * 2 + 1] = this.data[pos];88
this.data[pos] = temp;89
this.heapify(pos * 2 + 1);94
let maxHeap = new Heap(),95
minHeap = new Heap("min"),97
let n = nums.length / 3,100
for (let i = 0; i < 2 * n; i++) {101
if (maxHeap.getSize() < n) {103
maxHeap.insert(nums[i]);105
if (maxHeap.getTop() > nums[i]) {106
let top = maxHeap.removeTop();109
maxHeap.insert(nums[i]);112
if (maxHeap.getSize() === n) {117
for (let i = 3 * n - 1; i >= n; i--) {118
if (minHeap.getSize() < n) {120
minHeap.insert(nums[i]);122
if (minHeap.getTop() < nums[i]) {123
let top = minHeap.removeTop();126
minHeap.insert(nums[i]);129
if (minHeap.getSize() === n) {134
let min = Number.MAX_SAFE_INTEGER;136
for (let i = 0; i < leftArr.length; i++) {137
min = Math.min(min, leftArr[i] - rightArr[i]);