ধরুন আমাদের কাছে nums নামে একটি অ্যারে আছে (শুধুমাত্র ইতিবাচক মান সহ) এবং আমরা অনন্য উপাদান ধারণকারী একটি সাবয়ারে মুছে ফেলতে চাই। আমরা স্কোর পাব যা সাবারে উপাদানগুলির সমষ্টি। ঠিক একটি সাবয়ারে মুছে ফেলার মাধ্যমে আমাদের সর্বোচ্চ স্কোর খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[6,3,2,3,6,3,2,3,6], তাহলে আউটপুট হবে 11, কারণ এখানে সর্বোত্তম সাবয়ারে হয় [6,3,2] বা [2,3,6], তাই যোগফল হল 11।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- দেখা হয়েছে :=একটি নতুন মানচিত্র
- উত্তর :=যোগফল :=0
- l :=0
- প্রতিটি সূচক r এবং মান x সংখ্যার জন্য, করুন
- যদি x দেখা যায়, তাহলে
- সূচী :=দেখা[x]
- যখন l <=index, do
- দেখা [সংখ্যা[l]] সরান
- সমষ্টি :=যোগফল - সংখ্যা[l]
- l :=l + 1
- দেখা হয়েছে[x] :=r
- সমষ্টি :=যোগফল + x
- উত্তর :=সর্বাধিক উত্তর এবং যোগফল
- যদি x দেখা যায়, তাহলে
- উত্তর ফেরত দিন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(nums): seen = dict() ans = sum = 0 l = 0 for r, x in enumerate(nums): if x in seen: index = seen[x] while l <= index: del seen[nums[l]] sum -= nums[l] l += 1 seen[x] = r sum += x ans = max(ans, sum) return ans nums = [6,3,2,3,6,3,2,3,6] print(solve(nums))
ইনপুট
[6,3,2,3,6,3,2,3,6]
আউটপুট
11