LeetCode:463. Island Perimeter

 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 }

 

posted @ 2017-02-06 11:24  蒲公英的花朵  阅读(261)  评论(0编辑  收藏  举报