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 }

 

转载于:https://www.cnblogs.com/luluqiao/p/6369676.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值