File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed
19 - Heap Data Structure Problems/06 - Merge Two Binary Max Heaps Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change 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+ };
You can’t perform that action at this time.
0 commit comments