这道题因为有0的情况,因此不能使用投影的方法,需要遍历每一个元素,单独处理。

class Solution {
public:
int surfaceArea(vector<vector<int>>& grid) {
int x=;
int sum=;
for(int i=;i<grid.size();i++)
for(int j=;j<grid[].size();j++){
if(grid[i][j]!=) x+=;
}
for(int i=;i<grid.size();i++)
for(int j=;j<grid[].size();j++){
sum+=(grid[i][j]*-*cal(grid,i,j));
}
sum+=*x;
return sum;
}
int cal(vector<vector<int>>a,int i,int j){
if(i==&&j==) return ;
else if(i==&&j!=) return min(a[i][j-],a[i][j]);
else if(i!=&&j==) return min(a[i-][j],a[i][j]);
else return min(a[i][j-],a[i][j])+min(a[i-][j],a[i][j]);
}
};

leetcode892的更多相关文章

  1. [Swift]LeetCode892. 三维形体的表面积 | Surface Area of 3D Shapes

    On a N * N grid, we place some 1 * 1 * 1 cubes. Each value v = grid[i][j] represents a tower of v cu ...

  2. Leetcode892.Surface Area of 3D Shapes三维形体的表面积

    在 N * N 的网格上,我们放置一些 1 * 1 * 1  的立方体. 每个值 v = grid[i][j] 表示 v 个正方体叠放在单元格 (i, j) 上. 返回结果形体的总表面积. 示例 1: ...

随机推荐

  1. Redis-sentinel哨兵模式集群方案配置

    一.sentinel介绍 Redis Sentinel Sentinel(哨兵)是用于监控redis集群中Master状态的工具,其已经被集成在redis2.4+的版本中 Sentinel作用: 1) ...

  2. vim编辑16进制

    你可以在vim中可以把文件转换为16进制来显示: :%!xxd 解释:把所有的行(%)用本地(!)的xxd程序打开. xxd本是linux下一个显示.编辑.转换二进制的命令. 返回正常显示: :%!x ...

  3. 条款30:透彻了解inline的里里外外。

    inline可以带来各种好处: 首先其可以使得消除函数调用带来的开销,再者编译器对这种非函数的代码可以做出更多的优化策略.   但是inline函数首先肯定是会导致程序代码的大小更加的庞大,这样会带来 ...

  4. Apk大瘦身

    Android的apk文件越来越大了这已经是一个不争的事实.在Android 还是最初版本的时候,一个app的apk文件大小也还只有2 MB左右,到了现在,一个app的apk文件大小已经升级到10MB ...

  5. redux源码阅读之compose,applyMiddleware

    我的观点是,看别人的源码,不追求一定要能原样造轮子,单纯就是学习知识,对于程序员的提高就足够了.在阅读redux的compose源码之前,我们先学一些前置的知识. redux源码阅读之compose, ...

  6. Http权威指南(报文)

    1.报文的组成 报文由 起始行.首部.主体(可选)组成 请求报文: <method> <request-URL> <version> <headers> ...

  7. [置顶] 【机器学习PAI实践三】雾霾成因分析

    一.背景 如果要人们评选当今最受关注话题的top10榜单,雾霾一定能够入选.如今走在北京街头,随处可见带着厚厚口罩的人在埋头前行,雾霾天气不光影响了人们的出行和娱乐,对于人们的健康也有很大危害.本文通 ...

  8. MySQL FEDERATED 存储引擎的使用

    FEDERATED 存储引擎描述 FEDERATED存储引擎能让你访问远程的MySQL数据库而不使用replication或cluster技术(类似于Oracle的dblink),使用FEDERATE ...

  9. linux学习 XShell上传、下载本地文件到linux服务器

    (一)通过命令行的方式 1.linux服务器端设置 在linux主机上,安装上传下载工具包rz及sz; 如果不知道你要安装包的具体名称,可以使用yum provides */name 进行查找系统自带 ...

  10. JDBC 3 通过PreparedStatement 对数据库进行增删改查

    下面程序沿用上面的封装. 1 插入数据 public boolean ChaRu3(User user){ boolean flag=true; Connection conn=null; Prepa ...