मान लीजिए हमारे पास एक m x n आव्यूह है। हमें एक कुशल एल्गोरिदम लिखना है जो उस मैट्रिक्स में एक मूल्य की खोज करता है। इस मैट्रिक्स में निम्नलिखित गुण हैं -
- प्रत्येक पंक्ति में पूर्णांकों को बाएं से दाएं आरोही क्रम में क्रमबद्ध किया जाता है।
- प्रत्येक कॉलम में पूर्णांकों को ऊपर से नीचे की ओर बढ़ते क्रम में क्रमबद्ध किया जाता है।
तो अगर मैट्रिक्स की तरह है -
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 है, तो सही लौटें, यदि लक्ष्य 20 है, तो झूठी वापसी करें
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- लेन:=स्तंभों की संख्या, c1:=0, c2:=लेन – 1
- जबकि सच
- यदि मैट्रिक्स [c1, c2] =लक्ष्य है, तो सही लौटें
- अन्यथा यदि मैट्रिक्स[c1, c2]> लक्ष्य, तो c2 :=c2 – 1, जारी रखें
- c1 :=c1 + 1
- यदि c1>=पंक्ति गणना या c2 <0, तो झूठी वापसी करें
- झूठी वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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