109、岛屿的周长
题目描述
首先想到的是暴力法求解,即每次看到有1时就看其四周有没有0或者是边界,如果有那么将周长加1
代码:
class Solution {
public int islandPerimeter(int[][] grid) {
int count = 0;
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
int is = grid[i][j];
if(is == 1){
if(i == 0 || grid[i-1][j] == 0){
count++;
}
if(j == 0 || grid[i][j-1] == 0){
count++;
}
if(i == grid.length -1 || grid[i+1][j] == 0){
count++;
}
if(j == grid[i].length - 1 || grid[i][j+1] == 0){
count++;
}
}
}
}
return count;
}
}
排名靠前的代码
其实思路差不多的
class Solution {
public int islandPerimeter(int[][] grid) {
int count = 0;//record the value of the answer
for(int i = 0;i < grid.length;i++){
for(int j = 0;j < grid[0].length;j++){
if(grid[i][j] == 1){
count += 4;
if(i - 1 >= 0 && grid[i - 1][j] == 1){
count -= 2;
}
if(j - 1 >= 0 && grid[i][j - 1] == 1){
count -= 2;
}
}
}
}
return count;
}
}