মান করুন একটি 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 |
টার্গেট ৫ হলে সত্য রিটার্ন করবে, টার্গেট ২০ হলে মিথ্যা।
সমাধানের ধাপগুলো:
length := কলাম সংখ্যা,c1 := 0,c2 := length - 1- সত্য থাকাকালীন
- যদি
matrix[c1][c2] == target, তবে সত্য রিটার্ন করুন - অন্যথায় যদি
matrix[c1][c2] > target, তবে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