Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में 2D मैट्रिक्स में अलग-अलग द्वीपों की संख्या खोजें


मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है। हमें इसमें द्वीपों की संख्या गिननी है। एक द्वीप वह स्थान है जो पानी से घिरा होता है और क्षैतिज या लंबवत रूप से आसन्न भूमि को जोड़कर बनता है। हम मान सकते हैं कि ग्रिड के चारों किनारे पानी से घिरे हैं।

मान लीजिए ग्रिड इस तरह है:

11000
11000
00100
00011

यहां तीन द्वीप हैं।

समाधान दृष्टिकोण

इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:

  • दो विधियां होंगी: एक द्वीपों की गिनती के लिए numIslands() और दूसरी makeWater()। makeWater() इस तरह होगी:
    • यदि ग्रिड में पंक्तियों की संख्या 0 है, तो 0 लौटाएं।
    • n = पंक्ति गिनती और m := स्तंभ गिनती, और ans := 0
    • i को 0 से n-1 तक:
      • j को 0 से m-1 तक:
        • यदि grid[i][j] == "1", तो ans := ans + 1
        • makeWater(i, j, n, m, grid)
    • makeWater() सूचकांक i, j, पंक्ति और स्तंभ गिनती n और m, और ग्रिड लेगा।
    • यदि i < 0 या j < 0 या i >= n या j >= m, तो इस विधि से लौटें।
    • यदि grid[i][j] == "0", तो लौटें अन्यथा grid[i][j] := "0" करें।
    • makeWater(i+1, j, n, m, grid) कॉल करें।
    • makeWater(i, j+1, n, m, grid) कॉल करें।
    • makeWater(i-1, j, n, m, grid) कॉल करें।
    • makeWater(i, j-1, n, m, grid) कॉल करें।

उदाहरण

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

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)

इनपुट

[["1","1","0","0","0"], ["1","1","0","0","0"], ["0","0","1","0","0"], ["0","0","0","1","1"]]

आउटपुट

3
  1. मैट्रिक्स में पूरी तरह से घिरे हुए द्वीपों की संख्या गिनने का पायथन प्रोग्राम मैट्रिक्स में पूरी तरह से घिरे हुए द्वीपों की संख्या गिनने का पायथन प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है। जहां 1 भूमि दर्शाता है और 0 पानी दर्शाता है। जैसा कि हम जानते हैं एक द्वीप 1 का समूह है जो एक साथ जुड़े हुए हैं जिसकी परिधि पानी से घिरी हुई है। हमें पूरी तरह से घिरे हुए द्वीपों की संख्या ढूंढनी है। उदाहरण के लिए, यदि इनपुट इस तरह है: तो आउटपुट 2 होगा,

  1. Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें सूची में उपलब्ध सबसे छोटी संख्या प्रदर्शित करने की आवश्यकता है। यहां हम या तो सूची को क्रमबद्ध करके सबसे छोटा तत्व प्राप्त कर सकते हैं या बिल्ट-इन min() फ़ंक्शन का उपयोग करके सबसे छोटा तत्

  1. पायथन प्रोग्राम: मैट्रिक्स का ट्रांसपोज़ ढूंढें पायथन प्रोग्राम: मैट्रिक्स का ट्रांसपोज़ ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक मैट्रिक्स दिए जाने पर, हमें ट्रांसपोज़ को उसी मैट्रिक्स में स्टोर करना होगा और इसे प्रदर्शित करना होगा। मैट्रिक्स का ट्रांसपोज़ पंक्तियों को कॉलम में और कॉलम को पंक्तियों में बदलकर