मान लीजिए हमारे पास nums नामक संख्याओं की एक सूची और एक मान k है। एक ऑपरेशन पर विचार करें जहां हम किसी तत्व को 1 से बढ़ाते हैं। हम अधिकतम k बार ऐसा कर सकते हैं, हमें उस सबसे अधिक बार आने वाली संख्या का मान ढूंढना है जिसे हम प्राप्त कर सकते हैं। यदि एक से अधिक समाधान हैं, तो सबसे छोटी संभव संख्या चुनें।
उदाहरण के लिए, यदि इनपुट nums = [1, 0, 0, 0, 8, 8, 8, 8] और k = 8 है, तो आउटपुट 8 होगा, क्योंकि हम 1 को 7 बार बढ़ाकर 8 बना सकते हैं, और किसी 0 को 1 बना सकते हैं, तो हमें [8, 1, 0, 0, 8, 8, 8, 8] मिलता है। तो परिणाम 8 है।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:
numsको सॉर्ट करेंlow := 0, high := 0dist := 0, best := 0ret := -1- जब तक
high < len(nums):- यदि
high > 0औरnums[high] != nums[high-1]:dist := dist + (high - low) * (nums[high] - nums[high-1])
high := high + 1- जब तक
dist > k:dist := dist - nums[high-1] - nums[low]low := low + 1
- यदि
high - low > best:best := high - lowret := nums[high-1]
retलौटाएं
- यदि
उदाहरण कोड
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