কম্পিউটার টিউটোরিয়াল

পাইথনে যাচাই করুন অ্যারে সর্টেড এবং রোটেটেড কিনা

ধরুন, n সংখ্যক ইউনিক মান সম্বলিত একটি অ্যারে দেওয়া হয়েছে। আমাদের যাচাই করতে হবে যে এই অ্যারেটি কি সর্টেড অবস্থা থেকে অ্যান্টি-ক্লকওয়াইজ (বামদিক) রোটেট করা হয়েছে। নোট: কমপক্ষে একবার রোটেশন হতে হবে, অর্থাৎ পুরোপুরি সর্টেড অ্যারেকে সর্টেড-এন্ড-রোটেটেড বলা হবে না।

যেমন, ইনপুট nums = [4,5,6,8,1,3] হলে আউটপুট হবে True, কারণ এটি দুবার ক্লকওয়াইজ রোটেট করলে [1, 3, 4, 5, 6, 8] হয়ে যায় (সর্টেড)।

সমাধানের ধাপসমূহ

  • অ্যারেতে ন্যূনতম মান (min_element) এবং তার ইনডেক্স (min_index) বের করুন।
  • before_sorted = True ধরুন। i = 1 থেকে min_index-1 পর্যন্ত চেক করুন যে nums[i] < nums[i-1] কিনা। যদি হয়, তবে before_sorted = False।
  • after_sorted = True ধরুন। i = min_index+1 থেকে শেষ পর্যন্ত চেক করুন যে nums[i] < nums[i-1] কিনা। যদি হয়, তবে after_sorted = False।
  • যদি before_sorted এবং after_sorted দুটোই True হয় এবং nums[-1] < nums[0] হয়, তবে True ফেরত দিন।
  • অন্যথায় False ফেরত দিন।

উদাহরণ কোড

def solve(nums):
    min_element = min(nums)
    min_index = nums.index(min_element)
    before_sorted = True
    for i in range(1, min_index):
        if nums[i] < nums[i-1]:
            before_sorted = False
            break
    after_sorted = True
    for i in range(min_index+1, len(nums)):
        if nums[i] < nums[i-1]:
            after_sorted = False
            break
    if before_sorted and after_sorted and nums[-1] < nums[0]:
        return True
    return False

nums = [4,5,6,8,1,3]
print(solve(nums))

ইনপুট

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

আউটপুট

True
  1. পাইথনে সর্টেড অ্যারেতে মেজরিটি এলিমেন্ট যাচাই করা

  2. পাইথনে রোটেটেড সর্টেড অ্যারেতে সার্চ

  3. পাইথনে সোর্টেড অ্যারে মার্জ (Merge Sorted Array)

  4. পাইথনে a.sort, sorted(a), np.argsort(a) এবং np.lexsort(b, a)