fix(curriculum): fixed broken test cases (#53400)
parent
3b38612a9f
commit
c01d418e48
|
@ -88,49 +88,56 @@ The `remove` method should remove the greatest element from the max heap while m
|
||||||
|
|
||||||
```js
|
```js
|
||||||
function isHeap(arr, i, n) {
|
function isHeap(arr, i, n) {
|
||||||
if (i >= (n - 1) / 2) {
|
if( arr[i] < arr[2 * i + 1] || arr[i] < arr[2 * i + 2] ){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (i > (n - 1) / 2) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (
|
if (isHeap(arr, 2 * i + 1, n) && isHeap(arr, 2 * i + 2, n)) {
|
||||||
arr[i] >= arr[2 * i + 1] &&
|
|
||||||
arr[i] >= arr[2 * i + 2] &&
|
|
||||||
isHeap(arr, 2 * i + 1, n) &&
|
|
||||||
isHeap(arr, 2 * i + 2, n)
|
|
||||||
) {
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
assert(
|
assert(
|
||||||
(function () {
|
(function () {
|
||||||
let test = false;
|
let test = false;
|
||||||
|
|
||||||
if (typeof MaxHeap !== 'undefined') {
|
if (typeof MaxHeap !== 'undefined') {
|
||||||
test = new MaxHeap();
|
test = new MaxHeap();
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
let max = Infinity;
|
let max = Infinity;
|
||||||
const [result, vals] = [[], [2, 15, 3, 7, 12, 7, 10, 90]];
|
const [result, vals] = [[], [9, 3, 5, 2, 15, 3, 7, 12, 7, 10, 90]];
|
||||||
|
|
||||||
vals.forEach((val) => test.insert(val));
|
vals.forEach((val) => test.insert(val));
|
||||||
|
|
||||||
for (let i = 0; i < vals.length; i++) {
|
for (let i = 0; i < vals.length; i++) {
|
||||||
const curHeap = test.print();
|
const curHeap = test.print();
|
||||||
const arr = curHeap[0] === null ? curHeap.slice(1) : curHeap;
|
const arr = curHeap[0] === null ? curHeap.slice(1) : curHeap;
|
||||||
|
|
||||||
if (!isHeap(arr, 0, arr.length - 1)) {
|
if (!isHeap(arr, 0, arr.length - 1)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const removed = test.remove();
|
const removed = test.remove();
|
||||||
if (!vals.includes(removed)) return false;
|
if (!vals.includes(removed)) return false;
|
||||||
if (removed > max) return false
|
if (removed > max) return false
|
||||||
max = removed;
|
max = removed;
|
||||||
result.push(removed);
|
result.push(removed);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (let i = 0; i < vals.length; i++) {
|
for (let i = 0; i < vals.length; i++) {
|
||||||
if (!result.includes(vals[i])) {
|
if (!result.includes(vals[i])) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true
|
|
||||||
|
return true;
|
||||||
})()
|
})()
|
||||||
);
|
);
|
||||||
```
|
```
|
||||||
|
|
Loading…
Reference in New Issue