力扣——883. 三维形体投影面积(Java、JavaScript、C实现)
JAVAJavaScript 实现 力扣 三维 面积 投影
2023-09-14 09:05:31 时间
- 三维形体投影面积
在 n x n 的网格 grid 中,我们放置了一些与 x,y,z 三轴对齐的 1 x 1 x 1 立方体。
每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上。
现在,我们查看这些立方体在 xy 、yz 和 zx 平面上的投影。
投影 就像影子,将 三维 形体映射到一个 二维 平面上。从顶部、前面和侧面看立方体时,我们会看到“影子”。
返回 所有三个投影的总面积 。
示例 1:
输入:[[1,2],[3,4]]
输出:17
解释:这里有该形体在三个轴对齐平面上的三个投影(“阴影部分”)。
示例 2:
输入:grid = [[2]]
输出:5
示例 3:
输入:[[1,0],[0,2]]
输出:8
Java代码1:
class Solution {
public int projectionArea(int[][] grid) {
int n = grid.length;
int xyArea = 0, yzArea = 0, zxArea = 0;
for (int i = 0; i < n; i++) {
int yzHeight = 0, zxHeight = 0;
for (int j = 0; j < n; j++) {
xyArea += grid[i][j] > 0 ? 1 : 0;
yzHeight = Math.max(yzHeight, grid[j][i]);
zxHeight = Math.max(zxHeight, grid[i][j]);
}
yzArea += yzHeight;
zxArea += zxHeight;
}
return xyArea + yzArea + zxArea;
}
}
Java代码2:
class Solution {
public int projectionArea(int[][] grid) {
int xy = 0, xz = 0, yz = 0;
for(int[] g: grid) {
int m = 0;
for(int v: g) {
m = Math.max(m, v);
if(v > 0)
xy++;
}
xz += m;
}
for(int col = 0; col < grid[0].length; col++) {
int m = 0;
for(int row = 0; row < grid.length; row++)
m = Math.max(m, grid[row][col]);
yz += m;
}
return xy + xz + yz;
}
}
JavaScript代码:
/**
* @param {number[][]} grid
* @return {number}
*/
var projectionArea = function(grid) {
let ans = 0
const n = grid.length
for (let i = 0; i < n; i ++) {
let max1 = 0
let max2 = 0
for (let j = 0; j < n; j ++) {
if (grid[i][j] > 0) {
ans ++
}
max1 = Math.max(max1, grid[i][j])
max2 = Math.max(max2, grid[j][i])
}
ans += max1
ans += max2
}
return ans
};
C代码:
int projectionArea(int** grid, int gridSize, int* gridColSize){
int sum=0;
int colNum=0;
for(int i=0;i<gridSize;i++){
colNum=fmax(colNum,gridColSize[i]);
}
int rowmax;
for(int i=0;i<gridSize;i++ ){
rowmax=0;
for(int j=0;j<gridColSize[i];j++){
if(grid[i][j]!=0){
rowmax=fmax(rowmax,grid[i][j]);
sum++;
}
}
sum+=rowmax;
}
for(int i=0;i<colNum;i++ ){
rowmax=0;
for(int j=0;j<gridSize;j++){
if(gridColSize[j]>i){
rowmax=fmax(rowmax,grid[j][i]);
}
}
sum+=rowmax;
}
return sum;
}
作者:KJ.JK
本文仅用于交流学习,未经作者允许,禁止转载,更勿做其他用途,违者必究。
文章对你有所帮助的话,欢迎给个赞或者 star,你的支持是对作者最大的鼓励,不足之处可以在评论区多多指正,交流学习
相关文章
- Java进阶(二十三)java中long类型转换为int类型
- java数组的声明_Java数组定义常用方法[通俗易懂]
- java反转数组_Java实现数组反转翻转的方法实例
- java webservice实现_JAVA WebService的实现方式
- Java web实现简登录页面(MyBatis+jsp+servlet+html+css+javascript)附源码「建议收藏」
- java url加密_Java实现url加密处理的方法示例
- JAVA读取csv文件_java读取csv文件某一列
- Java操作MySQL数据库快速入门(java访问mysql)
- 构建Java应用程序中Redis集群的方法(java连redis集群)
- Java连接MySQL:实现数据库操作(java中连接mysql)
- Exploring the Power of Java with MongoDB for Enhanced Data Management(java与mongodb)
- 在Linux上实现Java程序的运行(linux运行java程序)
- Oracle数据库中调用Java实现可扩展应用程序(oracle内嵌java)
- Java与Oracle联手赋能全新版本面世(java版本oracle)
- Java 离开 Oracle,新的旅程即将开始(java没有Oracle)
- 编程Oracle数据库中实现Java编程的突破之道(oracle使用java)
- 使用JavaScript实现Java的List功能(实例讲解)