কম্পিউটার

পাইথনে আরোহী ক্রমে উপাদান মুছে ফেলার পর একটি তালিকার সূচক পেতে প্রোগ্রাম


ধরুন আমাদের কাছে স্বতন্ত্র মানের একটি তালিকা আছে এবং আমরা প্রতিটি সংখ্যাকে অ-হ্রাস না হওয়া ক্রমে সরাতে চাই। তাদের মুছে ফেলার জন্য আমাদের সংখ্যার সূচকগুলি খুঁজে বের করতে হবে৷

সুতরাং, ইনপুট যদি nums =[4, 6, 2, 5, 3, 1] এর মত হয়, তাহলে আউটপুট হবে [5, 2, 3, 0, 1, 0] যেমন আমরা 1 মুছে ফেলব, তাই অ্যারে হল [ 4, 6, 2, 5, 3], তারপর 2 মুছে ফেলুন, অ্যারে হল [4, 6, 5, 3], তারপর 3 সরান আমরা [4, 6, 5] পাব, তারপর 4 সরান আমরা [6, 5] পাই , 5, [6] সরান এবং অবশেষে 6 সরান।

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

  • একটি ফাংশন my_sort() সংজ্ঞায়িত করুন। এর জন্য inds লাগবে
  • যদি ইন্ডসের আকার <=1 হয়, তাহলে
    • ইন্ডস ফেরত দিন
  • sorted_inds :=একটি নতুন তালিকা
  • mid :=inds / 2 এর আকার
  • বামে :=my_sort(inds[index 0 থেকে mid]), ডানে :=my_sort(inds[index mid থেকে end])
  • i :=0, j :=0
  • যখন i <বাম সাইজ এবং j <ডান সাইজ, do
    • যদি nums[left[i]]
    • sorted_inds-এর শেষে বাঁদিকে [i] সন্নিবেশ করুন
    • i :=i + 1
  • অন্যথায়,
    • সর্টেড_ইন্ডের শেষে ডানদিকে [j] সন্নিবেশ করুন
    • বৃহত্তর[ডান[জে]] :=বড়[ডান[জে]] + বামের আকার - i
    • j :=j + 1
  • বামদিকে [সূচী i থেকে শেষ পর্যন্ত] sorted_inds-এ ঢোকান
  • সর্টেড_ইন্ডে ডানে [j থেকে শেষ পর্যন্ত] সন্নিবেশ করুন
  • রিটার্ন sorted_inds
  • প্রধান পদ্ধতি থেকে নিম্নলিখিতগুলি করুন -
  • বৃহত্তর :=আকার সংখ্যার একটি নতুন তালিকা এবং 0 দিয়ে পূরণ করুন
  • my_sort(পরিসীমা 0 থেকে সংখ্যার আকার)
  • num_larger_pairs :=প্রতিটির জন্য জোড়া তৈরি করুন (সংখ্যা, বড়) এবং সাজান
  • সংখ্যা_বৃহৎ_জোড়ার সকল ই-এর জন্য e[1] সহ একটি তালিকা ফেরত দিন
  • উদাহরণ (পাইথন)

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

    class Solution:
       def solve(self, nums):
          return solve(nums)
    def solve(nums):
       def my_sort(inds):
          if len(inds) <= 1:
             return inds
          sorted_inds = []
          mid = len(inds) // 2
          left, right = my_sort(inds[:mid]), my_sort(inds[mid:])
          i = j = 0
          while i < len(left) and j < len(right):
             if nums[left[i]] < nums[right[j]]:
                sorted_inds.append(left[i])
                i += 1
             else:
                sorted_inds.append(right[j])
                larger[right[j]] += len(left) - i
                j += 1
          sorted_inds.extend(left[i:])
          sorted_inds.extend(right[j:])
          return sorted_inds
       larger = [0] * len(nums)
       my_sort(range(len(nums)))
       num_larger_pairs = sorted(zip(nums, larger))
       return [e[1] for e in num_larger_pairs]
    ob = Solution()
    nums = [4, 6, 2, 5, 3, 1]
    print(ob.solve(nums))

    ইনপুট

    [4, 6, 2, 5, 3, 1]

    আউটপুট

    [5, 2, 3, 0, 1, 0]

    1. পাইথনে একটি তালিকার অ-সংলগ্ন উপাদানগুলির বৃহত্তম যোগফল খুঁজে বের করার প্রোগ্রাম

    2. পাইথনে ম্যাচ সূচক পান

    3. পাইথনে সূচক দ্বারা একটি তালিকার উপাদান খুঁজুন

    4. পাইথনে তালিকার উপাদানগুলি মুছুন