ধরা যাক [start, end] ফর্ম্যাটে ইন্টারভালের একটি লিস্ট রয়েছে, যা একটি কোর্সের শুরু এবং শেষ সময় নির্দেশ করে। আমাদের সর্বাধিক কতগুলো কোর্স নেওয়া যায় তা বের করতে হবে, শর্ত হলো একবারে শুধু একটি কোর্স নেওয়া যাবে এবং নতুন কোর্সের শুরু সময় আগের কোর্সের শেষ সময়ের পরে হতে হবে।
উদাহরণ
ইনপুট: times = [[3, 6], [6, 9], [7, 8], [9, 11]]
আউটপুট: 3
ব্যাখ্যা: নেওয়া যাবে [[3, 6], [7, 8], [9, 11]]
সমাধানের ধাপসমূহ
- ইন্টারভালগুলো শেষ সময় (
end) অনুযায়ী সর্ট করুন counter := 0,end := -1i = 0থেকেlen(times)-1পর্যন্ত লুপ চালান- যদি
times[i][0] > endহয়, তবে:counter := counter + 1end := times[i][1]
counterফেরত দিন
পাইথন ইমপ্লিমেন্টেশন
class Solution:
def solve(self, times):
times.sort(key=lambda x: x[1])
counter = 0
end = -1
for i in range(len(times)):
if times[i][0] > end:
counter += 1
end = times[i][1]
return counter
ob = Solution()
times = [
[3, 6],
[6, 9],
[7, 8],
[9, 11]
]
print(ob.solve(times))
ইনপুট
[[3, 6], [6, 9], [7, 8], [9, 11]]
আউটপুট
3