Skip to content

Commit 242673e

Browse files
authored
Create main.cpp
1 parent 7967e0f commit 242673e

File tree

1 file changed

+34
-0
lines changed
  • 19 - Heap Data Structure Problems/06 - Merge Two Binary Max Heaps

1 file changed

+34
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
class Solution{
2+
public:
3+
void maxHeapify(vector<int> &v, int n, int i){
4+
int largest = i;
5+
int leftIndex = 2 * i + 1;
6+
int rightIndex = 2 * i + 2;
7+
8+
if(leftIndex < n && v[largest] < v[leftIndex]) largest = leftIndex;
9+
if(rightIndex < n && v[largest] < v[rightIndex]) largest = rightIndex;
10+
11+
if(largest != i){
12+
swap(v[largest], v[i]);
13+
maxHeapify(v, n, largest);
14+
}
15+
}
16+
vector<int> mergeHeaps(vector<int> &a, vector<int> &b, int n, int m) {
17+
vector<int> mergeHeap(n + m);
18+
19+
for(int i = 0; i < n; i++){
20+
mergeHeap[i] = a[i];
21+
}
22+
23+
for(int i = 0; i < m; i++){
24+
mergeHeap[n+i] = b[i];
25+
}
26+
27+
for(int i = m+n / 2 -1; i >= 0; i--){
28+
29+
maxHeapify(mergeHeap, n+m, i);
30+
}
31+
32+
return mergeHeap;
33+
}
34+
};

0 commit comments

Comments
 (0)