标签:max 每日 len 力扣 grid 101 col row
仅以此纪录每日LootCode所刷题目
题目描述:
示例:
思路:
这个题如果读懂了,思路还是比较简单的,话不多说直接上图:
当时做题是中文版的,没有这张图想了好久。做完之后才发现英文版里有图...其实这个就是从四周看我们只能看到每行每列最高的建筑物,我们可以随意增加建筑物的高度,只要不改变我们所能看到的最高的高度即可。
在代码中,我首先将行和列的最高高度放在了两个数组里,之后合并在一起,从这些最高高度中的最低高度开始(有点绕口,但确是如此,如果不从他们中的最低高度开始,就与改变天际线),将最低高度所对应的行或者列的高度补齐,之后将这一行或者列的高度设为101,这样之后补齐别的行或者列的时候就不会涉及到已经补齐过的位置。补齐的高度差值使用count记录下来。
代码:
class Solution:
def maxIncreaseKeepingSkyline(self, grid: List[List[int]]) -> int:
count = 0
max_col = []
max_row = []
for i in range(len(grid)):
max_row.append(max(grid[i]))
for i in range(len(grid)):
col = []
for j in range(len(grid[0])):
col.append(grid[j][i])
max_col.append(max(col))
max_all = sorted(max_row + max_col)
for i in range(len(max_all)):
if max_all[i] in max_row:
a = max_row.index(max_all[i])
for j in range(len(grid[0])):
if grid[a][j] != 101:
count += (max_all[i] - grid[a][j])
grid[a][j] = 101
max_row[a] = 101
else:
b = max_col.index(max_all[i])
for k in range(len(grid)):
if grid[k][b] != 101:
count += (max_all[i] - grid[k][b])
grid[k][b] = 101
max_col[b] = 101
return count
标签:max,每日,len,力扣,grid,101,col,row 来源: https://blog.csdn.net/touxing777/article/details/121902021
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。