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

पायथन में उल्टे व्युत्क्रम खोजने का कार्यक्रम


मान लीजिए कि हमें संख्याओं की एक सूची प्रदान की गई है। हमें मौजूदा चौपाइयों (ए, बी, सी, डी) की संख्या का पता लगाना है जैसे कि ए <बी <सी <डी और अंक [ए] <संख्या [बी] और अंक [सी]> अंक [डी]।

सरणी संख्या पूर्णांकों का क्रमपरिवर्तन है 1...N

इसलिए, यदि इनपुट nums =[3, 4, 7, 6, 5] जैसा है, तो आउटपुट 5 होगा।

दिए गए इनपुट से, हमारे पास ये उल्टे व्युत्क्रम हैं -

  • 3, 4, 7, 6

  • 3, 4, 6, 5

  • 3, 4, 7, 5

  • 3, 7, 6, 5

  • 4, 7, 6, 5

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

  • मी :=10^9 + 7

  • यदि अंकों का आकार <4 है, तो

    • वापसी 0

  • n :=अंकों का आकार

  • Sorted_ds :=एक नई सूची

  • अंकों के अंतिम आइटम को Sorted_ds में डालें

  • सूची को क्रमबद्ध करें क्रमबद्ध करें

  • ds_smaller_than_c :=[0] * n

  • n − 2 से −1 की श्रेणी में c के लिए, 1 की कमी करें

    • ds_smaller_than_c[c] :=Sorted_ds में सबसे दाहिनी ओर की स्थिति लौटाएं जहांnums[c] - 1 को डाला जा सकता है और क्रमबद्ध क्रम को बनाए रखा जा सकता है

    • Sorted_ds के अंत में nums[c] डालें

    • सूची को क्रमबद्ध करें क्रमबद्ध करें

  • चौगुनी_गिनती :=0

  • Sorted_as :=एक नई सूची

  • Sorted_as में अंकों की पहली संख्या डालें

  • क्रमबद्ध_के रूप में सूची को क्रमबद्ध करें

  • as_smaller_than_b_sum :=0

  • b के लिए 1 से n - 2 की सीमा में, करें

    • as_smaller_than_b_sum :=as_smaller_than_b_sum + सबसे दाहिनी ओर इनसोर्ट की गई स्थिति जहां nums[b] – 1 को डाला जा सकता है और क्रमबद्ध क्रम को बनाए रखा जा सकता है

    • क्रमबद्ध_के रूप में सूची को क्रमबद्ध करें

    • as_smaller_than_b_sum :=as_smaller_than_b_sum mod m

    • सॉर्ट किए गए_as के अंत में nums[b] डालें

    • क्रमबद्ध_के रूप में सूची को क्रमबद्ध करें

    • चौगुनी_गिनती :=quadrulet_count + as_smaller_than_b_sum *ds_smaller_than_c[b + 1]

    • quadruple_count :=quadrulet_count mod m

  • क्वाड्रुपलेट_काउंट लौटाएं

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

उदाहरण

import bisect
MOD = 10 ** 9 + 7
class Solution:
   def solve(self, nums):
      if len(nums) < 4:
         return 0
      n = len(nums)
      sorted_ds = list([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 = list([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 सिलेंडर की ऊंचाई है आइए अब कार्यान्वयन देखें उद