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

পাইথনে সর্টেড ম্যাট্রিক্স-এ K-তম স্মলেস্ট এলিমেন্ট বের করুন

একটি n x n ম্যাট্রিক্স দেওয়া আছে যেখানে প্রতিটি রো এবং কলাম ইনক্রিজিং অর্ডারে সর্টেড। ম্যাট্রিক্সে k-তম স্মলেস্ট এলিমেন্ট বের করতে হবে (ইউনিক এলিমেন্ট নয়, সর্টেড অর্ডারে k-তম)।

ইনপুট [[1,5,9],[10,11,13],[12,13,15]], k = 8 হলে আউটপুট 13।

সমাধানের ধাপসমূহ

  • checkVal() মেথড ডিফাইন করুন (matrix, value আর্গুমেন্ট):
    • i := 0, j := len(matrix[0])-1, counter := 0
    • যখন i < len(matrix) এবং j >= 0:
      • যদি matrix[i][j] > value: j--, অন্যথায় counter += j+1, i++
    • counter রিটার্ন
  • মূল মেথড:
    • n := matrix রো, high := বটম-রাইট এলিমেন্ট, low := টপ-লেফ্ট এলিমেন্ট
    • যখন low <= high:
      • mid = low + (high - low) / 2
      • count := checkVal(matrix, mid)
      • যদি count < k: low = mid + 1, অন্যথায় high = mid - 1
    • low রিটার্ন

উদাহরণ

class Solution(object):
    def kthSmallest(self, matrix, k):
        n = len(matrix)
        high = matrix[n-1][n-1]
        low = matrix[0][0]
        while low <= high:
            mid = low + (high - low) // 2
            count = self.check_value(matrix, mid)
            if count < k:
                low = mid + 1
            else:
                high = mid - 1
        return int(low)

    def check_value(self, matrix, value):
        i = 0
        j = len(matrix[0]) - 1
        counter = 0
        while i < len(matrix) and j >= 0:
            if matrix[i][j] > value:
                j -= 1
            else:
                counter += j + 1
                i += 1
        return counter

matrix = [[1,5,9],[10,11,13],[12,13,15]]
ob = Solution()
print(ob.kthSmallest(matrix, 8))

ইনপুট

matrix =[[1,5,9],[10,11,13],[12,13,15]] k = 8

আউটপুট

13
  1. পাইথনে বাইনারি সার্চ ট্রিতে k-তম সবচেয়ে ছোট উপাদান খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে BST-এ Kth Smallest Element (K-তম ক্ষুদ্রতম উপাদান)

  3. পাইথন প্রোগ্রাম সর্টেড লিস্টে উপাদান ইনসার্ট করা

  4. পাইথন প্রোগ্রাম: ২ডি অ্যারে-তে k-তম ছোট এলিমেন্ট বের করা