关注
我觉得可以按位置去思考,对于每一个位置grid[i][j](假设其值为v)如果v大于0,则这个i,j位置必然会为整个立体的表面积贡献一个上面和下面;然后遍历它的合法四周grid[i'][j'](假设其值为neighbor)则这个i,j位置会为整个立体的表面积贡献max(v - neighbor, 0)个侧面。时间复杂度m*n。代码如下: public static void main(String[] args) {
int n = sc.nextInt();
int m = sc.nextInt();
int[][] grid = new int[n][m];
for(int i=0;i < n; i++){
for(int j=0; j < m; j++){
grid[i][j] = sc.nextInt();
}
}
int[] dx = new int[]{-1,0,1,0};
int[] dy = new int[]{0,1,0,-1};
int ans = 0;
for (int r = 0; r < n; ++r)
for (int c = 0; c < m; ++c)
if (grid[r][c] > 0) {
ans += 2;
for (int k = 0; k < 4; ++k) {
int nr = r + dx[k];
int nc = c + dy[k];
int nv = 0;
if (0 <= nr && nr < n && 0 <= nc && nc < m)
nv = grid[nr][nc];
ans += Math.max(grid[r][c] - nv, 0);
}
}
System.out.println( ans );
}
查看原帖
点赞 评论
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 简历第一个项目做什么 #
4605次浏览 70人参与
# 租房找室友 #
58207次浏览 240人参与
# MiniMax求职进展汇总 #
1569次浏览 25人参与
# 实习的你做了哪些离谱的工作 #
5712次浏览 87人参与
# 工作压力大,你会干什么? #
7155次浏览 194人参与
# 参加哪些竞赛对找工作有帮助? #
5513次浏览 109人参与
# AI让你的思考变深了还是变浅了? #
2731次浏览 85人参与
# 找实习记录 #
14840次浏览 282人参与
# 如果不上班,你会去做什么 #
3925次浏览 184人参与
# 携程工作体验 #
20706次浏览 79人参与
# 邪修省钱套路 #
4639次浏览 168人参与
# 学历对求职的影响 #
587739次浏览 4004人参与
# 为了入行xx岗,我学了__ #
3215次浏览 55人参与
# 我的付费上班经历 #
8805次浏览 149人参与
# 一上班就想____,这正常吗? #
13951次浏览 143人参与
# 如果再来一次,你还会选择这个工作吗? #
779991次浏览 6264人参与
# 职场上哪些行为很加分? #
314311次浏览 3549人参与
# 如何KTV领导 #
83395次浏览 525人参与
# 产品实习,你更倾向大公司or小公司 #
193711次浏览 2074人参与
# 实习打杂,要跑路吗 #
56277次浏览 336人参与
# 你们公司哪个部门最累? #
37507次浏览 255人参与