Max Increase to Keep City Skyline(C++ 保持城市天际线) 谁践踏了优雅 2022-12-29 12:50 140阅读 0赞 解题思路: (1)求出该位置行最大值和列最大值中较小的那一个 (2)增加的高度即为(1)的值减去该位置的值 class Solution { public: int maxIncreaseKeepingSkyline(vector<vector<int>>& grid) { vector<int> row,col; for(int i=0;i<grid.size();i++) { auto maxPosition = max_element(grid[i].begin(), grid[i].end()); row.push_back(*maxPosition); } int max = 0; for(int i=0;i<grid[0].size();i++) { max = 0; for(int j=0;j<grid.size();j++) { if(grid[j][i]>max) max = grid[j][i]; } col.push_back(max); } //比较行列大小 int sum = 0; for(int i=0;i<grid.size();i++) { for(int j=0;j<grid[i].size();j++) { sum+=(min(row[i],col[j])-grid[i][j]); } } return sum; } };
还没有评论,来说两句吧...