ds-algo-study
Version:
Just experimenting with publishing a package
760 lines (600 loc) • 46.6 kB
HTML
<html>
<head>
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
<meta name=Generator content="Microsoft Word 15 (filtered)">
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Georgia;
panose-1:2 4 5 2 5 4 5 2 3 3;}
@font-face
{font-family:inherit;
panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin-top:0in;
margin-right:0in;
margin-bottom:8.0pt;
margin-left:0in;
line-height:107%;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
.MsoChpDefault
{font-family:"Calibri",sans-serif;}
.MsoPapDefault
{margin-bottom:8.0pt;
line-height:107%;}
@page WordSection1
{size:11.0in 8.5in;
margin:.5in .5in .5in .5in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
-->
</style>
</head>
<body lang=EN-US link=blue vlink="#954F72" style='word-wrap:break-word'>
<div class=WordSection1>
<p class=MsoNormal style='margin-bottom:15.0pt;line-height:normal;background:
white;vertical-align:baseline'><b><span style='font-size:27.0pt;font-family:
"Arial",sans-serif;color:black'>Heaps Project</span></b></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white;
vertical-align:baseline'><span style='font-size:15.0pt;font-family:"Georgia",serif;
color:black'>This project contains a skeleton for you to implement a max heap.
This is a test-driven project. Run the tests and read the top-most error. If
it's not clear what is failing, open the </span><b><span style='font-size:
15.0pt;font-family:"inherit",serif;color:black'>test/test.js</span></b><span
style='font-size:15.0pt;font-family:"Georgia",serif;color:black'> file to
figure out what the test is expecting. Make the top-most test pass.</span></p>
<p class=MsoNormal style='margin-top:15.0pt;margin-right:0in;margin-bottom:
15.0pt;margin-left:0in;line-height:normal;background:white;vertical-align:baseline'><span
style='font-size:15.0pt;font-family:"Georgia",serif;color:black'>Keep making
the top-most test pass until all tests pass.</span></p>
<div style='border:none;border-bottom:solid #DDDDDD 1.0pt;padding:0in 0in 4.0pt 0in;
background:white'>
<p class=MsoNormal style='margin-top:60.0pt;margin-right:0in;margin-bottom:
15.0pt;margin-left:0in;line-height:normal;background:white;vertical-align:baseline;
border:none;padding:0in'><b><span style='font-size:22.5pt;font-family:"Arial",sans-serif;
color:black'>Instructions</span></b></p>
</div>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:0in;
margin-left:43.5pt;text-indent:-.25in;line-height:normal;background:white;
vertical-align:baseline'><span style='font-size:10.0pt;font-family:Symbol;
color:black'>�<span style='font:7.0pt "Times New Roman"'> </span></span><span
style='font-size:15.0pt;font-family:"Courier New";color:black'>cd</span><span
style='font-size:15.0pt;font-family:"inherit",serif;color:black'> into the
project folder</span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:0in;
margin-left:43.5pt;text-indent:-.25in;line-height:normal;background:white;
vertical-align:baseline'><span style='font-size:10.0pt;font-family:Symbol;
color:black'>�<span style='font:7.0pt "Times New Roman"'> </span></span><span
style='font-size:15.0pt;font-family:"Courier New";color:black'>npm install</span><span
style='font-size:15.0pt;font-family:"inherit",serif;color:black'> to
install dependencies in the project root directory</span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:0in;
margin-left:43.5pt;text-indent:-.25in;line-height:normal;background:white;
vertical-align:baseline'><span style='font-size:10.0pt;font-family:Symbol;
color:black'>�<span style='font:7.0pt "Times New Roman"'> </span></span><span
style='font-size:15.0pt;font-family:"Courier New";color:black'>npm test</span><span
style='font-size:15.0pt;font-family:"inherit",serif;color:black'> to run
the specs</span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:0in;
margin-left:43.5pt;text-indent:-.25in;line-height:normal;background:white;
vertical-align:baseline'><span style='font-size:10.0pt;font-family:Symbol;
color:black'>�<span style='font:7.0pt "Times New Roman"'> </span></span><span
style='font-size:15.0pt;font-family:"inherit",serif;color:black'>You can view
the test cases in </span><span style='font-size:15.0pt;font-family:"Courier New";
color:black'>test/test.js</span><span style='font-size:15.0pt;font-family:"inherit",serif;
color:black'>. Your job is to write code in</span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:0in;
margin-left:87.0pt;text-indent:-.25in;line-height:normal;background:white;
vertical-align:baseline'><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>o<span style='font:7.0pt "Times New Roman"'> </span></span><b><span
style='font-size:15.0pt;font-family:"inherit",serif;color:black'>lib/max_heap.js</span></b><span
style='font-size:15.0pt;font-family:"inherit",serif;color:black'> to
implement the </span><span style='font-size:15.0pt;font-family:"Courier New";
color:black'>MaxHeap</span><span style='font-size:15.0pt;font-family:"inherit",serif;
color:black'> class</span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:0in;
margin-left:87.0pt;text-indent:-.25in;line-height:normal;background:white;
vertical-align:baseline'><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>o<span style='font:7.0pt "Times New Roman"'> </span></span><b><span
style='font-size:15.0pt;font-family:"inherit",serif;color:black'>lib/is_heap.js</span></b><span
style='font-size:15.0pt;font-family:"inherit",serif;color:black'> to
implement the </span><span style='font-size:15.0pt;font-family:"Courier New";
color:black'>isMaxHeap</span><span style='font-size:15.0pt;font-family:"inherit",serif;
color:black'> function</span></p>
<p class=MsoNormal style='margin-top:0in;margin-right:0in;margin-bottom:0in;
margin-left:87.0pt;text-indent:-.25in;line-height:normal;background:white;
vertical-align:baseline'><span style='font-size:10.0pt;font-family:"Courier New";
color:black'>o<span style='font:7.0pt "Times New Roman"'> </span></span><b><span
style='font-size:15.0pt;font-family:"inherit",serif;color:black'>lib/leet_code_215.js</span></b><span
style='font-size:15.0pt;font-family:"inherit",serif;color:black'> to
implement the </span><span style='font-size:15.0pt;font-family:"Courier New";
color:black'>findKthLargest</span><span style='font-size:15.0pt;font-family:
"inherit",serif;color:black'> function located at </span><span
style='color:black'><a
href="https://leetcode.com/problems/kth-largest-element-in-an-array/"
target="_blank"><span style='font-size:15.0pt;font-family:"inherit",serif;
color:#0077FF'>https://leetcode.com/problems/kth-largest-element-in-an-array/</span></a></span></p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal><span style='position:relative;z-index:251659264'><span
style='position:absolute;left:-3px;top:-21px;width:852px;height:384px'><img
width=852 height=384 src="Heaps-project_files/image001.png"
alt="Graphical user interface, application, Teams Description automatically generated"></span></span> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<br clear=ALL>
<p class=MsoNormal>/**</p>
<p class=MsoNormal>�* @param {number[]} nums</p>
<p class=MsoNormal>�* @param {number} k</p>
<p class=MsoNormal>�* @return {number}</p>
<p class=MsoNormal>�*/</p>
<p class=MsoNormal>let findKthLargest = function(nums, k) {</p>
<p class=MsoNormal>��� </p>
<p class=MsoNormal>};</p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal> </p>
<p class=MsoNormal>Soln:--------------------------------------------------------------</p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:green'>// you may assume that the array will always have a null element at the 0-th index</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:blue'>function</span><span style='font-size:12.0pt;font-family:
Consolas;color:black'> isMaxHeap( array ) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span><span style='font-size:
12.0pt;font-family:Consolas;color:green'>// check if the tree is complete, i.e. there are no gaps like [null, 50, undefined, 20]</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span><span style='font-size:
12.0pt;font-family:Consolas;color:blue'>let</span><span style='font-size:12.0pt;
font-family:Consolas;color:black'> isComplete = array.every( el </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>=></span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> el !== </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>undefined</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> );</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span><span style='font-size:
12.0pt;font-family:Consolas;color:blue'>return</span><span style='font-size:
12.0pt;font-family:Consolas;color:black'> isComplete && _isMaxHeap( array );</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'>}</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:blue'>function</span><span style='font-size:12.0pt;font-family:
Consolas;color:black'> _isMaxHeap( array, idx = </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>1</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> ) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span><span style='font-size:
12.0pt;font-family:Consolas;color:blue'>if</span><span style='font-size:12.0pt;
font-family:Consolas;color:black'> ( array[ idx ] === </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>undefined</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> ) </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>return</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>true</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>;</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span><span style='font-size:
12.0pt;font-family:Consolas;color:blue'>let</span><span style='font-size:12.0pt;
font-family:Consolas;color:black'> leftIdx = </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>2</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> * idx;</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span><span style='font-size:
12.0pt;font-family:Consolas;color:blue'>let</span><span style='font-size:12.0pt;
font-family:Consolas;color:black'> rightIdx = </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>2</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> * idx + </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>1</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>;</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span><span style='font-size:
12.0pt;font-family:Consolas;color:blue'>let</span><span style='font-size:12.0pt;
font-family:Consolas;color:black'> leftVal;</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span><span style='font-size:
12.0pt;font-family:Consolas;color:blue'>if</span><span style='font-size:12.0pt;
font-family:Consolas;color:black'> ( array[ leftIdx ] === </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>undefined</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> ) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> leftVal = -Infinity;</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> } </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>else</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> {</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> leftVal = array[ leftIdx ];</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span><span style='font-size:
12.0pt;font-family:Consolas;color:blue'>let</span><span style='font-size:12.0pt;
font-family:Consolas;color:black'> rightVal;</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span><span style='font-size:
12.0pt;font-family:Consolas;color:blue'>if</span><span style='font-size:12.0pt;
font-family:Consolas;color:black'> ( array[ rightIdx ] === </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>undefined</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> ) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> rightVal = -Infinity;</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> } </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>else</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> {</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> rightVal = array[ rightIdx ];</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span><span style='font-size:
12.0pt;font-family:Consolas;color:blue'>return</span><span style='font-size:
12.0pt;font-family:Consolas;color:black'> array[ idx ] > leftVal && array[ idx ] > rightVal &&</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> _isMaxHeap( array, leftIdx ) && _isMaxHeap( array, rightIdx );</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'>}</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'>module.exports = {</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'> isMaxHeap</span></p>
<p class=MsoNormal style='margin-bottom:0in;margin-bottom:0in;margin-top:0in;
line-height:normal;background:white'><span style='font-size:12.0pt;font-family:
Consolas;color:black'>};</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:18.0pt;background:white'><span
style='font-size:13.5pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>--------------------------------------------------------------------------------------------------------</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>class</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> MaxHeap {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> constructor() {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array = [</span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>null</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>];</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> getParent(idx) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>return</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> Math.floor(idx / </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>2</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>);</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> getLeftChild(idx) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>return</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> idx * </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>2</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>;</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> getRightChild(idx) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>return</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> idx * </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>2</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> + </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>1</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>;</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> insert(val) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array.push(val);</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.siftUp(</span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array.length - </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>1</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>);</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> siftUp(idx) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>if</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> (idx === </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>1</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>) </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>return</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>;</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>let</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> parentIdx = </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.getParent(idx);</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>if</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> (</span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array[parentIdx] < </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array[idx]) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> [ </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array[parentIdx], </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array[idx] ] = [ </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array[idx], </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array[parentIdx] ];</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.siftUp(parentIdx);</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> deleteMax() {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>if</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> (</span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array.length === </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>2</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>) </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>return</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array.pop();</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>if</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> (</span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array.length === </span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>1</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>) </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>return</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>null</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>;</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>let</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> max = </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array[</span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>1</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>];</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array[</span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>1</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>] = </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array.pop();</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.siftDown(</span><span
style='font-size:12.0pt;font-family:Consolas;color:#098658'>1</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>);</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>return</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> max;</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> siftDown(idx) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>let</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> ary = </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.array;</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>let</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> leftIdx = </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.getLeftChild(idx);</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>let</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> rightIdx = </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.getRightChild(idx); </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>let</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> leftVal = ary[leftIdx];</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>let</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> rightVal = ary[rightIdx];</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>if</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> (leftVal === </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>undefined</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>) leftVal = -Infinity;</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>if</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> (rightVal === </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>undefined</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>) rightVal = -Infinity;</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>if</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> (ary[idx] > leftVal && ary[idx] > rightVal) </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>return</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>;</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>if</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> (leftVal < rightVal) {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>var</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> swapIdx = rightIdx;</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> } </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>else</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>var</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'> swapIdx = leftIdx;</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> [ ary[idx], ary[swapIdx] ] = [ ary[swapIdx], ary[idx] ];</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span><span
style='font-size:12.0pt;font-family:Consolas;color:blue'>this</span><span
style='font-size:12.0pt;font-family:Consolas;color:black'>.siftDown(swapIdx);</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> }</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'>}</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> </span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'>module.exports = {</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'> MaxHeap</span></p>
<p class=MsoNormal style='margin-bottom:0in;line-height:normal;background:white'><span
style='font-size:12.0pt;font-family:Consolas;color:black'>};</span></p>
<p class=MsoNormal> </p>
</div>
</body>
</html>