কম্পিউটার

পাইথনের বাইনারি ম্যাট্রিক্সে কলামের সূচী খুঁজে বের করার প্রোগ্রাম যেখানে বামে সবচেয়ে বেশি 1 থাকে?


ধরুন আমাদের একটি 2D বাইনারি ম্যাট্রিক্স আছে। এখানে প্রতিটি সারি 1s এর আগে 0s সহ আরোহী ক্রমে সাজানো হয়েছে, আমাদের 1 এর মান সহ বাম কলামের সূচী খুঁজে বের করতে হবে। যদি এমন কোন ফলাফল না থাকে তবে -1 ফেরত দিন।

সুতরাং, যদি ইনপুট মত হয়

0 0 0 1
0 0 1 1
0 0 1 1
0 0 1 0

তাহলে আউটপুট হবে 2, যেহেতু দ্বিতীয় কলামটি সম্পূর্ণ ম্যাট্রিক্সে সর্বাধিক 1 রেখে গেছে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব:

  • যদি ম্যাট্রিক্স খালি হয়, তাহলে

    • রিটার্ন -1

  • N :=ম্যাট্রিক্সের সারি গণনা

  • M :=ম্যাট্রিক্সের কলাম সংখ্যা

  • i :=0, j :=M - 1

  • বামতম :=-1

  • যখন i =0, do

    • যদি ম্যাট্রিক্স[i, j] 0 এর মত হয়, তাহলে

      • i :=i + 1

    • অন্যথায়,

      • বামতম :=j

      • j :=j - 1

  • বাম দিকে ফিরুন


উদাহরণ

class Solution:
   def solve(self, matrix):
      if not matrix or not matrix[0]:
         return -1

      N = len(matrix)
      M = len(matrix[0])

      i = 0
      j = M - 1

      leftmost = -1

      while i < N and j >= 0:
         if matrix[i][j] == 0:
            i += 1
         else:
            leftmost = j
            j -= 1

      return leftmost

ob = Solution()
matrix = [
   [0, 0, 0, 1],
   [0, 0, 1, 1],
   [0, 0, 1, 1],
   [0, 0, 1, 0]
]
print(ob.solve(matrix))

ইনপুট

[
[0, 0, 0, 1],
[0, 0, 1, 1],
[0, 0, 1, 1],
[0, 0, 1, 0] ]

আউটপুট

2

  1. পাইথনের একটি প্রদত্ত বাইনারি গাছে একটি BST উপস্থিত আছে কিনা তা খুঁজে বের করার জন্য প্রোগ্রাম

  2. পাইথনের একটি প্রদত্ত বাইনারি ট্রিতে একটি লিঙ্কযুক্ত তালিকা উপস্থিত আছে কিনা তা খুঁজে বের করার জন্য প্রোগ্রাম

  3. পাইথনে একটি বাইনারি গাছে কে-দৈর্ঘ্যের পাথ খুঁজে বের করার জন্য প্রোগ্রাম

  4. একটি ম্যাট্রিক্সের স্থানান্তর খুঁজে পেতে পাইথন প্রোগ্রাম