मान लीजिए हमारे पास nums नामक संख्याओं की सूची है, और दूसरा मान k है। यदि हम nums से k एलिमेंट्स हटाते हैं, तो (nums का अधिकतम - nums का न्यूनतम) का न्यूनतम ढूंढें।
तो, यदि इनपुट nums = [4, 10, 3, 2, 8, 9] k = 3 है, तो आउटपुट 2 होगा, क्योंकि यदि हम 10, 8 और 9 हटाते हैं तो अधिकतम 4 है, न्यूनतम 2 है तो अंतर 2 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
सूची nums को सॉर्ट करें
p := nums का आकार - k
m := (nums का अंतिम एलिमेंट) - nums[0]
i के लिए 0 से nums के आकार - p तक की रेंज में, करें
यदि nums[i + p - 1] - nums[i] < m, तो
m := nums[i + p - 1] - nums[i]
m लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें
def solve(nums, k):
nums = sorted(nums)
p = len(nums) - k
m = nums[-1] - nums[0]
for i in range(0, len(nums) - p + 1):
if nums[i + p - 1] - nums[i] < m:
m = nums[i + p - 1] - nums[i]
return m
nums = [10, 4, 3, 2, 9, 8]
k = 3
print(solve(nums, k))
इनपुट
[10, 4, 3, 2, 9, 8], 3
आउटपुट
2