ধরুন আমাদের কাছে সংখ্যার একটি তালিকা আছে যার নাম nums এবং আরেকটি মান k। আমাদেরকে মুছে ফেলার উপাদানগুলির সর্বাধিক যোগফল খুঁজে বের করতে হবে, প্রদত্ত যে আমাদের ঠিক k বার পপ করতে হবে, যেখানে প্রতিটি পপ বাম বা ডান প্রান্ত থেকে হতে পারে।
সুতরাং, যদি ইনপুটটি nums =[2, 4, 5, 3, 1] k =2 এর মত হয়, তাহলে আউটপুট হবে 6, যেমন আমরা 2 এবং 4 মুছে ফেলতে পারি।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- উইন্ডো :=সূচক 0 থেকে k - 1 পর্যন্ত সমস্ত সংখ্যার যোগফল
- উত্তর :=উইন্ডো
- 1 থেকে k রেঞ্জের জন্য,
- করুন
- উইন্ডো :=window - nums[k - i]
- উইন্ডো :=window + nums[-i]
- উত্তর :=সর্বাধিক উত্তর এবং উইন্ডো
- উত্তর ফেরত দিন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, nums, k): window = sum(nums[:k]) ans = window for i in range(1, k + 1): window -= nums[k - i] window += nums[-i] ans = max(ans, window) return ans ob = Solution() nums = [2, 4, 5, 3, 1] k = 2 print(ob.solve(nums, k))
ইনপুট
[2, 4, 5, 3, 1], 2
আউটপুট
6