【leetcode】【Easy】【463. Island Perimeter】
来源:互联网 发布:淘宝女装批发网 编辑:程序博客网 时间:2024/05/01 21:19
problem link:https://leetcode.com/problems/island-perimeter/
code1:效率较高的两种解法,打败一半的人
//查看右边和下边的邻居
public class Solution { public int islandPerimeter(int[][] grid) { int islands = 0, neighbours = 0; for (int i = 0; i < grid.length; i++) { for (int j = 0; j < grid[i].length; j++) { if (grid[i][j] == 1) { islands++; // count islands if (i < grid.length - 1 && grid[i + 1][j] == 1) neighbours++; // count down neighbours if (j < grid[i].length - 1 && grid[i][j + 1] == 1) neighbours++; // count right neighbours } } } return islands * 4 - neighbours * 2; }}
//与上面解法思想上是一样的,只是考虑的是左边和上边的邻居
public int islandPerimeter(int[][] grid) { if (grid == null || grid.length == 0 || grid[0].length == 0) return 0; int result = 0; for (int i = 0; i < grid.length; i++) { for (int j = 0; j < grid[0].length; j++) { if (grid[i][j] == 1) { result += 4; if (i > 0 && grid[i-1][j] == 1) result -= 2; if (j > 0 && grid[i][j-1] == 1) result -= 2; } } } return result; }
code2:效率非常低的一种解法:直接遍历数
public class Solution { public int islandPerimeter(int[][] grid) {int rowLen = grid.length;int colLen = grid[0].length;int res = 0;for (int i = 0; i < rowLen - 1; i++) {for (int j = 0; j < colLen - 1; j++) {// res += (grid[i][j] ^ grid[i][j + 1] + grid[i][j] ^ grid[i +// 1][j]);//这样会有错误!res += grid[i][j] ^ grid[i][j + 1];res += grid[i][j] ^ grid[i + 1][j];}}for (int i = 0; i < rowLen; i++) {res += grid[i][0] ^ 0;res += grid[i][colLen - 1] ^ 0;if (i != (rowLen - 1))res += grid[i][colLen - 1] ^ grid[i + 1][colLen - 1];}for (int i = 0; i < colLen; i++) {res += grid[0][i] ^ 0;res += grid[rowLen - 1][i] ^ 0;if (i != (colLen - 1))res += grid[rowLen - 1][i] ^ grid[rowLen - 1][i + 1];}return res; }}
0 0
- 【leetcode】【Easy】【463. Island Perimeter】
- 【LeetCode】463.Island Perimeter(easy)解题报告
- 【Leetcode-easy-463】Island Perimeter
- 463. Island Perimeter 难度:easy
- 463. Island Perimeter Difficulty : Easy
- leetcode 463. Island Perimeter
- leetcode 463. Island Perimeter
- LeetCode 463. Island Perimeter
- 【LeetCode】 463. Island Perimeter
- [leetcode]463. Island Perimeter
- Leetcode-463. Island Perimeter
- Leetcode 463. Island Perimeter
- 【Leetcode】463. Island Perimeter
- LeetCode 463. Island Perimeter
- LeetCode--463. Island Perimeter
- 463. Island Perimeter [LeetCode]
- leetcode 463. Island Perimeter
- leetcode 463. Island Perimeter
- 2017年 新的开始 新的征程
- LeetCode - 88. Merge Sorted Array - 思路详解 - C++
- Git的诞生
- Rxjava(Rxjava 1.x)
- android 实现view从屏幕中间划出
- 【leetcode】【Easy】【463. Island Perimeter】
- textview设置字体以及引入新字体
- 3632: 外太空旅行
- Cas单点登录客户端配置
- 弹指一挥间
- 重新学习java-第一天(1)
- 重装eclipse后重新配置
- 微信登陆SDK接入 微信 qq 新浪 登陆&&分享
- Python上下文管理器Context Manager