Skip to content

Commit c8414c1

Browse files
committed
feat: add kotlin solution to lc problem: No.2132
1 parent 7ffd30e commit c8414c1

File tree

3 files changed

+221
-4
lines changed

3 files changed

+221
-4
lines changed

solution/2100-2199/2132.Stamping the Grid/README.md

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,8 @@ tags:
5151

5252
<p><img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/solution/2100-2199/2132.Stamping%20the%20Grid/images/ex2.png" style="width: 170px; height: 179px;"></p>
5353

54-
<pre><b>输入:</b>grid = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]], stampHeight = 2, stampWidth = 2
55-
<b>输出:</b>false
54+
<pre><b>输入:</b>grid = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]], stampHeight = 2, stampWidth = 2
55+
<b>输出:</b>false
5656
<b>解释:</b>没办法放入邮票覆盖所有的空格子,且邮票不超出网格图以外。
5757
</pre>
5858

@@ -400,6 +400,80 @@ var possibleToStamp = function (grid, stampHeight, stampWidth) {
400400
};
401401
```
402402

403+
#### Kotlin
404+
405+
```kotlin
406+
class Solution {
407+
fun possibleToStamp(grid: Array<IntArray>, stampHeight: Int, stampWidth: Int): Boolean {
408+
val m = grid.size
409+
val n = grid[0].size
410+
411+
var prefix_sums_matrix = Array(m + 1) { IntArray(n + 1) }
412+
var diff_matrix = Array(m + 1) { IntArray(n + 1) }
413+
var sum_matrix = Array(m + 1) { IntArray(n + 1) }
414+
415+
for (i in 0..<m) {
416+
for (j in 0..<n) {
417+
prefix_sums_matrix[i + 1][j + 1] =
418+
prefix_sums_matrix[i + 1][j] +
419+
prefix_sums_matrix[i][j + 1] -
420+
prefix_sums_matrix[i][j] +
421+
grid[i][j]
422+
}
423+
}
424+
425+
for (i in 0..<m) {
426+
for (j in 0..<n) {
427+
if (grid[i][j] != 0) {
428+
continue
429+
}
430+
431+
val bottom = i + stampHeight
432+
val right = j + stampWidth
433+
434+
if (bottom > m || right > n) {
435+
continue
436+
}
437+
438+
val sum = prefix_sums_matrix[bottom][right] -
439+
prefix_sums_matrix[bottom][j] -
440+
prefix_sums_matrix[i][right] +
441+
prefix_sums_matrix[i][j]
442+
443+
if (sum == 0) {
444+
diff_matrix[i][j] += 1
445+
diff_matrix[bottom][right] += 1
446+
447+
diff_matrix[i][right] -= 1
448+
diff_matrix[bottom][j] -= 1
449+
}
450+
}
451+
}
452+
453+
for (i in 0..<m) {
454+
for (j in 0..<n) {
455+
if (grid[i][j] != 0) {
456+
continue
457+
}
458+
459+
val sum = sum_matrix[i][j + 1] +
460+
sum_matrix[i + 1][j] -
461+
sum_matrix[i][j] +
462+
diff_matrix[i][j]
463+
464+
if (sum == 0) {
465+
return false
466+
}
467+
468+
sum_matrix[i + 1][j + 1] = sum
469+
}
470+
}
471+
472+
return true
473+
}
474+
}
475+
```
476+
403477
<!-- tabs:end -->
404478

405479
<!-- solution:end -->

solution/2100-2199/2132.Stamping the Grid/README_EN.md

Lines changed: 76 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,8 @@ tags:
4848
<p><strong class="example">Example 2:</strong></p>
4949
<img alt="" src="https://fastly.jsdelivr.net/gh/doocs/leetcode@main/solution/2100-2199/2132.Stamping%20the%20Grid/images/ex2.png" style="width: 170px; height: 179px;" />
5050
<pre>
51-
<strong>Input:</strong> grid = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]], stampHeight = 2, stampWidth = 2
52-
<strong>Output:</strong> false
51+
<strong>Input:</strong> grid = [[1,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,1]], stampHeight = 2, stampWidth = 2
52+
<strong>Output:</strong> false
5353
<strong>Explanation:</strong> There is no way to fit the stamps onto all the empty cells without the stamps going outside the grid.
5454
</pre>
5555

@@ -396,6 +396,80 @@ var possibleToStamp = function (grid, stampHeight, stampWidth) {
396396
};
397397
```
398398

