Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में ऐरे को जिगजैग बनाने के लिए एलिमेंट्स घटाएं


मान लीजिए हमारे पास पूर्णांकों का एक ऐरे nums है, एक मूव ऑपरेशन वास्तव में किसी भी एलिमेंट को चुनना और इसे 1 से घटाना है। एक ऐरे A एक जिगजैग ऐरे है यदि या तो 1 या 2 संतुष्ट होता है -

  • प्रत्येक इवन-इंडेक्स्ड एलिमेंट आसन्न एलिमेंट्स से बड़ा है, इसलिए A[0] > A[1] < A[2] > A[3] < A[4] > ... और इसी तरह।

  • प्रत्येक ऑड-इंडेक्स्ड एलिमेंट आसन्न एलिमेंट्स से बड़ा है, इसलिए A[0] < A[1] > A[2] < A[3] > A[4] < ... और इसी तरह।

हमें दिए गए ऐरे nums को जिगजैग ऐरे में बदलने के लिए न्यूनतम मूव्स की संख्या ढूंढनी है।

इसलिए यदि ऐरे [1,2,3] जैसा है, तो आउटपुट 2 होगा, क्योंकि हम 2 को 0 या 3 को 1 कर सकते हैं।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • solve() नामक एक मेथड परिभाषित करें, यह nums और start लेगा, यह नीचे की तरह काम करेगा -

  • k := 0

  • i को start से nums की लंबाई तक रेंज में, 2 से बढ़ाएं

    • left := 100000 जब i - 1 < 0, अन्यथा nums[i - 1]

    • right := 100000 जब i + 1 >= nums की लंबाई, अन्यथा nums[i + 1]

    • temp := (left और right का न्यूनतम) - 1 - nums[i]

    • यदि temp < 0, तो k := k + |temp|

  • k लौटाएं

  • मुख्य मेथड में, यह होगा

  • ans := solve(nums, 0)

  • ans := ans और solve(nums, 1) का न्यूनतम

  • ans लौटाएं

उदाहरण (पायथन)

बेहतर समझ पाने के लिए निम्न कार्यान्वयन देखें -

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

  1. - Python में सभी ऐरे तत्वों को बराबर बनाने के लिए आवश्यक ऑपरेशंस की संख्या

    हमें तत्वों का एक ऐरे दिया गया है, और हमें उन सभी को 1 से बढ़ाकर बराबर बनाना है। हमें प्रत्येक चरण में n - 1 तत्व बढ़ाने की अनुमति है। हमारा लक्ष्य सभी ऐरे तत्वों को बराबर बनाने के लिए आवश्यक कुल ऑपरेशंस की संख्या की गणना करना है। उदाहरण के लिए, यदि आप सूची [1, 2, 3] लेते हैं, तो सभी तत्वों को बराब

  1. - पायथन में सरणी में विशिष्ट तत्वों की गिनती

    पायथन में सूची में डुप्लिकेट तत्व हो सकते हैं। जब हम सूची की लंबाई गिनते हैं तो हमें डुप्लिकेट तत्वों सहित कुल लंबाई मिलती है। लेकिन इस लेख में हम देखेंगे कि सूची में विशिष्ट तत्वों या अद्वितीय तत्वों की कुल गिनती कैसे प्राप्त करें। उदाहरण नीचे दिए गए उदाहरण में हम collections मॉड्यूल से counter()

  1. - पायथन में bisect: ऐरे बाइसेक्शन एल्गोरिदम

    bisect मॉड्यूल सॉर्टेड लिस्ट में इंसर्शन पॉइंट ढूंढने और सॉर्टेड ऑर्डर बनाए रखते हुए इंसर्ट करने के लिए बाइनरी सर्च (बाइसेक्शन) एल्गोरिदम प्रदान करता है। O(log n) सर्च, O(n) इंसर्शन (लिस्ट शिफ्ट के कारण)। मुख्य फ़ंक्शन्स bisect_left(a, x, lo=0, hi=len(a)) इंसर्शन पॉइंट लौटाता है पहले किसी मौजूदा ए