मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है और दूसरा मान k है। आइए एक संक्रिया पर विचार करें जहां हम किसी तत्व को एक-एक करके बढ़ाते हैं। हम अधिकतम k बार प्रदर्शन कर सकते हैं, हमें सबसे अधिक बार आने वाली संख्या का मान ज्ञात करना होगा जो हम प्राप्त कर सकते हैं। यदि एक से अधिक समाधान हैं, तो सबसे छोटी संभव संख्या चुनें।
इसलिए, यदि इनपुट अंकों की तरह है =[1, 0, 0, 0, 8, 8, 8, 8] k =8, तो आउटपुट 8 होगा, क्योंकि हम 8 प्राप्त करने के लिए 1, 7 गुना बढ़ा सकते हैं, और किसी भी 0 से 1 तक की वृद्धि करने पर, हमें [8, 1, 0, 0, 8, 8, 8, 8] प्राप्त होता है। तो परिणाम 8 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- सूची संख्या क्रमित करें
- निम्न:=0, उच्च:=0
- जिला:=0, श्रेष्ठ:=0
- रिट:=-1
- उच्च <अंकों का आकार, करते हैं
- यदि उच्च> 0 और अंक [उच्च] अंक [उच्च -1] के समान नहीं है, तो
- dist :=dist +(high - Low) *(nums[high] - nums[high - 1])
- उच्च :=उच्च + 1
- जबकि जिला> k, करते हैं
- dist :=dist - nums[high - 1] - nums[low]
- निम्न :=निम्न + 1
- यदि उच्च-निम्न> सर्वोत्तम है, तो
- सर्वश्रेष्ठ:=उच्च-निम्न
- ret :=nums[high - 1]
- रिटर्न रिटर्न
- यदि उच्च> 0 और अंक [उच्च] अंक [उच्च -1] के समान नहीं है, तो
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण कोड
class Solution: def solve(self, nums, k): nums.sort() low, high = 0, 0 dist = 0 best = 0 ret = -1 while high < len(nums): if high > 0 and nums[high] != nums[high - 1]: dist += (high - low) * (nums[high] - nums[high - 1]) high += 1 while dist > k: dist -= nums[high - 1] - nums[low] low += 1 if high - low > best: best = high - low ret = nums[high - 1] return ret ob = Solution() nums = [1, 0, 0, 0, 8, 8, 8, 8] k = 8 print(ob.solve(nums, k))
इनपुट
[1, 0, 0, 0, 8, 8, 8, 8], 8
आउटपुट
8