Skip to content

Commit ddc575e

Browse files
authored
Merge pull request #23 from Shrikant991/leetcodeSolutions
Added IslandPerimeter.cpp
2 parents d721eb4 + 5a4b189 commit ddc575e

File tree

2 files changed

+40
-0
lines changed

2 files changed

+40
-0
lines changed

‎Sites/Leetcode.md

+1
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,4 @@
3535
* [Find Median from Data Stream](https://leetcode.com/problems/find-median-from-data-stream/) , [Solution](../Solutions/FindMedianFromDataStream.cpp)
3636
* [4 Sum](https://leetcode.com/problems/4sum/) , [Solution](../Solutions/4Sum.cpp)
3737
* [2 Keys Keyboard](https://leetcode.com/problems/2-keys-keyboard/) , [Solution](../Solutions/2KeysKeyboard.cpp)
38+
* [Island Perimeter] (https://leetcode.com/problems/island-perimeter/) ,[Solution] (../Solutions/IslandPerimeter.cpp)

‎Solutions/IslandPerimeter.cpp

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/*
2+
The solution is basically based on DFS of a graph.
3+
The Borders in the graph are shown as 1s so that they may add upto the perimeter.
4+
*/
5+
class Solution {
6+
public:
7+
int DFS(vector<vector<int>>& grid,int x, int y,vector<vector<bool>>&visited){
8+
9+
if(x<0||y<0||x>=grid.size()||y>=grid[0].size()||!grid[x][y]) // Border Condition Checking
10+
return 1;
11+
if(visited[x][y]) // Already Visited Graph
12+
return 0;
13+
14+
visited[x][y] = true;
15+
16+
int a = DFS(grid,x+1,y,visited); // DFS Calls for Adjacent cells
17+
a +=DFS(grid,x-1,y,visited);
18+
a +=DFS(grid,x,y+1,visited);
19+
a +=DFS(grid,x,y-1,visited);
20+
21+
return a;
22+
}
23+
int islandPerimeter(vector<vector<int>>& grid) {
24+
25+
vector<vector<bool>>visited(grid.size(),vector<bool>(grid[0].size(),false));
26+
27+
for(int i = 0;i<grid.size();i++)
28+
{
29+
for(int j = 0;j<grid[i].size();j++)
30+
{
31+
if(grid[i][j]) // Calls for all the connected Components
32+
{
33+
return DFS(grid,i,j,visited);
34+
}
35+
}
36+
}
37+
return 0;
38+
}
39+
};

0 commit comments

Comments
 (0)