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

पायथन में इनवर्टेड इनवर्जन ज्ञात करने का प्रोग्राम


मान लीजिए हमें nums नामक संख्याओं की एक सूची दी गई है। हमें मौजूदा चौगुनी (a,b,c,d) की संख्या ज्ञात करनी है जैसे कि a और nums[a] < nums[b] और nums[c] > nums[d]। सरणी nums पूर्णांकों 1...N का क्रमचय है।

उदाहरण के लिए, nums = [3,4,7,6,5] के लिए आउटपुट 5 होगा।

एल्गोरिदम (बाइनरी सर्च + प्रीफिक्स काउंट)

  • MOD = 10^9+7
  • यदि len(nums) < 4, तो 0 वापस करें
  • ds_smaller_than_c[c] की गणना करें: c के दाएं उन तत्वों की संख्या जो nums[c]
  • as_smaller_than_b_sum को बनाए रखें: b के बाएं उन तत्वों की संख्या जो nums[b] से छोटे हैं
  • प्रत्येक b के लिए, quadruplet_count += as_smaller_than_b_sum * ds_smaller_than_c[b+1]
  • quadruplet_count % MOD वापस करें

उदाहरण

import bisect
MOD = 10**9+7
class Solution:
    def solve(self, nums):
        if len(nums) < 4: return 0
        n = len(nums)
        sorted_ds = [nums[-1]]
        sorted_ds.sort()
        ds_smaller_than_c = [0]*n
        for c in range(n-2, -1, -1):
            ds_smaller_than_c[c] = bisect.bisect_right(sorted_ds, nums[c]-1)
            sorted_ds.append(nums[c])
            sorted_ds.sort()
        quadruplet_count = 0
        sorted_as = [nums[0]]
        sorted_as.sort()
        as_smaller_than_b_sum = 0
        for b in range(1, n-2):
            as_smaller_than_b_sum += bisect.bisect_right(sorted_as, nums[b]-1)
            sorted_as.sort()
            as_smaller_than_b_sum %= MOD
            sorted_as.append(nums[b])
            sorted_as.sort()
            quadruplet_count += as_smaller_than_b_sum * ds_smaller_than_c[b+1]
            quadruplet_count %= MOD
        return quadruplet_count

ob = Solution()
print(ob.solve([3,4,7,6,5]))

इनपुट

[3, 4, 7, 6, 5]

आउटपुट

5
  1. पायथन प्रोग्राम: मैट्रिक्स का ट्रांसपोज़ ढूंढें पायथन प्रोग्राम: मैट्रिक्स का ट्रांसपोज़ ढूंढें

    इस लेख में, हम दिए गए प्रॉब्लम स्टेटमेंट को हल करने के समाधान और दृष्टिकोण के बारे में सीखेंगे। प्रॉब्लम स्टेटमेंट एक मैट्रिक्स दिए जाने पर, हमें ट्रांसपोज़ को उसी मैट्रिक्स में स्टोर करना होगा और इसे प्रदर्शित करना होगा। मैट्रिक्स का ट्रांसपोज़ पंक्तियों को कॉलम में और कॉलम को पंक्तियों में बदलकर

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

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

  1. पायथन प्रोग्राम: सिलेंडर का परिमाप ढूंढें पायथन प्रोग्राम: सिलेंडर का परिमाप ढूंढें

    इस लेख में, हम नीचे दिए गए प्रॉब्लम स्टेटमेंट के समाधान के बारे में सीखेंगे: प्रॉब्लम स्टेटमेंट व्यास और ऊंचाई इनपुट करें, सिलेंडर का परिमाप ढूंढें। परिमाप सिलेंडर का साइड व्यू है यानी एक आयत। इसलिए परिमाप = 2 * (h + d) यहां d सिलेंडर का व्यास है h सिलेंडर की ऊंचाई है आइए कार्यान्वयन देखें: उदा