ধরা যাক একটি ২D বাইনারি ম্যাট্রিক্স দেওয়া আছে। এখানে প্রতিটি সারি অ্যাসেন্ডিং অর্ডারে সর্টেড (০ গুলো ১ গুলোর আগে) থাকে। আমাদের मैट্রিক্সে ১ সম্বলিত সবচেয়ে বামপাশের কলামের সূচক বের করতে হবে। যদি এমন কোনো কলাম না থাকে, তবে -1 ফেরত দিন।
উদাহরণ
ইনপুট ম্যাট্রিক্স:
| 0 | 0 | 0 | 1 |
| 0 | 0 | 1 | 1 |
| 0 | 0 | 1 | 1 |
| 0 | 0 | 1 | 0 |
আউটপুট: 2
ব্যাখ্যা: দ্বিতীয় কলামে (সূচক ২) পুরো ম্যাট্রিক্সের বামপাশের ১ অবস্থিত।
সমাধানের ধাপসমূহ
- যদি ম্যাট্রিক্স খালি হয়, তবে
-1ফেরত দিন N := সারির সংখ্যা,M := কলামের সংখ্যাi := 0,j := M - 1leftmost := -1i < Nএবংj >= 0থাকা পর্যন্ত:- যদি
matrix[i][j] == 0হয়, তবেi += 1 - অন্যথায়:
leftmost := jj -= 1
- যদি
leftmostফেরত দিন
পাইথন ইমপ্লিমেন্টেশন
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