这题刚开始也用DFS做,后来发现不对。。。因为要收集的是边的信息。
直接扫描就好了,优化一下,因为只从右上开始扫描,所以只对右上两个边进行计算。
int islandPerimeter(vector<vector<int>>& grid) {
int num = 0;
int rows = grid.size();
int cols = grid[0].size();
for(int i = 0;i<rows;i++){
for(int j = 0;j<cols;j++){
if(grid[i][j] == 1){
num += 4;
if(i!=0&&grid[i-1][j] == 1) num -= 2;
if(j!=0&&grid[i][j-1] == 1) num -= 2;
}
}
}
return num;
}
第一次打败这么多人还是要记录一下的。。。