কম্পিউটার

পাইথনে ইনভার্টেড ইনভার্সন খোঁজার প্রোগ্রাম


ধরুন আমাদেরকে সংখ্যার সংখ্যার তালিকা দেওয়া হয়েছে। আমাদের বিদ্যমান চতুর্ভুজের সংখ্যা খুঁজে বের করতে হবে (a, b, c, d) যেমন a nums[d]।

অ্যারে সংখ্যা হল পূর্ণসংখ্যা 1...N

এর একটি স্থানান্তর

সুতরাং, ইনপুট যদি সংখ্যার মত হয় =[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

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • m :=10^9 + 7

  • যদি সংখ্যার আকার <4, তাহলে

    • রিটার্ন 0

  • n :=সংখ্যার আকার

  • sorted_ds :=একটি নতুন তালিকা

  • sorted_ds

    এ সংখ্যার শেষ আইটেমটি সন্নিবেশ করান
  • তালিকা সাজান sorted_ds

  • ds_smaller_than_c :=[0] * n

  • n − 2 থেকে −1 পরিসরে c এর জন্য, 1 দ্বারা হ্রাস করুন, করুন

    • ds_smaller_than_c[c] :=sorted_ds-এ ডানদিকের অবস্থান ফেরত দিন যেখানে সংখ্যা[c] − 1 ঢোকানো যেতে পারে এবং সাজানো ক্রম বজায় রাখা যেতে পারে

    • sorted_ds

      এর শেষে nums[c] সন্নিবেশ করান
    • তালিকা সাজান sorted_ds

  • quadruplet_count :=0

  • sorted_as :=একটি নতুন তালিকা

  • sorted_as

    -এ প্রথম সংখ্যার সংখ্যা সন্নিবেশ করান
  • তালিকাটি sorted_as

    সাজান
  • as_smaller_than_b_sum :=0

  • 1 থেকে n − 2 পরিসরে b এর জন্য, করুন

    • as_smaller_than_b_sum :=as_smaller_than_b_sum + ডানদিকের অবস্থানটি সংযোজিত_যেখানে সংখ্যা[b] – 1 ঢোকানো যেতে পারে এবং সাজানো ক্রম বজায় রাখা যেতে পারে

    • তালিকাটি sorted_as

      সাজান
    • as_smaller_than_b_sum :=as_smaller_than_b_sum mod m

    • sorted_as

      এর শেষে nums[b] সন্নিবেশ করান
    • তালিকাটি sorted_as

      সাজান
    • quadruplet_count :=quadruplet_count + as_smaller_than_b_sum *ds_smaller_than_c[b + 1]

    • quadruplet_count :=quadruplet_count mod m

  • quadruplet_count

    ফেরত দিন

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

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. পাইথন প্রোগ্রাম a no দুইটির শক্তি কিনা তা খুঁজে বের করতে

  2. একটি ম্যাট্রিক্সের স্থানান্তর খুঁজে পেতে পাইথন প্রোগ্রাম

  3. অ্যারের যোগফল খুঁজে পেতে পাইথন প্রোগ্রাম

  4. পাইথন প্রোগ্রামে একটি সিলিন্ডারের পরিধি খুঁজুন