清河网站建设设计,wordpress编辑器失效,网站域名查询网址,电脑如何做网页1. 题目
在 N * N 的网格中#xff0c;我们放置了一些与 x#xff0c;y#xff0c;z 三轴对齐的 1 * 1 * 1 立方体。
每个值 v grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。
现在#xff0c;我们查看这些立方体在 xy、yz 和 zx 平面上的投影。
投影就像影子我们放置了一些与 xyz 三轴对齐的 1 * 1 * 1 立方体。
每个值 v grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。
现在我们查看这些立方体在 xy、yz 和 zx 平面上的投影。
投影就像影子将三维形体映射到一个二维平面上。
在这里从顶部、前面和侧面看立方体时我们会看到“影子”。
返回所有三个投影的总面积。
示例 1
输入[[2]]
输出5示例 2
输入[[1,2],[3,4]]
输出17
解释
这里有该形体在三个轴对齐平面上的三个投影(“阴影部分”)。示例 3
输入[[1,0],[0,2]]
输出8示例 4
输入[[1,1,1],[1,0,1],[1,1,1]]
输出14示例 5
输入[[2,2,2],[2,1,2],[2,2,2]]
输出21提示
1 grid.length grid[0].length 50
0 grid[i][j] 50来源力扣LeetCode 链接https://leetcode-cn.com/problems/projection-area-of-3d-shapes 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
底视图不为0的个数另外两个视图行或者列的最大值
class Solution {
public:int projectionArea(vectorvectorint grid) {int bot 0, left 0, front 0, i, j;for(i 0; i grid.size(); i){for(j 0; j grid[0].size(); j){if(grid[i][j] ! 0)bot;//底部不为0 就有}}int max;for(i 0; i grid.size(); i){max 0;for(j 0; j grid[0].size(); j){if(grid[i][j] max)max grid[i][j];//每行的最大值}left max;}for(j 0; j grid[0].size(); j){max 0;for(i 0; i grid.size(); i){if(grid[i][j] max)max grid[i][j];//每列的最大值}front max;}return frontleftbot;}
};4 ms 9.2 MB
优化一次遍历
class Solution {
public:int projectionArea(vectorvectorint grid) {int i, j, ans 0, s1 0, s2 0;for(i 0; i grid.size(); i) {s1 s2 0;for(j 0; j grid.size(); j) {if(grid[i][j] 0) ans; //底视图s1 max(s1, grid[i][j]);//行最大s2 max(s2, grid[j][i]);//列最大}ans s1 s2;}return ans;}
};