কম্পিউটার

পাইথনে এক অদলবদল সহ পূর্ববর্তী স্থানান্তর


ধরুন আমাদের কাছে ধনাত্মক পূর্ণসংখ্যার একটি অ্যারে রয়েছে (অগত্যা অনন্য নয়), আমাদের অভিধানগতভাবে সবচেয়ে বড় স্থানচ্যুতি খুঁজে বের করতে হবে যা A থেকে ছোট, যেটি একটি অদলবদল করে তৈরি করা যেতে পারে (A অদলবদল দুটি সংখ্যা A[i] এর অবস্থান বিনিময় করে এবং A[j])। যদি এটি সম্ভব না হয়, তাহলে একই অ্যারে ফেরত দিন। সুতরাং যদি অ্যারেটি [3,2,1] এর মত হয়, তাহলে আউটপুট হবে [3,1,2], 2 এবং 1 অদলবদল করে

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

  • n :=A এর আকার
  • রেঞ্জ n – 2 থেকে নিচে -1
      -এ বাম
    • বামে থাকলে =-1, তারপর A ফেরত দিন, অন্যথায় যখন A[left]> A[left + 1], তারপর বিরতি দিন
  • উপাদান :=0, সূচক :=0
  • রেঞ্জে ডানের জন্য বাম + 1 থেকে n
    • যদি A[ডান] উপাদান, তাহলে
      • এলিমেন্ট =A[ডান]
      • সূচী :=ডান
  • অদলবদল A[বাম] এবং A[সূচী]
  • রিটার্ন A

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

উদাহরণ

class Solution(object):
   def prevPermOpt1(self, A):
      n = len(A)
      for left in range(n-2,-2,-1):
         if left == -1:
            return A
         elif A[left]>A[left+1]:
            break
      element = 0
      index = 0
      for right in range(left+1,n):
         if A[right]<A[left] and A[right]>element:
            element = A[right]
            index = right
      temp = A[left]
      A[left] = A[index]
      A[index] = temp
      return A
ob = Solution()
print(ob.prevPermOpt1([4,2,3,1,3]))

ইনপুট

[4,2,3,1,3]

আউটপুট

[4, 2, 1, 3, 3]

  1. কিভাবে Python Tkinter এর সাথে এক লাইনে একাধিক লেবেল প্রদর্শন করবেন?

  2. Python - PyGame এর সাথে ছবি প্রদর্শন করুন

  3. পাইথন ব্যবহার করে এক লাইনে দুটি ভেরিয়েবল অদলবদল করবেন?

  4. উদাহরণ সহ পাইথনে Timeit?