मान लीजिए कि हमारे पास पूर्णांकों की एक सरणी संख्या है, एक चाल ऑपरेशन वास्तव में किसी भी तत्व को चुन रहा है और इसे 1 से घटा रहा है। एक सरणी ए एक ज़िगज़ैग सरणी है यदि 1 या 2 संतुष्ट है -पी>
-
प्रत्येक सम-अनुक्रमित तत्व आसन्न तत्वों से बड़ा है, इसलिए। ए [0]> ए [1] <ए [2]> ए [3] <ए [4]> ... और इसी तरह।
-
प्रत्येक विषम-अनुक्रमित तत्व आसन्न तत्वों से बड़ा है, इसलिए। ए [0] <ए [1]> ए [2] <ए [3]> ए [4] <... और इसी तरह।
हमें दिए गए एरे नंबर्स को ज़िगज़ैग एरे में बदलने के लिए न्यूनतम संख्या में मूव्स खोजने होंगे।
तो अगर सरणी [1,2,3] की तरह है, तो आउटपुट 2 होगा, क्योंकि हम 2 से 0 या 3 से 1 तक घटा सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
हल () नामक एक विधि को परिभाषित करें, इसमें अंक लगेंगे और शुरू हो जाएगा, यह नीचे की तरह काम करेगा -
-
कश्मीर:=0
-
के लिए मैं सीमा में अंकों की लंबाई शुरू करने के लिए, 2 से बढ़ाएँ
-
बायां:=100000 जब मैं - 1 <0, अन्यथा अंक [i - 1]
-
दाएं:=100000 जब i + 1>=अंकों की लंबाई, अन्यथा अंक [i + 1]
-
अस्थायी:=(न्यूनतम बाएँ और दाएँ) – 1 – अंक[i]
-
यदि अस्थायी <0, तो k :=k + |temp|
-
-
वापसी कश्मीर
-
मुख्य विधि में, यह होगा
-
उत्तर:=हल करें (अंक, 0)
-
उत्तर:=न्यूनतम उत्तर और हल करें(अंक, 1)
-
वापसी उत्तर
उदाहरण (पायथन)
एक बेहतर समझ प्राप्त करने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -
class Solution(object): def solve(self,nums,start): k = 0 for i in range(start,len(nums),2): left = 100000 if i-1<0 else nums[i-1] right = 10000 if i+1>=len(nums) else nums[i+1] temp= (min(left,right)-1 - nums[i]) if temp<0: k+=abs(temp) return k def movesToMakeZigzag(self, nums): ans = self.solve(nums,0) ans = min(ans,self.solve(nums,1)) return ans ob = Solution() print(ob.movesToMakeZigzag([1,2,3]))
इनपुट
[1,2,3]
आउटपुट
2