मान लीजिए कि हमारे पास nums नामक एक सरणी है (केवल सकारात्मक मानों के साथ) और हम अद्वितीय तत्वों वाले एक सबएरे को मिटाना चाहते हैं। हमें वह स्कोर मिलेगा जो सबएरे तत्वों का योग है। हमें ठीक एक उप-सरणी को मिटाकर अधिकतम अंक प्राप्त करना होगा।
इसलिए, यदि इनपुट nums =[6,3,2,3,6,3,2,3,6] की तरह है, तो आउटपुट 11 होगा, क्योंकि यहां इष्टतम सबरे या तो [6,3,2] है या [2,3,6], तो योग 11 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- देखा:=एक नया नक्शा
- उत्तर:=योग:=0
- एल :=0
- प्रत्येक अनुक्रमणिका r और मान x अंक के लिए, करें
- यदि x दिखाई दे, तो
- सूचकांक:=देखा गया[x]
- जबकि l <=अनुक्रमणिका, करते हैं
- देखा हटा दें[nums[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