ধরুন আমাদের একটি 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