这题也没啥算法和数据结构,我觉得暴力二层循环就是最好的做法。。。。
因为时间复杂度不可能小于O(MN) MN分别为长度宽度
class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
if(grid.size() == 0) return 0;
int perimeter = 0, width = grid[0].size(), height = grid.size();
for(int i=0; i<height; i++) {
for(int j=0; j<width; j++){
if(grid[i][j]){
if((j > 0 && !grid[i][j-1]) || j == 0) perimeter++;
if((j < width-1 && !grid[i][j+1]) || j == width-1) perimeter++;
if((i > 0 && !grid[i-1][j]) || i == 0) perimeter++;
if((i < height-1 && !grid[i+1][j]) || i == height-1) perimeter++;
}
}
}
return perimeter;
}
};