গোষ্ঠীর আকারের তালিকা nums এবং দিন সংখ্যা k দেওয়া আছে। প্রতিদিন একবার প্লেন উড়াতে হয়। সকল গোষ্ঠী k দিনের মধ্যে পূরণ করার জন্য ন্যূনতম প্লেন ক্ষমতা বের করুন।
উদাহরণ: nums = [16,12,18,11,13], k=3 → আউটপুট ২৮ (গোষ্ঠী: [16,12], [18], [11,13])।
সমাধানের ধাপগুলো:
- বাইনারি সার্চ:
start = max(nums), end = sum(nums)। - মিড قدرত্যে
kদিনে কভার হয় কিনা চেক করুন। - অনুযায়ী
startবাendআপডেট করুন। startরিটার্ন করুন।
উদাহরণ
class Solution:
def solve(self, nums, k):
if not nums:
return 0
start, end = max(nums), sum(nums)
while start < end:
mid = (start + end) // 2
days = 1
temp = 0
for num in nums:
if temp + num > mid:
days += 1
temp = num
else:
temp += num
if days > k:
start = mid + 1
else:
end = mid
return start
ob = Solution()
nums = [16, 12, 18, 11, 13]
k = 3
print(ob.solve(nums, k))
ইনপুট
[16, 12, 18, 11, 13], 3
আউটপুট
28