399+
#### Kotlin
400+
401+
```kotlin
402+
class Solution {
403+
fun possibleToStamp(grid: Array<IntArray>, stampHeight: Int, stampWidth: Int): Boolean {
404+
val m = grid.size
405+
val n = grid[0].size
406+
407+
var prefix_sums_matrix = Array(m + 1) { IntArray(n + 1) }
408+
var diff_matrix = Array(m + 1) { IntArray(n + 1) }
409+
var sum_matrix = Array(m + 1) { IntArray(n + 1) }
410+
411+
for (i in 0..<m) {
412+
for (j in 0..<n) {
413+
prefix_sums_matrix[i + 1][j + 1] =
414+
prefix_sums_matrix[i + 1][j] +
415+
prefix_sums_matrix[i][j + 1] -
416+
prefix_sums_matrix[i][j] +
417+
grid[i][j]
418+
}
419+
}
420+
421+
for (i in 0..<m) {
422+
for (j in 0..<n) {
423+
if (grid[i][j] != 0) {
424+
continue
425+
}
426+
427+
val bottom = i + stampHeight
428+
val right = j + stampWidth
429+
430+
if (bottom > m || right > n) {
431+
continue
432+
}
433+
434+
val sum = prefix_sums_matrix[bottom][right] -
435+
prefix_sums_matrix[bottom][j] -
436+
prefix_sums_matrix[i][right] +
437+
prefix_sums_matrix[i][j]
438+
439+
if (sum == 0) {
440+
diff_matrix[i][j] += 1
441+
diff_matrix[bottom][right] += 1
442+
443+
diff_matrix[i][right] -= 1
444+
diff_matrix[bottom][j] -= 1
445+
}
446+
}
447+
}
448+
449+
for (i in 0..<m) {
450+
for (j in 0..<n) {
451+
if (grid[i][j] != 0) {
452+
continue
453+
}
454+
455+
val sum = sum_matrix[i][j + 1] +
456+
sum_matrix[i + 1][j] -
457+
sum_matrix[i][j] +
458+
diff_matrix[i][j]
459+
460+
if (sum == 0) {
461+
return false
462+
}
463+
464+
sum_matrix[i + 1][j + 1] = sum
465+
}
466+
}
467+
468+
return true
469+
}
470+
}
471+
```
472+
399473
<!-- tabs:end -->
400474

401475
<!-- solution:end -->
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
class Solution {
2+
fun possibleToStamp(grid: Array<IntArray>, stampHeight: Int, stampWidth: Int): Boolean {
3+
val m = grid.size
4+
val n = grid[0].size
5+
6+
var prefix_sums_matrix = Array(m + 1) { IntArray(n + 1) }
7+
var diff_matrix = Array(m + 1) { IntArray(n + 1) }
8+
var sum_matrix = Array(m + 1) { IntArray(n + 1) }
9+
10+
for (i in 0..<m) {
11+
for (j in 0..<n) {
12+
prefix_sums_matrix[i + 1][j + 1] =
13+
prefix_sums_matrix[i + 1][j] +
14+
prefix_sums_matrix[i][j + 1] -
15+
prefix_sums_matrix[i][j] +
16+
grid[i][j]
17+
}
18+
}
19+
20+
for (i in 0..<m) {
21+
for (j in 0..<n) {
22+
if (grid[i][j] != 0) {
23+
continue
24+
}
25+
26+
val bottom = i + stampHeight
27+
val right = j + stampWidth
28+
29+
if (bottom > m || right > n) {
30+
continue
31+
}
32+
33+
val sum = prefix_sums_matrix[bottom][right] -
34+
prefix_sums_matrix[bottom][j] -
35+
prefix_sums_matrix[i][right] +
36+
prefix_sums_matrix[i][j]
37+
38+
if (sum == 0) {
39+
diff_matrix[i][j] += 1
40+
diff_matrix[bottom][right] += 1
41+
42+
diff_matrix[i][right] -= 1
43+
diff_matrix[bottom][j] -= 1
44+
}
45+
}
46+
}
47+
48+
for (i in 0..<m) {
49+
for (j in 0..<n) {
50+
if (grid[i][j] != 0) {
51+
continue
52+
}
53+
54+
val sum = sum_matrix[i][j + 1] +
55+
sum_matrix[i + 1][j] -
56+
sum_matrix[i][j] +
57+
diff_matrix[i][j]
58+
59+
if (sum == 0) {
60+
return false
61+
}
62+
63+
sum_matrix[i + 1][j + 1] = sum
64+
}
65+
}
66+
67+
return true
68+
}
69+
}

0 commit comments

Comments
 (0)