ধরুন আমাদের একটি গ্রিড আছে, সেখানে কয়েকটি 0s এবং কয়েকটি 1s আছে। আমাদের দ্বীপের সংখ্যা গুনতে হবে। একটি দ্বীপ হল এমন জায়গা যা জল দ্বারা বেষ্টিত এবং অনুভূমিকভাবে বা উল্লম্বভাবে সংলগ্ন জমিগুলিকে সংযুক্ত করে গঠিত হয়। আমরা অনুমান করতে পারি যে গ্রিডের চারটি প্রান্তই জল দ্বারা বেষ্টিত৷
ধরুন গ্রিড −
এর মত| 1 | 1 | 0 | 0 | 0 |
| 1 | 1 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 0 |
| 0 | 0 | 0 | 1 | 1 |
তিনটি দ্বীপ আছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- দুটি পদ্ধতি থাকবে, একটি ব্যবহার করা হবে numIslands() এবং makeWater() নামক দ্বীপের সংখ্যা গণনা করতে। makeWater() হবে − এর মত
- যদি গ্রিডে সারির সংখ্যা 0 হয়, তাহলে 0 ফেরত দিন
- n =সারি গণনা এবং m :=কলাম গণনা, এবং উত্তর :=0
- আমি 0 থেকে n – 1
- পরিসরে 0 থেকে m
- যদি গ্রিড[i, j] =1, তাহলে ans :=ans + 1
- makeWater(i, j, n, m, grid)
- পরিসরে j-এর জন্য
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution(object): def numIslands(self, grid): if len(grid) == 0: return 0 n= len(grid) m = len(grid[0]) ans = 0 for i in range(n): for j in range(m): if grid[i][j] == "1": ans+=1 self.make_water(i,j,n,m,grid) return ans def make_water(self,i,j,n,m,grid): if i<0 or j<0 or i>=n or j>=m: return if grid[i][j] == "0": return else: grid[i][j]="0" self.make_water(i+1,j,n,m,grid) self.make_water(i,j+1,n,m,grid) self.make_water(i-1,j,n,m,grid) self.make_water(i,j-1,n,m,grid) ob1 = Solution() print(ob1.numIslands([["1","1","0","0","0"],["1","1","0","0","0"],["0","0","1","0","0"], ["0","0","0","1","1"]]))
ইনপুট
[["1","1","0","0","0"],["1","1","0","0","0"],["0","0","1","0","0"],["0","0","0","1","1"]]
আউটপুট
3