{"id":1708,"date":"2020-07-01T09:37:56","date_gmt":"2020-07-01T09:37:56","guid":{"rendered":"https:\/\/blog.prepbytes.com\/?p=1708"},"modified":"2022-03-28T01:33:55","modified_gmt":"2022-03-28T01:33:55","slug":"fascinating-multiple-number","status":"publish","type":"post","link":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/","title":{"rendered":"Fascinating Multiple Number"},"content":{"rendered":"<p><img decoding=\"async\" src=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645098878183-Article_312.png\" alt=\"\" \/><\/p>\n<h3>Concepts Used<\/h3>\n<blockquote>\n<p>Heap<\/p>\n<\/blockquote>\n<h3>Difficulty Level<\/h3>\n<blockquote>\n<p>Medium<\/p>\n<\/blockquote>\n<h3>Problem Statement :<\/h3>\n<blockquote>\n<p>Given an array A of size <code>N<\/code>, we have to perform following operations, untill only one integer remains (<code>N-1<\/code> times) :<\/p>\n<ul>\n<li>Select two elements P and Q from the array A where P is the    maximum and Q is the second maximum element.<\/li>\n<li>Delete the chosen elements from the array.<\/li>\n<li>Insert <code>((P\u22173)\u2212(Q\u22172))<\/code> <strong>%<\/strong> <code>(10<\/code><sup>9<\/sup><code>+7<\/code>) in the array.<\/li>\n<\/ul>\n<\/blockquote>\n<p><a href=\"https:\/\/mycode.prepbytes.com\/problems\/heaps\/SQNUM\" title=\"Go to mycode.prepbytes.com\" target=\"_blank\" rel=\"noopener noreferrer\"><u><strong><\/strong><\/u><\/a><\/p>\n<h3>Solution Approach :<\/h3>\n<h4>Introduction :<\/h4>\n<blockquote>\n<p>To get the first two maximum numbers we can create <strong>max-heap<\/strong> of the elements of the array and extract two elements (maximum &amp; second maximum), perform the operations, then insert the new value to the <strong>max-heap<\/strong>.<\/p>\n<p><strong>Note<\/strong> &#8211; Check for integer overflows, for example consider this array 10000 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1, in this our <code>p*3<\/code> value will overflow while calculating so for safeguarding we will apply modulo in each subcalculation as well,  <code>((P\u22173)<\/code>%<code>(10<\/code><sup>9<\/sup><code>+7)<\/code><code>\u2212(Q\u22172)<\/code>%<code>(10<\/code><sup>9<\/sup><code>+7)<\/code><code>)<\/code>.<\/p>\n<\/blockquote>\n<h4>Method 1 :<\/h4>\n<blockquote>\n<p>In order to get highest and second highest values every time we can get highest and second highest values in a single traversal. After extracting both the values , perform the operation and add it back to the array, now again find highest and the second highest values. Repeat the process <code>N-1<\/code> times, where <code>N<\/code> is the size of our array.<\/p>\n<\/blockquote>\n<h4>Method 2 :<\/h4>\n<blockquote>\n<ul>\n<li>We need to geneate a <strong>max-heap<\/strong> from the elements of array of size <code>N<\/code> to get the maximum elements.<\/li>\n<li>In a <strong>max-heap<\/strong>, the root always stores the larger value as compared to its <strong>left<\/strong> &amp; <strong>right<\/strong> subtree, this condition needs to be true for every node. We need to insert each item one by one such that parent is always larger than the item itself. If parent is smaller, then swap the current item with its parent. <\/li>\n<li>After generating <strong>max-heap<\/strong> now <strong>extract<\/strong> the first two elements and perform the operation, then add the new obtained value back to the heap using <strong>insert()<\/strong>.<\/li>\n<li>Repeat the above process <code>N-1<\/code> times.<\/li>\n<li>Print the element, this is our required answer.<\/li>\n<\/ul>\n<p><strong>extract()<\/strong>: Removes the maximum element from <strong>Max-Heap<\/strong>. Time Complexity of this Operation is O(Logn) as this operation needs to maintain the heap property (by calling <strong>heapify()<\/strong>) after removing root.<\/p>\n<p><strong>heapify()<\/strong>: Maintains the heap property for each node. If any node does not follow heap property it swaps the node with the node which is smaller ,or greater (in case of <strong>max-heap<\/strong>), than the node.<\/p>\n<p>Below is the algorithm of above approach.<\/p>\n<\/blockquote>\n<h3>Algorithms :<\/h3>\n<h4>Insert() :<\/h4>\n<blockquote>\n<ol>\n<li>Insert the item at the last index, and increment the size by 1.<\/li>\n<li>Then, check if the inserted item is smaller than its parent,<\/li>\n<li>If yes, then swap the inserted item with its parent.<\/li>\n<li>If no, then do nothing.<\/li>\n<li>Now, go to step <code>2<\/code> and repeat untill we reach root (first element).<\/li>\n<\/ol>\n<\/blockquote>\n<h4>Extract() :<\/h4>\n<blockquote>\n<ol>\n<li>Store the value of the first node of our heap ( <code>temp = heap[0]<\/code> ).<\/li>\n<li>Replace the root node with the farthest right node (last element).<\/li>\n<li>Decrease the size by <code>1<\/code>. <code>(heap[0] = heap[size-1])<\/code><\/li>\n<li>Perform <strong>heapify<\/strong> starting from the new root. <\/li>\n<li>Return the stored value.(<strong>temp<\/strong>)<\/li>\n<\/ol>\n<\/blockquote>\n<h4>Heapify ():<\/h4>\n<blockquote>\n<ol>\n<li>if the heap property holds true then you are done.<\/li>\n<li>else if<\/li>\n<li>replacement node value &gt; its parent nodes value<br \/>\nthen swap them, and repeat step 3.<\/li>\n<li>else<\/li>\n<li>swap the replacement node with the largest child node, and<br \/>\nrepeat step 3.<\/li>\n<\/ol>\n<\/blockquote>\n<h4>Example:<\/h4>\n<p><img decoding=\"async\" src=\"https:\/\/prepbytes.com\/blog\/wp-content\/uploads\/2020\/06\/SQNUM.png\" alt=\"\" \/><\/p>\n<h3>Solutions:<\/h3>\n\t\t\t\t\t\t<style>\r\n\t\t\t\t\r\n\t\t\t\t\t#tab_container_1715 {\r\n\toverflow:hidden;\r\n\tdisplay:block;\r\n\twidth:100%;\r\n\tborder:0px solid #ddd;\r\n\tmargin-bottom:30px;\r\n\t}\r\n\r\n#tab_container_1715 .tab-content{\r\n\tpadding:20px;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n\tmargin-top: 0px;\r\n\tbackground-color:#ffffff !important;\r\n\tcolor: #000000 !important;\r\n\tfont-size:16px !important;\r\n\tfont-family: Open Sans !important;\r\n\t\r\n\t\tborder: 1px solid #e6e6e6 !important;\r\n\t}\r\n#tab_container_1715 .wpsm_nav-tabs {\r\n    border-bottom: 0px solid #ddd;\r\n}\r\n#tab_container_1715 .wpsm_nav-tabs > li.active > a, #tab_container_1715 .wpsm_nav-tabs > li.active > a:hover, #tab_container_1715 .wpsm_nav-tabs > li.active > a:focus {\r\n\tcolor: #000000 !important;\r\n\tcursor: default;\r\n\tbackground-color: #ffffff !important;\r\n\tborder: 1px solid #e6e6e6 !important;\r\n}\r\n\r\n#tab_container_1715 .wpsm_nav-tabs > li > a {\r\n    margin-right: 0px !important; \r\n    line-height: 1.42857143 !important;\r\n    border: 1px solid #d5d5d5 !important;\r\n    border-radius: 0px 0px 0 0 !important; \r\n\tbackground-color: #e8e8e8 !important;\r\n\tcolor: #000000 !important;\r\n\tpadding: 15px 18px 15px 18px !important;\r\n\ttext-decoration: none !important;\r\n\tfont-size: 14px !important;\r\n\ttext-align:center !important;\r\n\tfont-family: Open Sans !important;\r\n}\r\n#tab_container_1715 .wpsm_nav-tabs > li > a:focus {\r\noutline: 0px !important;\r\n}\r\n\r\n#tab_container_1715 .wpsm_nav-tabs > li > a:before {\r\n\tdisplay:none !important;\r\n}\r\n#tab_container_1715 .wpsm_nav-tabs > li > a:after {\r\n\tdisplay:none !important ;\r\n}\r\n#tab_container_1715 .wpsm_nav-tabs > li{\r\npadding:0px !important ;\r\nmargin:0px;\r\n}\r\n\r\n#tab_container_1715 .wpsm_nav-tabs > li > a:hover , #tab_container_1715 .wpsm_nav-tabs > li > a:focus {\r\n    color: #000000 !important;\r\n    background-color: #e8e8e8 !important;\r\n\tborder: 1px solid #d5d5d5 !important;\r\n\t\r\n}\r\n#tab_container_1715 .wpsm_nav-tabs > li > a .fa{\r\n\r\nmargin-right:5px !important;\r\n\r\nmargin-left:5px !important;\r\n\r\n\r\n}\r\n\r\n\t\t#tab_container_1715 .wpsm_nav-tabs a{\r\n\t\t\tbackground-image: none;\r\n\t\t\tbackground-position: 0 0;\r\n\t\t\tbackground-repeat: repeat-x;\r\n\t\t}\r\n\t\t\t\r\n\r\n\r\n#tab_container_1715 .wpsm_nav-tabs > li {\r\n    float: left;\r\n    margin-bottom: -1px !important;\r\n\tmargin-right:0px !important; \r\n}\r\n\r\n\r\n#tab_container_1715 .tab-content{\r\noverflow:hidden !important;\r\n}\r\n\r\n\r\n@media (min-width: 769px) {\r\n\r\n\t#tab_container_1715 .wpsm_nav-tabs > li{\r\n\t\tfloat:left !important ;\r\n\t\t\t\tmargin-right:-1px !important;\r\n\t\t\t\t\t}\r\n\t#tab_container_1715 .wpsm_nav-tabs{\r\n\t\tfloat:none !important;\r\n\t\tmargin:0px !important;\r\n\t}\r\n\r\n\t#tab_container_1715 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1715 .wpsm_nav{\r\n\t\t\t}\r\n\r\n}\r\n\r\n\r\n\r\n@media (max-width: 768px) {\r\n\t#tab_container_1715 .wpsm_nav-tabs > li {\r\n\t\t\t\t\r\n\t}\r\n\t#tab_container_1715 .wpsm_nav{\r\n\t\t\t}\r\n}\r\n\r\n\r\n\t.wpsm_nav-tabs li:before{\r\n\t\tdisplay:none !important;\r\n\t}\r\n\r\n\t@media (max-width: 768px) {\r\n\t\t\t\t\r\n\t\t\t\t.wpsm_nav-tabs{\r\n\t\t\tmargin-left:0px !important;\r\n\t\t\tmargin-right:0px !important; \r\n\t\t\t\r\n\t\t}\r\n\t\t\t\t#tab_container_1715 .wpsm_nav-tabs > li{\r\n\t\t\tfloat:none !important;\r\n\t\t}\r\n\t\t\t\r\n\t}\t\t\t\t<\/style>\r\n\t\t\t\t<div id=\"tab_container_1715\" >\r\n\t \r\n\t\t\t\t\t<ul class=\"wpsm_nav wpsm_nav-tabs\" role=\"tablist\" id=\"myTab_1715\">\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  class=\"active\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1715_1\" aria-controls=\"tabs_desc_1715_1\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1715_2\" aria-controls=\"tabs_desc_1715_2\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>C++<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t<li role=\"presentation\"  onclick=\"do_resize()\">\r\n\t\t\t\t\t\t\t\t<a href=\"#tabs_desc_1715_3\" aria-controls=\"tabs_desc_1715_3\" role=\"tab\" data-toggle=\"tab\">\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<i class=\"fa fa-code\"><\/i> \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t<span>Java<\/span>\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t<\/a>\r\n\t\t\t\t\t\t\t<\/li>\r\n\t\t\t\t\t\t\t\t\t\t\t <\/ul>\r\n\r\n\t\t\t\t\t  <!-- Tab panes -->\r\n\t\t\t\t\t  <div class=\"tab-content\" id=\"tab-content_1715\">\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane  in active \" id=\"tabs_desc_1715_1\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"c\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"c\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n#include &lt;stdio.h&gt;\r\n#define mod 1000000007\r\n#define ll long long int\r\nint parent(int i)\r\n{\r\nreturn (i-1)\/2;\r\n}\r\nint left(int i)\r\n{\r\nreturn (i*2)+1;\r\n\r\n}\r\nint right(int i)\r\n{\r\nreturn (i*2)+2;\r\n}\r\nvoid swap(ll *a,ll *b)\r\n{\r\nll temp = *a;\r\n*a = *b;\r\n*b = temp;\r\n}\r\nvoid insert(ll heap[],int *size, ll val)\r\n{\r\nheap[*size] = val;\r\nint i = *size;\r\n(*size)++;\r\nwhile(i!=0 &amp;&amp; heap[parent(i)]&lt;heap[i])\r\n{\r\nswap(&amp;heap[parent(i)],&amp;heap[i]);\r\ni = parent(i);\r\n}\r\n\r\n}\r\nvoid heapify(ll heap[],int i,int size)\r\n{\r\nint l = left(i);\r\nint r = right(i);\r\nint s = i;\r\nif(l&lt;size &amp;&amp; heap[l]&gt;heap[i])\r\ns = l;\r\nif(r&lt;size &amp;&amp; heap[r]&gt;heap[s])\r\ns = r;\r\nif(s!=i)\r\n{\r\nswap(&amp;heap[i],&amp;heap[s]);\r\nheapify(heap,s,size);\r\n}\r\n\r\n}\r\nll extract(ll heap[],int *size)\r\n{\r\nll root = heap[0];\r\nheap[0] = heap[(*size)-1];\r\n(*size)--;\r\nheapify(heap,0,*size);\r\nreturn root;\r\n}\r\nint main()\r\n{\r\nint t;\r\nscanf(&quot;%d&quot;,&amp;t);\r\nwhile(t--)\r\n{\r\nint n;\r\nscanf(&quot;%d&quot;,&amp;n);\r\nll *heap =(ll *)malloc(sizeof(ll)*n);\r\nint size=0;\r\nfor(int i=0;i&lt;n;i++)\r\n     {\r\n     ll t;\r\n     scanf(&quot;%lld&quot;,&amp;t);\r\n     insert(heap,&amp;size,t);\r\n     }\r\n\r\n     while(--n)\r\n     {\r\n\r\n     ll p = extract(heap,&amp;size);\r\n     ll q = extract(heap,&amp;size);\r\n     ll ans = ((p*3)%mod - (q*2)%mod)%mod;\r\n     insert(heap,&amp;size,ans);\r\n     }\r\n     printf(&quot;%lld&#92;n&quot;,heap[0]);\r\n}\r\n\r\nreturn 0;\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\r\n\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_1715_2\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"cpp\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"cpp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\n#include &lt;bits\/stdc++.h&gt;\r\nusing namespace std;\r\nint parent(int i)\r\n{\r\n     return (i-1)\/2;\r\n}\r\nint left(int i)\r\n{\r\n     return (i*2)+1;\r\n}\r\nint right(int i)\r\n{\r\n     return (i*2)+2;\r\n}\r\nvoid swap(int *a,int *b)\r\n{\r\n     int temp = *a;\r\n     *a = *b;\r\n     *b = temp;\r\n}\r\nvoid insert(int heap[],int *size, int val)\r\n{\r\n     heap[*size]= val;\r\n     int i = *size;\r\n     (*size)++;\r\n     while(i!=0 &amp;&amp; heap[parent(i)]&gt;heap[i])\r\n     {\r\n     swap(&amp;heap[parent(i)],&amp;heap[i]);\r\n     i = parent(i);\r\n     }\r\n}\r\nvoid heapify(int heap[],int i,int size)\r\n{\r\n     int l = left(i);\r\n     int r = right(i);\r\n     int lar = i;\r\n     if(lar&lt;size &amp;&amp; heap[l]&lt;heap[i])\r\n        lar = l;\r\n     if(r&lt;size &amp;&amp; heap[r]&lt;heap[lar])\r\n        lar = r;\r\n     if(lar!=i)\r\n     {\r\n     swap(&amp;heap[i],&amp;heap[lar]);\r\n     heapify(heap,lar,size);\r\n     }\r\n}\r\nint extract(int heap[],int *size)\r\n{\r\n     int root = heap[0];\r\n     heap[0] = heap[*size-1];\r\n     (*size)--;\r\n     heapify(heap,0,*size);\r\n     return root;\r\n}\r\n int main()\r\n {\r\n   int t;\r\n   cin&gt;&gt;t;\r\n   while(t--)\r\n   {\r\n   int n,k;\r\n   cin&gt;&gt;n&gt;&gt;k;\r\n   int *heap = (int *)malloc(sizeof(int)*n);\r\n   int size = 0;\r\n   for(int i=0;i&lt;n;i++)\r\n   {\r\n   int t;\r\n   cin&gt;&gt;t;\r\n   insert(heap,&amp;size,t);\r\n   }\r\n    while(size&gt;1)\r\n    {\r\n\r\n     ll p = extract(heap,&amp;size);\r\n     ll q = extract(heap,&amp;size);\r\n     ll ans = ((p*3)%mod - (q*2)%mod)%mod;\r\n     insert(heap,&amp;size,ans);\r\n    }\r\n   cout&lt;&lt;heap[0]&lt;&lt;endl;\r\n   }\r\n   return 0;\r\n }\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\t\t\t\t\t <div role=\"tabpanel\" class=\"tab-pane \" id=\"tabs_desc_1715_3\">\r\n\t\t\t\t\t\t\t\t<!-- wp:enlighter\/codeblock {\"language\":\"java\"} -->\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"java\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">\r\nimport java.util.*;\r\nimport java.io.*;\r\n\r\n\r\npublic class Main {\r\n    public static void main(String args[]) throws IOException {\r\n\r\n        Scanner sc=new Scanner(System.in);\r\n        int t=sc.nextInt();\r\n        int mod=1000000007;\r\n        while(t--&gt;0){\r\n            int size=sc.nextInt();\r\n            long[] arr=new long[size+1];\r\n            arr[0]=Integer.MIN_VALUE;\r\n            for(int i=1;i&lt;=size;i++){\r\n                int temp=sc.nextInt();\r\n                insert(arr,i,temp);\r\n\r\n            }\r\n            build(arr,size);\r\n            while(size&gt;1){\r\n                if(size==2){\r\n                    long P=arr[1];\r\n                    long Q=arr[2];\r\n                    long opt=(P*3-Q*2)%mod;\r\n                    arr[1]=opt;\r\n                    size--;\r\n                }\r\n                else{\r\n                    long P=extract(arr,size--);\r\n                    long Q=extract(arr,size--);\r\n                    long opt=(P*3-Q*2)%mod;\r\n                    insert(arr,++size,opt);\r\n                    \/\/build(arr,size);\r\n                }\r\n\r\n            }\r\n            System.out.println(arr[1]);\r\n\r\n        }\r\n    }\r\n    static void max_heap(long[] arr, int i,int size){\r\n        if(isLeaf(i,size)) return;\r\n        int right=i*2+1;\r\n        int left=i*2;\r\n        if(right&lt;=size){\r\n            if(arr[i]&gt;=arr[right]&amp;&amp;arr[i]&gt;=arr[left]) return;\r\n        }\r\n        else{\r\n            if(left&lt;=size&amp;&amp;arr[i]&gt;=arr[left]) return;\r\n        }\r\n        int largest=i;\r\n        if(left&lt;=size&amp;&amp;arr[largest]&lt;arr[left]) largest=left;\r\n        if(right&lt;=size&amp;&amp;arr[largest]&lt;arr[right]) largest=right;\r\n        if(largest!=i) swap(arr,largest,i);\r\n        max_heap(arr,largest,size);\r\n    }\r\n    static boolean isLeaf(int i,int size){\r\n        if(i&gt;size\/2&amp;&amp;i&lt;=size) return true;\r\n        else return false;\r\n    }\r\n    static void swap(long[] arr,int i, int j){\r\n        long temp=arr[i];\r\n        arr[i]=arr[j];\r\n        arr[j]=temp;\r\n    }\r\n    static void insert(long[] arr, int i,long value){\r\n        arr[i]=value;\r\n        int k=i;\r\n        while(k&gt;1&amp;&amp;arr[k]&gt;arr[k\/2]){\r\n            swap(arr,k,k\/2);\r\n            k=k\/2;\r\n        }\r\n    }\r\n    static void build(long[] arr, int size){\r\n        int non_leaf=size\/2;\r\n        for(int i=non_leaf;i&gt;0;i--) max_heap(arr,i,size);\r\n    }\r\n    static long extract(long[] arr,int size){\r\n        long temp=arr[1];\r\n        swap(arr,1,size);\r\n        max_heap(arr,1,size-1);\r\n        return temp;\r\n    }\r\n}\r\n<\/pre>\r\n<!-- \/wp:enlighter\/codeblock -->\r\n\t\t\t\t\t\t <\/div>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t <\/div>\r\n\t\t\t\t\t \r\n\t\t\t\t <\/div>\r\n <script>\r\n\t\tjQuery(function () {\r\n\t\t\tjQuery('#myTab_1715 a:first').tab('show')\r\n\t\t});\r\n\t\t\r\n\t\t\t\tjQuery(function(){\r\n\t\t\tvar b=\"fadeIn\";\r\n\t\t\tvar c;\r\n\t\t\tvar a;\r\n\t\t\td(jQuery(\"#myTab_1715 a\"),jQuery(\"#tab-content_1715\"));function d(e,f,g){\r\n\t\t\t\te.click(function(i){\r\n\t\t\t\t\ti.preventDefault();\r\n\t\t\t\t\tjQuery(this).tab(\"show\");\r\n\t\t\t\t\tvar h=jQuery(this).data(\"easein\");\r\n\t\t\t\t\tif(c){c.removeClass(a);}\r\n\t\t\t\t\tif(h){f.find(\"div.active\").addClass(\"animated \"+h);a=h;}\r\n\t\t\t\t\telse{if(g){f.find(\"div.active\").addClass(\"animated \"+g);a=g;}else{f.find(\"div.active\").addClass(\"animated \"+b);a=b;}}c=f.find(\"div.active\");\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\r\n\t\tfunction do_resize(){\r\n\r\n\t\t\tvar width=jQuery( '.tab-content .tab-pane iframe' ).width();\r\n\t\t\tvar height=jQuery( '.tab-content .tab-pane iframe' ).height();\r\n\r\n\t\t\tvar toggleSize = true;\r\n\t\t\tjQuery('iframe').animate({\r\n\t\t\t    width: toggleSize ? width : 640,\r\n\t\t\t    height: toggleSize ? height : 360\r\n\t\t\t  }, 250);\r\n\r\n\t\t\t  toggleSize = !toggleSize;\r\n\t\t}\r\n\r\n\r\n\t<\/script>\r\n\t\t\t\t\r\n\t\t\t\n<p>[forminator_quiz id=&quot;1719&quot;]<\/p>\n<p>This article tried to discuss <strong>Heap<\/strong>. Hope this blog helps you understand and solve the problem. To practice more problems on Heap you can check out <a href=\"#\"><\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Concepts Used Heap Difficulty Level Medium Problem Statement : Given an array A of size N, we have to perform following operations, untill only one integer remains (N-1 times) : Select two elements P and Q from the array A where P is the maximum and Q is the second maximum element. Delete the chosen [&hellip;]<\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[131],"tags":[],"class_list":["post-1708","post","type-post","status-publish","format-standard","hentry","category-heap"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Heap | Fascinating Multiple Number | Prepbytes<\/title>\n<meta name=\"description\" content=\"To Get the First Two Maximum Numbers We Can Create Max-heap of the Elements of the Array and Extract Two Elements Perform the Operations, Then Insert the New Value to the Max-heap.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Heap | Fascinating Multiple Number | Prepbytes\" \/>\n<meta property=\"og:description\" content=\"To Get the First Two Maximum Numbers We Can Create Max-heap of the Elements of the Array and Extract Two Elements Perform the Operations, Then Insert the New Value to the Max-heap.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/\" \/>\n<meta property=\"og:site_name\" content=\"PrepBytes Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prepbytes0211\/\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-01T09:37:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-03-28T01:33:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645098878183-Article_312.png\" \/>\n<meta name=\"author\" content=\"Prepbytes\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Prepbytes\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/\"},\"author\":{\"name\":\"Prepbytes\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\"},\"headline\":\"Fascinating Multiple Number\",\"datePublished\":\"2020-07-01T09:37:56+00:00\",\"dateModified\":\"2022-03-28T01:33:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/\"},\"wordCount\":544,\"commentCount\":0,\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645098878183-Article_312.png\",\"articleSection\":[\"Heap\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/\",\"url\":\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/\",\"name\":\"Heap | Fascinating Multiple Number | Prepbytes\",\"isPartOf\":{\"@id\":\"http:\/\/43.205.93.38\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645098878183-Article_312.png\",\"datePublished\":\"2020-07-01T09:37:56+00:00\",\"dateModified\":\"2022-03-28T01:33:55+00:00\",\"description\":\"To Get the First Two Maximum Numbers We Can Create Max-heap of the Elements of the Array and Extract Two Elements Perform the Operations, Then Insert the New Value to the Max-heap.\",\"breadcrumb\":{\"@id\":\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#primaryimage\",\"url\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645098878183-Article_312.png\",\"contentUrl\":\"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645098878183-Article_312.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"http:\/\/43.205.93.38\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Heap\",\"item\":\"https:\/\/prepbytes.com\/blog\/category\/heap\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Fascinating Multiple Number\"}]},{\"@type\":\"WebSite\",\"@id\":\"http:\/\/43.205.93.38\/#website\",\"url\":\"http:\/\/43.205.93.38\/\",\"name\":\"PrepBytes Blog\",\"description\":\"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING\",\"publisher\":{\"@id\":\"http:\/\/43.205.93.38\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"http:\/\/43.205.93.38\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"http:\/\/43.205.93.38\/#organization\",\"name\":\"Prepbytes\",\"url\":\"http:\/\/43.205.93.38\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"contentUrl\":\"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp\",\"width\":160,\"height\":160,\"caption\":\"Prepbytes\"},\"image\":{\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/prepbytes0211\/\",\"https:\/\/www.instagram.com\/prepbytes\/\",\"https:\/\/www.linkedin.com\/company\/prepbytes\/\",\"https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA\"]},{\"@type\":\"Person\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e\",\"name\":\"Prepbytes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"http:\/\/43.205.93.38\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g\",\"caption\":\"Prepbytes\"},\"url\":\"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Heap | Fascinating Multiple Number | Prepbytes","description":"To Get the First Two Maximum Numbers We Can Create Max-heap of the Elements of the Array and Extract Two Elements Perform the Operations, Then Insert the New Value to the Max-heap.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/","og_locale":"en_US","og_type":"article","og_title":"Heap | Fascinating Multiple Number | Prepbytes","og_description":"To Get the First Two Maximum Numbers We Can Create Max-heap of the Elements of the Array and Extract Two Elements Perform the Operations, Then Insert the New Value to the Max-heap.","og_url":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/","og_site_name":"PrepBytes Blog","article_publisher":"https:\/\/www.facebook.com\/prepbytes0211\/","article_published_time":"2020-07-01T09:37:56+00:00","article_modified_time":"2022-03-28T01:33:55+00:00","og_image":[{"url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645098878183-Article_312.png","type":"","width":"","height":""}],"author":"Prepbytes","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Prepbytes","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#article","isPartOf":{"@id":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/"},"author":{"name":"Prepbytes","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e"},"headline":"Fascinating Multiple Number","datePublished":"2020-07-01T09:37:56+00:00","dateModified":"2022-03-28T01:33:55+00:00","mainEntityOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/"},"wordCount":544,"commentCount":0,"publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645098878183-Article_312.png","articleSection":["Heap"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/","url":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/","name":"Heap | Fascinating Multiple Number | Prepbytes","isPartOf":{"@id":"http:\/\/43.205.93.38\/#website"},"primaryImageOfPage":{"@id":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#primaryimage"},"image":{"@id":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#primaryimage"},"thumbnailUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645098878183-Article_312.png","datePublished":"2020-07-01T09:37:56+00:00","dateModified":"2022-03-28T01:33:55+00:00","description":"To Get the First Two Maximum Numbers We Can Create Max-heap of the Elements of the Array and Extract Two Elements Perform the Operations, Then Insert the New Value to the Max-heap.","breadcrumb":{"@id":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#primaryimage","url":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645098878183-Article_312.png","contentUrl":"https:\/\/prepbytes-misc-images.s3.ap-south-1.amazonaws.com\/assets\/1645098878183-Article_312.png"},{"@type":"BreadcrumbList","@id":"https:\/\/prepbytes.com\/blog\/fascinating-multiple-number\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"http:\/\/43.205.93.38\/"},{"@type":"ListItem","position":2,"name":"Heap","item":"https:\/\/prepbytes.com\/blog\/category\/heap\/"},{"@type":"ListItem","position":3,"name":"Fascinating Multiple Number"}]},{"@type":"WebSite","@id":"http:\/\/43.205.93.38\/#website","url":"http:\/\/43.205.93.38\/","name":"PrepBytes Blog","description":"ONE-STOP RESOURCE FOR EVERYTHING RELATED TO CODING","publisher":{"@id":"http:\/\/43.205.93.38\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"http:\/\/43.205.93.38\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"http:\/\/43.205.93.38\/#organization","name":"Prepbytes","url":"http:\/\/43.205.93.38\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/","url":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","contentUrl":"https:\/\/blog.prepbytes.com\/wp-content\/uploads\/2025\/07\/uzxxllgloialmn9mhwfe.webp","width":160,"height":160,"caption":"Prepbytes"},"image":{"@id":"http:\/\/43.205.93.38\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/prepbytes0211\/","https:\/\/www.instagram.com\/prepbytes\/","https:\/\/www.linkedin.com\/company\/prepbytes\/","https:\/\/www.youtube.com\/channel\/UC0xGnHDrjUM1pDEK2Ka5imA"]},{"@type":"Person","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/3f7dc4ae851791d5947a7f99df363d5e","name":"Prepbytes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"http:\/\/43.205.93.38\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/232042cd1a1ea0e982c96d2a2ec93fb70a8e864e00784491231e7bfe5a9e06b5?s=96&d=mm&r=g","caption":"Prepbytes"},"url":"https:\/\/prepbytes.com\/blog\/author\/gourav-jaincollegedekho-com\/"}]}},"_links":{"self":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/comments?post=1708"}],"version-history":[{"count":10,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1708\/revisions"}],"predecessor-version":[{"id":8277,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/posts\/1708\/revisions\/8277"}],"wp:attachment":[{"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/media?parent=1708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/categories?post=1708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prepbytes.com\/blog\/wp-json\/wp\/v2\/tags?post=1708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}