• + 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