463. Island Perimeter
来源:互联网 发布:屏风专卖店淘宝网 编辑:程序博客网 时间:2024/06/09 11:54
题目的要求是:给定一个二维数组,由0跟1组成,0代表水,1代表陆地,所有的1组成一个小岛,让我们计算小岛的周长。例子如下:
Example:
[[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:
我们有一个最基本的想法,如果忽略每个1拼接的边长,小岛的周长是4*(1的个数);所以,我们需要遍历数组,确定1的个数。同时,我们注意到,因为每个元素1可能有邻居,所以我们需要考虑拼接的情况,我们需要考虑每个1的右边邻居跟下方邻居,以此确定我们被拼接不计的边的个数。例如,当一个元素1右边有1个邻居时,意味着有2条边重叠拼接了,所以要在之前计算的周长上减2。所以,总的计算方法出来了。完整的代码如下:
class Solution {public: int islandPerimeter(vector<vector<int>>& grid) { int island = 0, neighbor = 0; for (int i = 0; i < grid.size(); i++) { for (int j = 0; j < grid[0].size(); j++) { if (grid[i][j] == 1) { island += 1; if ((i < grid.size() - 1) && grid[i+1][j]) neighbor += 1; if ((j < grid[0].size() - 1) && grid[i][j+1]) neighbor += 1; } } } int perimeter = island * 4 - neighbor * 2; return perimeter; }};
阅读全文
0 0
- 463. Island Perimeter
- 463. Island Perimeter
- leetcode 463. Island Perimeter
- leetcode 463. Island Perimeter
- 463. Island Perimeter
- 463. Island Perimeter
- LeetCode 463. Island Perimeter
- 463. Island Perimeter
- Tutorial: 463. Island Perimeter
- 463. Island Perimeter
- 【LeetCode】 463. Island Perimeter
- [leetcode]463. Island Perimeter
- Leetcode-463. Island Perimeter
- 463. Island Perimeter
- Leetcode 463. Island Perimeter
- 463. Island Perimeter
- 463. Island Perimeter*
- 【Leetcode】463. Island Perimeter
- Java-冒泡排序
- Python3 安装 pip3 以及 scrapy、numpy、itchat
- 接口编写、调用及测试简介
- Windows核心编程->文件操作
- 解决office word 2016 、2013等一直正在启动的问题
- 463. Island Perimeter
- 使用IDEA进行scala/java混合工程的构建
- awk基于固定的字符抽取双引号中的数据
- Qt之进程间通信(共享内存)
- zookeeper的应用和原理
- HBase写性能优化策略
- 区块链是什么
- redis 检查key expire事件
- 利用栈数据结构彻底搞定走迷宫案例解析(并非最短路径)