leetcode892

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

class Solution {
public:
    int surfaceArea(vector<vector<int>>& grid) {
        int x=0;
        int sum=0;
        for(int i=0;i<grid.size();i++)
            for(int j=0;j<grid[0].size();j++){
                if(grid[i][j]!=0) x+=1;
            }
        for(int i=0;i<grid.size();i++)
            for(int j=0;j<grid[0].size();j++){
                 sum+=(grid[i][j]*4-2*cal(grid,i,j));
            }
        sum+=2*x;
        return sum;
    }
    int cal(vector<vector<int>>a,int i,int j){
        if(i==0&&j==0) return 0;
        else if(i==0&&j!=0) return min(a[i][j-1],a[i][j]);
        else if(i!=0&&j==0) return min(a[i-1][j],a[i][j]);
        else return min(a[i][j-1],a[i][j])+min(a[i-1][j],a[i][j]);
    }      
};
原文地址:https://www.cnblogs.com/asenyang/p/9723501.html