Sort by

recency

|

3693 Discussions

|

  • + 0 comments
    int hourglassSum(vector<vector<int>> arr) {
    vector<int>sums(16);
    
        int t=0;
    for(int i=0;i<16;i++){
       int j=i,c=i%4; 
       if(i%4==0&&i!=0)t++;
            for(int k=c;k<c+3;k++){
                sums[j]+=arr[t][k]+arr[t+2][k];
            }
            sums[i]+=arr[t+1][c+1];
    }
    int maxi=INT_MIN;
    for(int i=0;i<16;i++)if(maxi<sums[i])maxi=sums[i];
    return maxi;
    }
    
  • + 0 comments

    Python Sliding Window-esque approach

    def hourglassSum(arr):
        # determine a value outside of the smallest possible
        # hourglass sum and use as the starting max_sum
        min_arr_val = -9
        max_sum = (min_arr_val - 1) * 7
        
        max_hourglass_starting_index = 4
        
        for i in range(max_hourglass_starting_index):
            # get sum of initial hourglass for row i
            # top row sum, bottom row sum, center value
            curr_sum = sum(arr[i][:3]) + sum(arr[i + 2][:3]) + arr[i + 1][1]
            max_sum = max(max_sum, curr_sum)
            
            for j in range(1, max_hourglass_starting_index):
                # sliding window through columns 0-3
                # top row sum
                curr_sum -= arr[i][j - 1]
                curr_sum += arr[i][j + 2]
                
                # bottom row sum
                curr_sum -= arr[i + 2][j - 1]
                curr_sum += arr[i + 2][j + 2]
                
                # center value
                curr_sum -= arr[i + 1][j]
                curr_sum += arr[i + 1][j + 1]
                
                max_sum = max(max_sum, curr_sum) 
                
        return max_sum
    
  • + 0 comments
    const sum = (arr) => {
        return arr.reduce((acc, n) => acc + n, 0);
    }
    
    function hourglassSum(arr) {
        const results = [];
        
        for (let i = 0; i < 4; i++) {
            for (let j = 0; j < 4; j++) {
                const roi = [
                    [ arr[  i  ][  j  ],     arr[ i ][j+1],        arr[ i ][j+2]],
                    [                         arr[i+1][j+1],                      ],
                    [ arr[i+2][ j ],       arr[i+2][j+1],   arr[i+2][j+2]],
                ]                                    
                results.push(sum(roi.flat()));
            }
        }    
        return Math.max(...results);
    }
    
  • + 0 comments
    def hourglassSum(arr):
        # Write your code here
        sol=float("-inf")
        for i in range(len(arr)-2):
            for j in range(len(arr)-2):
                top=arr[i][j]+arr[i][j+1]+arr[i][j+2]
                middle=arr[i+1][j+1]
                bottom=arr[i+2][j]+arr[i+2][j+1]+arr[i+2][j+2]
                current_sol=top+middle+bottom
                if current_sol>sol:
                    sol=current_sol
        return sol
    
  • + 0 comments

    This is my CPP Solution what i did was traverse the 2D array in an hourglass form using 2 loops. As the last 2 indices of both i and j can't make an hourglass shape, so we run the loop till the first 4. int hourglassSum(vector> arr) { int maxSum=INT_MIN; int sum; for(int i=0;i<4;i++){ for(int j=0 ; j<4; j++){ sum = arr[i][j]+(arr[i][j+1])+(arr[i][j+2]) +(arr[i+1][j+1])+(arr[i+2][j])+(arr[i+2][j+1]) +(arr[i+2][j+2]); if(sum>maxSum) maxSum=sum; } } return maxSum; }