টাস্ক লিস্ট tasks (প্রতিটি আইটেম একটি টাস্ক টাইপ) এবং কুলডাউন k দেওয়া আছে। প্রতিটি টাস্ক ১ यুনিট টাইম নেয়। একই টাইপের দুটি টাস্কের মাঝপথে কমপক্ষে k یুনিট গ্যাপ থাকতে হবে। মোট কত টাইম লাগবে বের করুন।
ইনপুট উদাহরণ
tasks = [0, 1, 1, 2]
k = 2
আউটপুট: 6
ব্যাখ্যা
সিকোয়েন্স: 0 (টাইম ০), 1 (টাইম ১), wait (টাইম ২), wait (টাইম ৩), 1 (টাইম ৪), 2 (টাইম ৫) → মোট ৬ টাইম স্লট।
অ্যালগরিদম
tick= করেন্ট টাইম,slot= ডিকশনারি (টাস্ক টাইপ -> নেক্সট অবেলেবল টাইম)।- প্রতিটি টাস্কের জন্য: যদি
slot[t] > tickহয়, তবেtick = slot[t](পροতিক্ষা)। tick++(টাস্ক এক্সিকিউট)।slot[t] = tick + k(नेक্সট অবেলেবল টাইম আপডেট)।
পাইথন কোড
def solve(tasks, k):
tick = 0
slot = {}
for t in tasks:
tf = slot.get(t)
if tf is not None and tf - tick > 0:
tick += tf - tick
tick += 1
slot[t] = tick + k
return tick
# টেস্ট
print(solve([0, 1, 1, 2], 2)) # 6
ব্যাখ্যা
সিমুলেশন বেসড গ্রিডি অ্যালগরিদম। সময় জটিলতা O(n), স্পেস O(u) (u = উনিক টাস্ক টাইপ)।