मान लीजिए कि हमारे पास एआर नामक एक सरणी है। हमें गिरफ्तारी पर कुछ ऑपरेशन करने होंगे ताकि यह इन शर्तों को पूरा कर सके -
-
गिरफ्तारी में पहला तत्व 1 होना चाहिए।
-
किन्हीं 2 आसन्न तत्वों के बीच पूर्ण अंतर अधिक से अधिक 1 होना चाहिए।
और दो ऑपरेशन हैं। हम इन दो प्रकार के कार्यों को कितनी भी बार कर सकते हैं -
-
गिरफ्तारी के किसी भी मान को छोटी सकारात्मक संख्या में घटाएं।
-
गिरफ्तारी के तत्वों को किसी भी क्रम में पुनर्व्यवस्थित करें।
हमें दी गई शर्तों को पूरा करने के लिए संचालन करने के बाद गिरफ्तारी में अधिकतम संभव मूल्य खोजना होगा।
इसलिए, यदि इनपुट arr =[3,3,2,3,2] जैसा है, तो आउटपुट 3 होगा क्योंकि, हम अंतिम तत्व को 1 तक घटा सकते हैं, फिर उन्हें [1,2,3,3] की तरह पुनर्व्यवस्थित कर सकते हैं ,3], और अधिकतम 3 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
सूची को क्रमबद्ध करें गिरफ्तारी
-
गिरफ्तार [0] :=1
-
मेरे लिए 1 से लेकर एआर -1 के आकार तक, करो
-
arr[i] :=न्यूनतम (arr[i - 1] + 1) और arr[i]
-
-
गिरफ्तारी की अधिकतम वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(arr): arr.sort() arr[0] = 1 for i in range(1, len(arr)): arr[i] = min(arr[i - 1] + 1, arr[i]) return max(arr) arr = [3,3,2,3,2] print(solve(arr))
इनपुट
[3,3,2,3,2]
आउटपुट
3