面试题 17.24
Last updated
Was this helpful?
Last updated
Was this helpful?
Given an NxN matrix of positive and negative integers, write code to find the submatrix with the largest possible sum.
Return an array [r1, c1, r2, c2], where r1, c1 are the row number and the column number of the submatrix's upper left corner respectively, and r2, c2 are the row number of and the column number of lower right corner. If there are more than one answers, return any one of them.
Note: This problem is slightly different from the original one in the book.
Example:
Input: [ [-1,0], [0,-1] ] Output: [0,1,0,1] Note:
1 <= matrix.length, matrix[0].length <= 200
dynamic programming O(mn2)
reference:
Based on solution in problem 53
The maximum sum of subarray in a 1d-array can be calculated in O(n)
time.
For this 2d problem, we iterate over all possible combination of top/bottom(r1, r2) rows in O(n2)
time, then given the sum(1d) of each column in this region, we can find the maximum sum of subarrays(c1, c2) which defines a submatrix as matrix[r1:r2][c1:c2]
.