मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है, हमें सूची को किसी भी क्रम (आरोही या अवरोही) में क्रमबद्ध करने के लिए न्यूनतम लागत का पता लगाना होगा। यहां लागत किसी भी तत्व के पुराने और नए मूल्य के बीच अंतर का योग है।
इसलिए, अगर इनपुट [2, 5, 4] जैसा है, तो आउटपुट 2 होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अस्थायी:=सरणी अंकों की प्रतिलिपि बनाएँ
- सूची अस्थायी क्रमित करें
- c1:=0, c2:=0
- n:=अंकों का आकार
- मैं के लिए 0 से n की सीमा में, करते हैं
- यदि अंक [i] अस्थायी [i] के समान नहीं है, तो
- c1 :=c1 + |nums[i]-temp[i]|
- यदि अंक [i] अस्थायी [n-1-i] के समान नहीं है, तो
- c2 :=c2 + |nums[i]-temp[n-i-1]|
- यदि अंक [i] अस्थायी [i] के समान नहीं है, तो
- कम से कम c1 और c2 लौटाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, nums): temp=nums.copy() temp.sort() c1=0 c2=0 n=len(nums) for i in range(n): if nums[i]!=temp[i]: c1+=abs(nums[i]-temp[i]) if nums[i]!=temp[n-1-i]: c2+=abs(nums[i]-temp[n-i-1]) return min(c1,c2) ob = Solution() print(ob.solve([2, 5, 4]))
इनपुट
[2, 5, 4]
आउटपुट
2