博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】 463. Island Perimeter
阅读量:5925 次
发布时间:2019-06-19

本文共 1673 字,大约阅读时间需要 5 分钟。

题目: 以二维数组形式表示坐标岛屿,求边长。

例子: 

[[0,1,0,0], [1,1,1,0], [0,1,0,0], [1,1,0,0]]Answer: 16Explanation: The perimeter is the 16 yellow stripes in the image below:

 

思路:    一开始想用最笨的办法,就是两次for循环遍历所有元素,如果为1(1为岛屿),就分别判断 上、下、左、右 是否为岛屿,若不是则 边数+1 。

          第二次换了想法, 每一条横向 如果有岛屿,只要连续,那么左右两边和始终为2,如果不连续,则左右两边和 +2。  纵向判断 上下边 也是如此。

   所用tag记录上一格是否为岛屿 来判断是否连续,如果为连续,则这一横排的 左右边和 始终为2, 如果有一个不连续,则左右边和 +2 。 

     横向判断用两次for循环,纵向判断也用两次for循环。第二层循环之前要把 tag清空,否则上一行的最后一格 和 下一行的第一格 会误判。

   

   效率一般,更好的没想起来- -

1 public class Solution { 2     public int islandPerimeter(int[][] grid) { 3         int m = 0,tag = 0; //m记录边数 ,tag作为标记 记录是否为连续岛屿 4         int rows = grid.length;    5         int columns = grid[0].length; 6         for(int i = 0;i < rows;i++){   //横向遍历 7             tag = 0 ;   //下层循环 标记清零 8             for(int j = 0; j < columns; j++){ 9                 if(grid[i][j] == 1){10                     if(tag == 1){11                         continue;12                     }13                     m = m + 2;14                     tag = 1;15                 }16                 else{17                     tag = 0;18                 }19             }20         }21         for(int j = 0; j < columns; j++){  //纵向遍历22             tag = 0; //下层循环  标记清零23             for(int i = 0;i < rows;i++){24                 if(grid[i][j] == 1){25                     if(tag == 1){26                         continue;27                     }28                     m = m + 2;29                     tag = 1;30                 }31                 else{32                     tag = 0;33                 }34             }35         }36         37         return m;38     }39 }

 

转载于:https://www.cnblogs.com/magicya/p/6681143.html

你可能感兴趣的文章
网狐棋牌游戏平台服务器架构设计分析[转]
查看>>
java代码调用使用cxf搭建的webService服务传递对象
查看>>
Spring调用spymemcached客户端的例子
查看>>
Mybatis动态sql和sql片段
查看>>
Java操作Redis DB的例子
查看>>
HLSL中的MUL指令深层剖析
查看>>
使用批处理批量删除不同文件夹下的同名文件
查看>>
[收藏学习]gcc和g++
查看>>
fuser命令详解(原创)
查看>>
linux下/dev/shm的大小引发ORA-00845: MEMORY_TARGET not supported on this system 2015-06-16 08:55:50...
查看>>
mac下无法识别手机usb问题
查看>>
iOS设计模式 - 命令
查看>>
IOS中DES与MD5加密方案
查看>>
栈的表示和实现
查看>>
2015年终总结
查看>>
图像平均及其在降噪方面的应用
查看>>
OAuth 2.0系列教程(九) 契约请求和响应
查看>>
ZooKeeper源码研究系列(2)客户端创建连接过程分析
查看>>
【BBED】使用bbed解决 the amount of space used is not equal to block size
查看>>
程序员的量化交易之路(37)--Lean之DataStream数据流5
查看>>