109、島嶼的周長
阿新 • • 發佈:2018-12-23
題目描述
首先想到的是暴力法求解,即每次看到有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; } }