|
1 |
| -////** hindi me samjho ab// |
2 |
| -// agar mje left or right or bottom or top me 1 mila to me aaga badunga agar nahi |
3 |
| -//mila mtlb ya to wo boundary hai uske baad 0 ara hai agar esa hai to cnt+=1 |
4 |
| -//kardo kuki wo hi to meri boundary banegi . note : agar boundary hai mtlb |
5 |
| -//i <0 or j<0 or i>=n or j>=m to cnt+=1 kardo or agar box ke side walo me 0 hai to wahan bhi cnt+=1 . |
6 |
| -// hope it make sense |
7 |
| -// please upvote if you like my post |
| 1 | +// Runtime: 75 ms (Top 80.5%) | Memory: 96.50 MB (Top 55.46%) |
| 2 | + |
8 | 3 | class Solution {
|
9 | 4 | public:
|
10 |
| - int cnt =0 ; |
11 |
| -bool vis[101][101] ; |
12 |
| - bool valid( int i , int j, int n , int m){ |
13 |
| - if(i>=n or j>=m or i<0 or j<0 ) |
14 |
| - return false; |
15 |
| - return true ; |
16 |
| - } |
17 | 5 | int islandPerimeter(vector<vector<int>>& grid) {
|
18 |
| - memset(vis,false , sizeof(vis)) ; |
19 |
| - for(int i = 0 ; i <grid.size() ; i ++){ |
20 |
| - for(int j=0 ; j<grid[0].size() ; j++) { |
21 |
| - |
22 |
| - |
23 |
| - if(grid[i][j]==1){ |
24 |
| - |
25 |
| - solve(grid, i,j) ; |
26 |
| - return cnt ; |
27 |
| - } |
28 |
| - } |
29 |
| - } |
30 |
| - return 69; |
| 6 | + int ans = 0 , row = grid.size(), col = grid[0].size(); |
| 7 | + for(int i = 0 ; i < row ; i++) |
| 8 | + { |
| 9 | + for(int j = 0 ; j < col ; j++) |
| 10 | + { |
| 11 | + if( grid[i][j]) |
| 12 | + { |
| 13 | + ans+=4; |
| 14 | + if(i < row - 1 && grid[i+1][j])ans--; |
| 15 | + if(j < col -1 && grid[i][j+1])ans--; |
| 16 | + if(j && grid[i][j-1])ans--; |
| 17 | + if(i && grid[i-1][j])ans--; |
| 18 | + } |
| 19 | + } |
| 20 | + } |
| 21 | + return ans; |
31 | 22 | }
|
32 |
| - void solve(vector<vector<int>>&grid, int i , int j ){ |
33 |
| - int n = grid.size() ; |
34 |
| - int m = grid[0].size() ; |
35 |
| - vis[i][j]=true ; |
36 |
| - if(!valid(i-1,j,n,m) or (valid(i-1,j,n,m) and grid[i-1][j]==0)){ |
37 |
| - cnt++ ; |
38 |
| - } |
39 |
| - else if(valid(i-1,j,n,m)and !vis[i-1][j]) |
40 |
| - solve(grid, i-1,j) ; |
41 |
| - |
42 |
| - if(!valid(i+1,j,n,m) or (valid(i+1,j,n,m) and grid[i+1][j]==0)){ |
43 |
| - cnt++ ; |
44 |
| - } |
45 |
| - else if(valid(i+1,j,n,m)and !vis[i+1][j]) |
46 |
| - solve(grid,i+1,j) ; |
47 |
| - |
48 |
| - if(!valid(i,j-1,n,m) or (valid(i,j-1,n,m) and grid[i][j-1]==0)){ |
49 |
| - cnt++ ; |
50 |
| - } |
51 |
| - else if(valid(i,j-1,n,m)and !vis[i][j-1]) |
52 |
| - solve(grid,i,j-1) ; |
53 |
| - |
54 |
| - if(!valid(i,j+1,n,m) or (valid(i,j+1,n,m) and grid[i][j+1]==0)){ |
55 |
| - cnt++ ; |
56 |
| - } |
57 |
| - else if(valid(i,j+1,n,m)and !vis[i][j+1]) |
58 |
| - solve(grid,i,j+1) ; |
59 |
| - |
60 |
| - |
61 |
| - |
62 |
| -} |
63 | 23 | };
|
0 commit comments