463. Island Perimeter LeetCode Solution
In this guide, you will get 463. Island Perimeter LeetCode Solution with the best time and space complexity. The solution to Island Perimeter problem is provided in various programming languages like C++, Java, and Python. This will be helpful for you if you are preparing for placements, hackathons, interviews, or practice purposes. The solutions provided here are very easy to follow and include detailed explanations.
Table of Contents
- Problem Statement
- Complexity Analysis
- Island Perimeter solution in C++
- Island Perimeter solution in Java
- Island Perimeter solution in Python
- Additional Resources
Problem Statement of Island Perimeter
You are given row x col grid representing a map where grid[i][j] = 1 represents land and grid[i][j] = 0 represents water.
Grid cells are connected horizontally/vertically (not diagonally). The grid is completely surrounded by water, and there is exactly one island (i.e., one or more connected land cells).
The island doesn’t have “lakes”, meaning the water inside isn’t connected to the water around the island. 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.
Example 1:
Input: grid = [[0,1,0,0],[1,1,1,0],[0,1,0,0],[1,1,0,0]]
Output: 16
Explanation: The perimeter is the 16 yellow stripes in the image above.
Example 2:
Input: grid = [[1]]
Output: 4
Example 3:
Input: grid = [[1,0]]
Output: 4
Constraints:
row == grid.length
col == grid[i].length
1 <= row, col <= 100
grid[i][j] is 0 or 1.
There is exactly one island in grid.
Complexity Analysis
- Time Complexity: O(mn)
- Space Complexity: O(1)
463. Island Perimeter LeetCode Solution in C++
class Solution {
public:
int islandPerimeter(vector<vector<int>>& grid) {
int islands = 0;
int neighbors = 0;
for (int i = 0; i < grid.size(); ++i)
for (int j = 0; j < grid[0].size(); ++j)
if (grid[i][j]) {
++islands;
if (i - 1 >= 0 && grid[i - 1][j])
++neighbors;
if (j - 1 >= 0 && grid[i][j - 1])
++neighbors;
}
return islands * 4 - neighbors * 2;
}
};
/* code provided by PROGIEZ */
463. Island Perimeter LeetCode Solution in Java
class Solution {
public int islandPerimeter(int[][] grid) {
int islands = 0;
int neighbors = 0;
for (int i = 0; i < grid.length; ++i)
for (int j = 0; j < grid[0].length; ++j)
if (grid[i][j] == 1) {
++islands;
if (i - 1 >= 0 && grid[i - 1][j] == 1)
++neighbors;
if (j - 1 >= 0 && grid[i][j - 1] == 1)
++neighbors;
}
return islands * 4 - neighbors * 2;
}
}
// code provided by PROGIEZ
463. Island Perimeter LeetCode Solution in Python
class Solution:
def islandPerimeter(self, grid: list[list[int]]) -> int:
m = len(grid)
n = len(grid[0])
islands = 0
neighbors = 0
for i in range(m):
for j in range(n):
if grid[i][j] == 1:
islands += 1
if i + 1 < m and grid[i + 1][j] == 1:
neighbors += 1
if j + 1 < n and grid[i][j + 1] == 1:
neighbors += 1
return islands * 4 - neighbors * 2
# code by PROGIEZ
Additional Resources
- Explore all LeetCode problem solutions at Progiez here
- Explore all problems on LeetCode website here
Happy Coding! Keep following PROGIEZ for more updates and solutions.