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

पायथन में स्वयं को छोड़कर ऐरे का उत्पाद

मान लीजिए हमारे पास nums नामक एक ऐरे है जिसमें n पूर्णांक हैं जहां n > 1। हमें एक आउटपुट ऐरे ढूंढना है जैसे कि output[i] nums[i] को छोड़कर nums के सभी एलिमेंट्स के उत्पाद के बराबर हो। इसलिए यदि इनपुट ऐरे [1,2,3,4] है, तो आउटपुट [24,12,8,6] होगा। हमें इसे डिवीजन ऑपरेटर का उपयोग किए बिना हल करना है।

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

  • right_mul := nums के समान आकार का एक ऐरे, इसे 0 से भरें
  • right_mul का अंतिम एलिमेंट = nums का अंतिम एलिमेंट
  • i को 1 से nums की लंबाई तक की रेंज में
    • right_mul[nums की लंबाई - i - 1] = right_mul[nums की लंबाई - i] * nums[nums की लंबाई - i - 1]
  • output := nums के समान आकार का एक ऐरे, इसे 0 से भरें
  • prefix := 1, और index := 0
  • जब तक index < output की लंबाई - 1
    • output[index] := prefix * right_mul[index + 1]
    • prefix := prefix * nums[index]
    • index := index + 1
  • output का अंतिम एलिमेंट := prefix
  • output लौटाएं

यह O(n) समय और O(n) स्पेस में प्रीफिक्स और सफ़िक्स उत्पाद का उपयोग करके हल करता है।

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

उदाहरण

class Solution(object):
    def productExceptSelf(self, nums):
        right_multiply = [0] * len(nums)
        right_multiply[-1] = nums[-1]
        for i in range(1, len(nums)):
            right_multiply[len(nums) - i - 1] = right_multiply[len(nums) - i] * nums[len(nums) - i - 1]
        output = [0] * len(nums)
        prefix = 1
        current_index = 0
        while current_index < len(output) - 1:
            output[current_index] = prefix * right_multiply[current_index + 1]
            prefix *= nums[current_index]
            current_index += 1
        output[-1] = prefix
        return output

ob1 = Solution()
print(ob1.productExceptSelf([1, 3, 5, 7, 9]))

इनपुट

[1,3,5,7,9]

आउटपुट

[945, 315, 189, 135, 105]
  1. - पायथन में सरणी घुमाएं

    मान लीजिए हमारे पास एक सरणी A है। हमें इसे k चरणों से दाईं ओर घुमाना है। यदि सरणी A = [5, 7, 3, 6, 8, 1, 5, 4] है, और k = 3, तो आउटपुट [1,5,4,5,7,3,6,8] होगा। चरण इस तरह हैं: [4,5,7,3,6,8,1,5] [5,4,5,7,3,6,8,1] [1,5,4,5,7,3,6,8] इसे हल करने के लिए हम इन चरणों का पालन करेंगे। मान लें n सरणी का आक

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

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

  1. - Python में डायनामिक एरे का कार्यान्वयन

    डायनामिक एरे Python में, एक सूची, सेट और डिक्शनरी म्यूटेबल ऑब्जेक्ट हैं। जबकि संख्या, स्ट्रिंग, और टपल इम्यूटेबल ऑब्जेक्ट हैं। म्यूटेबल ऑब्जेक्ट का मतलब है कि हम सूची, सेट या डिक्शनरी से आइटम जोड़/हटा सकते हैं, हालांकि, यह इम्यूटेबल ऑब्जेक्ट जैसे टपल या स्ट्रिंग के मामले में सच नहीं है। Python में