Skip to content

Commit f477bee

Browse files
committed
solve problem Max Increase To Keep City Skyline
1 parent 5ad248f commit f477bee

File tree

5 files changed

+81
-0
lines changed

5 files changed

+81
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -259,6 +259,7 @@ All solutions will be accepted!
259259
|11|[Container With Most Water](https://leetcode-cn.com/problems/container-with-most-water/description/)|[java/py/js](./algorithms/ContainerWithMostWater)|Medium|
260260
|338|[Counting Bits](https://leetcode-cn.com/problems/counting-bits/description/)|[java/py/js](./algorithms/CountingBits)|Medium|
261261
|287|[Find The Duplicate Number](https://leetcode-cn.com/problems/find-the-duplicate-number/description/)|[java/py/js](./algorithms/FindTheDuplicateNumber)|Medium|
262+
|807|[Max Increase To Keep City Skyline](https://leetcode-cn.com/problems/max-increase-to-keep-city-skyline/description/)|[java/py/js](./algorithms/MaxIncreaseToKeepCitySkyline)|Medium|
262263

263264
# Database
264265
|#|Title|Solution|Difficulty|
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
# Max Increase To Keep City Skyline
2+
This problem is easy to solve
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
class Solution {
2+
public int maxIncreaseKeepingSkyline(int[][] grid) {
3+
int length = grid.length,
4+
count = 0;
5+
6+
int[] topSkyline = new int[length],
7+
leftSkyline = new int[length];
8+
9+
for (int i = 0; i < length; i++) {
10+
int skyline = 0;
11+
for (int j = 0; j < length; j++)
12+
skyline = Math.max(skyline, grid[i][j]);
13+
leftSkyline[i] = skyline;
14+
15+
skyline = 0;
16+
for (int j = 0; j < length; j++)
17+
skyline = Math.max(skyline, grid[j][i]);
18+
topSkyline[i] = skyline;
19+
}
20+
21+
for (int i = 0; i < length; i++)
22+
for (int j = 0; j < length; j++)
23+
count += Math.min(leftSkyline[i], topSkyline[j]) - grid[i][j];
24+
25+
return count;
26+
}
27+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
/**
2+
* @param {number[][]} grid
3+
* @return {number}
4+
*/
5+
var maxIncreaseKeepingSkyline = function(grid) {
6+
let length = grid.length,
7+
topSkyline = [],
8+
leftSkyline = [],
9+
count = 0
10+
11+
for (let i = 0; i < length; i++) {
12+
leftSkyline.push(Math.max(...grid[i]))
13+
14+
let skyline = 0
15+
for (let j = 0; j < length; j++)
16+
skyline = Math.max(skyline, grid[j][i])
17+
topSkyline.push(skyline)
18+
}
19+
20+
for (let i = 0; i < length; i++) {
21+
for (let j = 0; j < length; j++)
22+
count += Math.min(leftSkyline[i], topSkyline[j]) - grid[i][j]
23+
}
24+
25+
return count
26+
};
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
class Solution(object):
2+
def maxIncreaseKeepingSkyline(self, grid):
3+
"""
4+
:type grid: List[List[int]]
5+
:rtype: int
6+
"""
7+
length = len(grid)
8+
9+
top_skyline = []
10+
left_skyline = []
11+
12+
for i in xrange(length):
13+
left_skyline.append(max(grid[i]))
14+
15+
skyline = 0
16+
for j in xrange(length):
17+
skyline = max(skyline, grid[j][i])
18+
top_skyline.append(skyline)
19+
20+
count = 0
21+
for i in xrange(length):
22+
for j in xrange(length):
23+
count += min(left_skyline[i], top_skyline[j]) - grid[i][j]
24+
25+
return count

0 commit comments

Comments
 (0)