मान लीजिए कि हमारे पास टावर की ऊंचाई की एक सूची है, और एक सकारात्मक मूल्य k है। हम k टावरों का चयन करना चाहते हैं और अधिक ईंटों को जोड़कर उन सभी को समान ऊंचाई पर बनाना चाहते हैं, लेकिन यथासंभव कम ईंटों का उपयोग करना चाहते हैं। हमें k टावरों को चुनने और उन्हें समान ऊंचाई बनाने के लिए न्यूनतम संख्या में ईंटों की आवश्यकता है।
इसलिए, यदि इनपुट हाइट्स =[4, 7, 31, 14, 40] k =3 की तरह है, तो आउटपुट 17 होगा, क्योंकि हम 5, 8, और 15 का चयन कर सकते हैं जिसके लिए समान ऊंचाई बनाने के लिए 17 ईंटों की आवश्यकता होती है। ।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- सूची की ऊंचाई को क्रमबद्ध करें
- उत्तर:=अनंत
- s :=0
- प्रत्येक सूचकांक के लिए i और मान x ऊंचाई में, करते हैं
- s :=s + x
- अगर मैं>=k, तो
- s :=s - ऊंचाई[i - k]
- अगर मैं>=k-1, तो
- उत्तर:=न्यूनतम उत्तर और (x * k - s)
- वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, heights, k): heights.sort() ans = float("inf") s = 0 for i, x in enumerate(heights): s += x if i >= k: s -= heights[i - k] if i >= k - 1: ans = min(ans, x * k - s) return ans ob = Solution() heights = [5, 8, 32, 15, 41] k = 3 print(ob.solve(heights, k))
इनपुट
[5, 8, 32, 15, 41], 3
आउटपुट
17