const numbers = [5, 0, 8, 2, 1, 4, 7, 2, 5, -1]; // 测试用例 const vaild = [-1, 0, 4, 2, 1, 8, 7, 5, 5, 2]; // 验证用例 /** * 使用逐个插入法构造小顶堆 * @param {number[]} nums 需要处理的完全二叉树,用数组表示(层序遍历) * @returns {number[]} 返回一个小顶堆的层序遍历 */ function buildHeap(nums) { const heap = []; for (let i = 0; i < nums.length; i++) { heap.push(nums[i]); let cur = heap.length - 1; let parent = Math.floor((cur - 1) / 2); while (cur > 0 && heap[cur] < heap[parent]) { [heap[cur], heap[parent]] = [heap[parent], heap[cur]]; cur = parent; parent = Math.floor((cur - 1) / 2); } } return heap; } function test(nums1, nums2) { for (let i = 0; i < nums1; i++) { if (nums1[i] !== nums2[i]) return false; } return true; } console.log(test(buildeap(numbers), vaild));