Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Solution {
- int perimeterSum = 0;
- public int islandPerimeter(int[][] grid) {
- for(int i = 0; i < grid.length; i++){
- int[] row = grid[i];
- for(int j = 0; j < row.length; j++){
- if(grid[i][j] == 1){
- perimeterSum += checkPerimeter( i, j , grid);
- }
- }
- }
- return perimeterSum;
- }
- private int checkPerimeter(int row, int col, int[][] grid){
- //if go out of boundaries or see a water
- if( row < 0 || col < 0 || grid.length <= row || grid[row].length <= col || grid[row][col] == 0 ){
- return 1;
- }
- if(grid[row][col] == -1){
- return 0;
- }
- grid[row][col] = -1; //visited
- int sum = 0;
- int[] x_move = new int[]{0, 1, 0 , -1};
- int[] y_move = new int[]{1, 0, -1, 0};
- for(int i = 0; i<4; i++){
- sum += checkPerimeter(row + x_move[i], col + y_move[i], grid);
- }
- // sum += checkPerimeter(row + 1, col, grid); // right
- // sum += checkPerimeter(row - 1, col, grid); // left
- // sum += checkPerimeter(row, col - 1, grid); //up
- // sum += checkPerimeter(row, col + 1, grid); //down
- return sum;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment