मान लीजिए हमने रेटिंग नामक संख्याओं की एक सूची दी है, और यह कोडर्स के प्रदर्शन स्कोर दिखा रहा है। अब प्रबंधक प्रत्येक कोडर को 1000 रुपये देना चाहता है, सिवाय इसके कि अगर दो कोडर आसन्न हैं, तो वे बेहतर प्रदर्शन करने वाले कोडर को खराब प्रदर्शन करने वाले से कम से कम 1000 रुपये अधिक देना चाहेंगे। हमें उपरोक्त बाधाओं का पालन करते हुए प्रबंधक द्वारा भुगतान की जाने वाली न्यूनतम राशि का पता लगाना होगा।
इसलिए, यदि इनपुट रेटिंग =[1, 2, 5, 1] की तरह है, तो आउटपुट 7000 होगा, क्योंकि हम प्रत्येक संबंधित कोडर के लिए न्यूनतम भुगतान कर सकते हैं [1000, 2000, 3000, 1000]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
वेतन:=रेटिंग के समान आकार की एक सूची, प्रारंभ में सभी मान 1
. हैं -
मैं के लिए 1 से लेकर रेटिंग के आकार तक - 1, करें
-
अगर रेटिंग [i]> रेटिंग [i-1], तो
-
भुगतान[i] :=भुगतान[i-1]+1
-
-
-
मैं के लिए रेटिंग -2 से 0 की श्रेणी के आकार में, 1 से कम करें
-
अगर रेटिंग[i]> रेटिंग[i+1], तो
-
भुगतान[i] :=अधिकतम वेतन[i] और भुगतान[i+1]+1
-
-
-
वापसी (वेतन के तत्वों का योग) *1000
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, ratings): pay=[1 for _ in ratings] for i in range(1, len(ratings)): if ratings[i] > ratings[i-1]: pay[i] = pay[i-1]+1 for i in range(len(ratings)-2,-1,-1): if ratings[i] > ratings[i+1]: pay[i] = max(pay[i], pay[i+1]+1) return sum(pay)*1000 ob = Solution() ratings = [1, 2, 5, 1] print(ob.solve(ratings))
इनपुट
[1, 2, 5, 1]
आउटपुट
7000