Pages

Wednesday, April 9, 2025

Trapping Rainwater Problem in C++

#include<iostream>
#include <climits>

using namespace std;

// Trapping Rainwater

int trap(int *heights, int n) {
    int leftMax[20000], rightMax[20000];
    leftMax[0] = heights[0];
    rightMax[n-1] = heights[n-1];

   

    for(int i = 1; i<n; i++) {
        leftMax[i] = max(leftMax[i-1], heights[i-1]);

    }

    for (int i = n-2; i >= 0; i--) {
        rightMax[i] = max(rightMax[i+1], heights[i+1]);
   
    }
    int waterTrapped = 0;
    for(int i = 0; i<n; i++) {
        int currWater = min(leftMax[i], rightMax[i]) - heights[i];
        if(currWater > 0) {
            waterTrapped += currWater;
        }
    }  
   
    cout << "water trapped = " << waterTrapped << endl;;
    return waterTrapped;
}


int main(){
    int heights[7] = {4, 2, 0, 6, 3, 2, 5};
    int n = sizeof(heights) / sizeof(int);
   

    trap(heights, n);

    return 0;
}

OUTPUT-
water trapped = 11

No comments:

Post a Comment

Multi-dimensional ArrayList in Java

  // import java.util.ArrayList; import java.util. * ; // import java.util.Collections; public class Classroom {     public static voi...