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

पायथन में 2D मैट्रिक्स II में खोजें

मान लीजिए हमारे पास एक m x n मैट्रिक्स है। हमें उस मैट्रिक्स में एक वैल्यू खोजने के लिए एक कुशल एल्गोरिदम लिखना है। इस मैट्रिक्स में निम्न गुण हैं -

  • प्रत्येक पंक्ति में पूर्णांक बाएं से दाएं आरोही क्रम में सॉर्टेड हैं।
  • प्रत्येक कॉलम में पूर्णांक ऊपर से नीचे आरोही क्रम में सॉर्टेड हैं।

इसलिए यदि मैट्रिक्स इस तरह है -

1471115
2581219
3691622
1013141724
1821232630

यदि टारगेट 5 है, तो true लौटाएं, यदि टारगेट 20 है, तो false लौटाएं।

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

  • len := कॉलम की संख्या, c1 := 0, c2 := len - 1
  • जब तक True
    • यदि matrix[c1, c2] = टारगेट, तो true लौटाएं
    • अन्यथा यदि matrix[c1, c2] > टारगेट, तो c2 := c2 - 1, जारी रखें
    • c1 := c1 + 1
    • यदि c1 >= पंक्ति संख्या या c2 < 0, तो false लौटाएं
    • false लौटाएं

यह एल्गोरिदम मैट्रिक्स के ऊपरी-दाएं कोने से शुरू होता है और टारगेट के आधार पर बाएं या नीचे जाता है।

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

उदाहरण

class Solution:
    def searchMatrix(self, matrix, target):
        try:
            length = len(matrix[0])
            counter1, counter2 = 0, length - 1
            while True:
                if matrix[counter1][counter2] == target:
                    return True
                elif matrix[counter1][counter2] > target:
                    counter2 -= 1
                    continue
                counter1 = counter1 + 1
                if counter1 >= len(matrix) or counter2 < 0:
                    return False
        except:
            return False

ob1 = Solution()
print(ob1.searchMatrix([[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], 5))

इनपुट

[[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]] 5

आउटपुट

True
  1. - Python में बाइनरी सर्च (bisect)

    यहां हम Python में bisect देखेंगे। Bisect का उपयोग बाइनरी सर्च के लिए किया जाता है। बाइनरी सर्च तकनीक का उपयोग क्रमबद्ध सूची में तत्वों को खोजने के लिए किया जाता है। Bisect एक लाइब्रेरी फ़ंक्शन है।हम Python में bisect का उपयोग करके तीन अलग-अलग कार्य देखेंगे।तत्व की पहली घटना ढूंढनाbisect.bisect_left

  1. - पायथन में मैट्रिक्स आरंभ करना

    इस लेख में, हम सीखेंगे कि पायथन 3.x (या पूर्व संस्करणों) में दो-आयामी सूची का उपयोग करके मैट्रिक्स को कैसे आरंभ किया जा सकता है। आइए मैट्रिक्स को आरंभ करने के सहज तरीके को देखें जो केवल पायथन भाषा प्रदान करती है। यहाँ हम सूची समझ का लाभ उठाते हैं। हम आंतरिक सूची को आरंभ करते हैं और फिर सूची समझ का

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

    मैट्रिक्स ट्रांसपोज़ का अर्थ है पंक्तियों को कॉलम और कॉलम को पंक्तियों में बदलना। उदाहरण # मूल मैट्रिक्स (3x2) x = [[1, 2], [3, 4], [5, 6]] # ट्रांसपोज़ (2x3) x1 = [[1, 3, 5], [2, 4, 6]] विधि 1: नेस्टेड लूप (क्लासिक) x = [[1, 2], [3, 4], [5, 6]] rows = len(x) cols = len(x[0]) res