Skip to content

Commit ce9ec2b

Browse files
authored
2022-08-27 update: added "Max Sum of Rectangle No Larger Than K" (#75)
* 2022-08-27 update: added "Max Sum of Rectangle No Larger Than K" * 2022-08-27 update: added "Max Sum of Rectangle No Larger Than K"
1 parent b8fd747 commit ce9ec2b

File tree

3 files changed

+63
-0
lines changed

3 files changed

+63
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Soon.
3232
| 233. Number of Digit One | [Link](https://leetcode.com/problems/number-of-digit-one/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/NumberOfDigitOne.java) |
3333
| 239. Sliding Window Maximum | [Link](https://leetcode.com/problems/sliding-window-maximum/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/SlidingWindowMaximum.java) |
3434
| 297. Serialize and Deserialize Binary Tree | [Link](https://leetcode.com/problems/serialize-and-deserialize-binary-tree/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/SerializeAndDeserializeBinaryTree.java) |
35+
| 363. Max Sum of Rectangle No Larger Than K | [Link](https://leetcode.com/problems/max-sum-of-rectangle-no-larger-than-k/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/MaxSumOfRectangleNoLargerThanK.java) |
3536
| 458. Poor Pigs | [Link](https://leetcode.com/problems/poor-pigs/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/PoorPigs.java) |
3637
| 871. Minimum Number of Refueling Stops | [Link](https://leetcode.com/problems/minimum-number-of-refueling-stops/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/MinimumNumberOfRefuelingStops.java) |
3738
| 936. Stamping The Sequence | [Link](https://leetcode.com/problems/stamping-the-sequence/) | [Link](./src/main/java/com/smlnskgmail/jaman/leetcodejava/hard/StampingTheSequence.java) |
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.smlnskgmail.jaman.leetcodejava.hard;
2+
3+
// https://leetcode.com/problems/max-sum-of-rectangle-no-larger-than-k/
4+
public class MaxSumOfRectangleNoLargerThanK {
5+
6+
private final int[][] matrix;
7+
private final int k;
8+
9+
public MaxSumOfRectangleNoLargerThanK(int[][] matrix, int k) {
10+
this.matrix = matrix;
11+
this.k = k;
12+
}
13+
14+
public int solution() {
15+
int m = matrix.length;
16+
int n = matrix[0].length;
17+
int[][] dp = new int[m + 1][n + 1];
18+
for (int i = 1; i <= m; i++) {
19+
for (int j = 1; j <= n; j++) {
20+
dp[i][j] = dp[i][j - 1] + dp[i - 1][j] - dp[i - 1][j - 1] + matrix[i - 1][j - 1];
21+
}
22+
}
23+
int result = Integer.MIN_VALUE;
24+
for (int i = 0; i < m; i++) {
25+
for (int j = 0; j < n; j++) {
26+
for (int a = i + 1; a <= m; a++) {
27+
for (int b = j + 1; b <= n; b++) {
28+
int temp = dp[a][b] - dp[a][j] - dp[i][b] + dp[i][j];
29+
if (temp <= k) {
30+
if (temp == k) {
31+
return k;
32+
}
33+
result = Math.max(result, temp);
34+
}
35+
}
36+
}
37+
}
38+
}
39+
return result;
40+
}
41+
42+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.smlnskgmail.jaman.leetcodejava.hard;
2+
3+
import org.junit.Test;
4+
5+
import static org.junit.Assert.assertEquals;
6+
7+
public class MaxSumOfRectangleNoLargerThanKTest {
8+
9+
@Test
10+
public void defaultTest() {
11+
assertEquals(
12+
2,
13+
new MaxSumOfRectangleNoLargerThanK(
14+
new int[][]{{1, 0, 1}, {0, -2, 3}},
15+
2
16+
).solution()
17+
);
18+
}
19+
20+
}

0 commit comments

Comments
 (0)