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

पायथन में ऐरे में विचलन को कम करने का प्रोग्राम


मान लीजिए हमारे पास एक ऐरे nums है। हम ऐरे के किसी भी एलिमेंट पर किसी भी संख्या में दो प्रकार के ऑपरेशन कर सकते हैं:

  • सम एलिमेंट के लिए, इसे 2 से विभाजित करें।
  • विषम एलिमेंट के लिए, इसे 2 से गुणा करें।

अब ऐरे का विचलन ऐरे में किन्हीं दो एलिमेंट के बीच अधिकतम अंतर है। हमें कुछ ऑपरेशन करने के बाद ऐरे में न्यूनतम विचलन ढूंढना है। उदाहरण के लिए, यदि इनपुट nums = [6,3,7,22,5] है, तो आउटपुट 5 होगा क्योंकि हम एक ऑपरेशन में अपना ऐरे [6,6,7,22,5] बना सकते हैं और दूसरे ऑपरेशन में [6,6,7,22,10], और दूसरे ऑपरेशन में [6,6,7,11,10], अब विचलन 11-6 = 5 है।

हल करने के चरण

  1. nums सूची को सॉर्ट करें।
  2. max_v := nums का अधिकतम एलिमेंट
  3. min_v := nums का न्यूनतम एलिमेंट
  4. heapify nums
  5. res := max_v - min_v
  6. nums[0] विषम होने तक व्हाइल लूप चलाएं:
    • v := heapq.heappop(nums) से पॉप किया गया एलिमेंट
    • v := 2 * v
    • heapq.heappush(nums, v)
    • min_v := nums[0]
    • max_v := max(v, max_v)
    • res := min(res, max_v - min_v)
  7. nums := nums में सभी नंबरों की सूची और नकारात्मक क्रम में
  8. heapq.heapify(nums)
  9. nums[0] सम होने तक व्हाइल लूप चलाएं:
    • v := -heapq.heappop(nums)
    • v := v // 2
    • heapq.heappush(nums, -v)
    • max_v := -nums[0]
    • min_v := min(min_v, v)
    • res := min(res, max_v - min_v)
  10. res वापस करें।

उदाहरण

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

import heapq
def solve(nums):
    nums.sort()
    max_v, min_v = nums[-1], nums[0]
    heapq.heapify(nums)
    res = max_v - min_v
    while nums[0] % 2 == 1:
        v = heapq.heappop(nums)
        v = 2 * v
        heapq.heappush(nums, v)
        min_v = nums[0]
        max_v = max(v, max_v)
        res = min(res, max_v - min_v)
    nums = [-n for n in nums]
    heapq.heapify(nums)
    while nums[0] % 2 == 0:
        v = -heapq.heappop(nums)
        v = v // 2
        heapq.heappush(nums, -v)
        max_v = -nums[0]
        min_v = min(min_v, v)
        res = min(res, max_v - min_v)
    return res

nums = [6,3,7,22,5]
print(solve(nums))

इनपुट

[6,3,7,22,5]

आउटपुट

5
  1. पायथन प्रोग्राम: सरणी रोटेशन पायथन प्रोग्राम: सरणी रोटेशन

    इस लेख में हम दी गई समस्या के समाधान के बारे में जानेंगे। समस्या कथन हमें एक टेक्स्ट और एक पैटर्न दिया गया है, हमें पैटर्न और उसके क्रमपरिवर्तन (या एनाग्राम) की सभी घटनाओं को टेक्स्ट में प्रिंट करना है। उदाहरण # अधिकतम मान MAX = 300 # तुलना def compare(arr1, arr2): for i in range(MAX):

  1. पायथन प्रोग्राम: ऐरे का योग ढूंढें पायथन प्रोग्राम: ऐरे का योग ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट इनपुट के रूप में एक ऐरे दिए जाने पर, हमें दिए गए ऐरे का योग निकालने की आवश्यकता है। यहां हम ब्रूट-फोर्स दृष्टिकोण का पालन कर सकते हैं यानी एक लिस्ट को ट्रैवर्स करना और प्रत्येक एलिमें

  1. पायथन प्रोग्राम में इंसर्शन सॉर्ट पायथन प्रोग्राम में इंसर्शन सॉर्ट

    इस लेख में, हम पायथन 3.x में इंसर्शन सॉर्ट के कार्यान्वयन के बारे में सीखेंगे। या इससे पहले। एल्गोरिदम इनपुट एलिमेंट्स पर इटरेट करें और प्रत्येक इटरेशन में सॉर्टेड ऐरे को बढ़ाएं। वर्तमान एलिमेंट की तुलना सॉर्टेड ऐरे में उपलब्ध सबसे बड़े मान से करें। यदि वर्तमान एलिमेंट बड़ा है, तो यह एलिमेंट को उ