কম্পিউটার টিউটোরিয়াল

পাইথনে ২D ম্যাট্রিক্স-II এ সার্চ করা (Search a 2D Matrix II)


মান করুন একটি m x n ম্যাট্রিক্স আছে। আমাদের একটি কার্যকর অ্যালগরিদম লিখতে হবে যা সেই ম্যাট্রিক্সে একটি মান সার্চ করবে। এই ম্যাট্রিক্সের নিচের প্রপার্টিগুলো আছে:

  • প্রতিটি সারি বাম থেকে ডানে অর্ধে সর্টেড।
  • প্রতিটি কলাম উপরে থেকে নিচে অর্ধে সর্টেড।

ম্যাট্রিক্সটি যদি নিচের মতো হয়:

1471115
2581219
3691622
1013141724
1821232630

টার্গেট ৫ হলে সত্য রিটার্ন করবে, টার্গেট ২০ হলে মিথ্যা।

সমাধানের ধাপগুলো:

  • 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
  1. পাইথনে ফাংশন ডিফাইন করা (Defining a Function)

  2. পাইথনে বাইনারি সার্চ – bisect মডিউল (bisect_left, bisect_right)

  3. পাইথনে ম্যাট্রিক্স ইনিশিয়ালাইজেশন (Initialize Matrix)

  4. পাইথনে ম্যাট্রিক্স ট্রান্সপোজ (Transpose) করা