vuki

island_perimeter

Feb 3rd, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.33 KB | None | 0 0
  1. class Solution {
  2.    
  3.     int perimeterSum = 0;
  4.     public int islandPerimeter(int[][] grid) {
  5.         for(int i = 0; i < grid.length; i++){
  6.             int[] row = grid[i];
  7.             for(int j = 0; j < row.length; j++){
  8.                 if(grid[i][j] == 1){
  9.                     perimeterSum += checkPerimeter( i, j , grid);
  10.                 }
  11.             }
  12.         }
  13.         return perimeterSum;
  14.     }
  15.  
  16.     private int checkPerimeter(int row, int col, int[][] grid){
  17.         //if go out of boundaries or see a water
  18.         if( row < 0 ||  col < 0 || grid.length <= row || grid[row].length <= col || grid[row][col] == 0 ){
  19.             return 1;
  20.         }
  21.        
  22.         if(grid[row][col] == -1){
  23.             return 0;
  24.         }
  25.        
  26.         grid[row][col] = -1; //visited
  27.        
  28.         int sum = 0;
  29.         int[] x_move = new int[]{0, 1, 0 , -1};
  30.         int[] y_move = new int[]{1, 0, -1, 0};
  31.    
  32.         for(int i = 0; i<4; i++){
  33.             sum += checkPerimeter(row + x_move[i], col + y_move[i], grid);            
  34.         }
  35.         // sum += checkPerimeter(row + 1, col, grid); // right
  36.         // sum += checkPerimeter(row - 1, col, grid); // left
  37.         // sum += checkPerimeter(row,     col - 1, grid); //up
  38.         // sum += checkPerimeter(row,     col + 1, grid); //down
  39.         return sum;
  40.     }
  41. }
Advertisement
Add Comment
Please, Sign In to add comment