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

पायथन में मैट्रिक्स जीरो सेट करें

विचार करें कि हमारे पास एक मैट्रिक्स है, उस मैट्रिक्स में यदि एक एलिमेंट 0 है, तो उस मैट्रिक्स की पूरी पंक्ति और कॉलम को 0 बना दें। रूपांतरण इन-प्लेस होगा। इसलिए यदि मैट्रिक्स है -

101
111
111

तो आउटपुट होगा -

000
101
101

आइए चरण देखते हैं -

  • n := पंक्तियों की संख्या, m := कॉलम की संख्या, फ्लैग सेट करें := false
  • यदि mat[0, 0] = 0, तो फ्लैग सेट करें := true
  • row := false सेट करें, और col := false
  • i को 1 से n तक की रेंज में
    • यदि mat[i, 0] = 0, तो col := True सेट करें और लूप तोड़ें
  • i को 1 से m तक की रेंज में
    • यदि mat[0, i] = 0, तो row := True सेट करें और लूप तोड़ें
  • i को 1 से n तक की रेंज में
    • j को 1 से m तक की रेंज में
      • यदि mat[i, j] = 0, तो mat[i, 0] = 0 और mat[0, j] := 0 सेट करें
  • i को 1 से n तक की रेंज में
    • j को 1 से m तक की रेंज में
      • यदि mat[i, 0] = 0 और mat[0, j] = 0, तो mat[i, j] = 0 सेट करें
  • यदि फ्लैग सेट है
    • i को 0 से n तक की रेंज में, mat[i, 0] := 0
    • i को 0 से m तक की रेंज में, mat[0, i] := 0
  • अन्यथा
    • यदि col सेट है, तो i को 0 से n तक की रेंज में, mat[i, 0] := 0
    • यदि row सेट है, तो i को 0 से m तक की रेंज में, mat[0, i] := 0

यह O(1) अतिरिक्त स्पेस समाधान पहली पंक्ति और कॉलम का उपयोग मार्कर के रूप में करता है।

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

उदाहरण

class Solution(object):
    def setZeroes(self, matrix):
        n = len(matrix)
        m = len(matrix[0])
        flag = False
        if matrix[0][0] == 0:
            flag = True
        row = False
        column = False
        for i in range(1, n):
            if matrix[i][0] == 0:
                column = True
                break
        for i in range(1, m):
            if matrix[0][i] == 0:
                row = True
                break
        for i in range(1, n):
            for j in range(1, m):
                if matrix[i][j] == 0:
                    matrix[0][j] = 0
                    matrix[i][0] = 0
        for i in range(1, n):
            for j in range(1, m):
                if not matrix[i][0] or not matrix[0][j]:
                    matrix[i][j] = 0
        if flag:
            for i in range(n):
                matrix[i][0] = 0
            for i in range(m):
                matrix[0][i] = 0
        else:
            if column:
                for i in range(n):
                    matrix[i][0] = 0
            if row:
                for i in range(m):
                    matrix[0][i] = 0
        return matrix

ob1 = Solution()
print(ob1.setZeroes([[1, 0, 1], [1, 1, 1], [1, 1, 1]]))

इनपुट

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

आउटपुट

[[0, 0, 0], [1, 0, 1], [1, 0, 1]]
  1. - पायथन सेट टाइप्स

    सेट्स मूल रूप से डिस्टिंक्ट हैश-टेबल ऑब्जेक्ट्स का अनऑर्डर्ड कलेक्शन होते हैं। हम सेट का उपयोग सेट यूनियन, इंटरसेक्शन, डिफरेंस जैसे गणितीय ऑपरेशन्स के लिए कर सकते हैं। हम किसी कलेक्शन से डुप्लिकेट्स हटाने के लिए भी सेट का उपयोग कर सकते हैं।सेट एलिमेंट पोजिशन रिकॉर्ड नहीं करता। यह इंडेक्सिंग, स्लाइसि

  1. - पायथन सेट ऑपरेशन

    सेट क्या है? गणित में, एक सेट विशिष्ट वस्तुओं का संग्रह है, जिसे अपने आप में एक वस्तु माना जाता है। उदाहरण के लिए, संख्याएं 2, 4, और 6 अलग-अलग मानी जाती हैं, लेकिन जब उन्हें सामूहिक रूप से माना जाता है तो वे आकार तीन का एक सेट बनाते हैं, जिसे {2,4,6} लिखा जाता है। सेट पर ऑपरेशन ऑपरेशनसंकेतनअर्थ इं

  1. - Python Sets समझाया: विशिष्टता, अपरिवर्तनीयता, और ऑपरेशन्स

    Python Sets एक कलेक्शन टाइप है जिसमें अनऑर्डर्ड कलेक्शन होता है यूनिक और इम्यूटेबल ऑब्जेक्ट्स का। दूसरे शब्दों में, एक Python सेट डुप्लिकेट आइटम्स नहीं रख सकता और एक बार सेट बन जाने के बाद, आइटम्स बदल नहीं सकते। नोट: सेट के आइटम्स इम्यूटेबल हैं, इसका मतलब है कि हम आइटम्स को बदल नहीं सकते। हालांकि, स