1 package Today; 2 //LeetCode:463. Island Perimeter 3 /* 4 You are given a map in form of a two-dimensional integer grid where 1 represents land and 0 represents water. 5 Grid cells are connected horizontally/vertically (not diagonally). 6 The grid is completely surrounded by water, and there is exactly one island 7 (i.e., one or more connected land cells). The island doesn't have "lakes" 8 (water inside that isn't connected to the water around the island). 9 One cell is a square with side length 1. The grid is rectangular, width and height don't exceed 100. Determine the perimeter of the island. 10 11 Example: 12 13 [[0,1,0,0], 14 [1,1,1,0], 15 [0,1,0,0], 16 [1,1,0,0]] 17 18 Answer: 16 19 Explanation: The perimeter is the 16 yellow stripes in the image below: 20 21 */ 22 public class islandPerimeter463 { 23 public static int islandPerimeter(int[][] grid) { 24 int count=0; 25 for(int i=0;i<grid.length;i++){ 26 for(int j=0;j<grid[i].length;j++){ 27 if(grid[i][j]==1){ 28 count+=4; 29 if(j>0&&grid[i][j-1]==1) 30 count--; 31 if(j<grid[i].length-1&&grid[i][j+1]==1) 32 count--; 33 if(i>0&&grid[i-1][j]==1) 34 count--; 35 if(i<grid.length-1&&grid[i+1][j]==1) 36 count--; 37 } 38 } 39 } 40 return count; 41 } 42 //study 其实只要考虑右边和下面的情况就可以了,count=count-2; 43 44 public static void main(String[] args) { 45 // TODO Auto-generated method stub 46 int[][] grid={{0,1,0,0},{1,1,1,0},{0,1,0,0},{1,1,0,0}}; 47 System.out.println(islandPerimeter(grid)); 48 49 } 50 51 }