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

পাইথনে একটি সাবঅ্যারে রিভার্স করে অ্যারে সোর্ট করা সম্ভব কিনা

একটি অ্যারে nums (unique elements) দেওয়া আছে। যাচাই করতে হবে যে কি একটি সাবঅ্যারে রিভার্স করে পুরো অ্যারেটি সর্ট করা যায়। ইতিমধ্যে সর্টেড থাকলেও True।

উদাহরণ

ইনপুট: nums = [4, 6, 27, 25, 15, 9, 37, 42]

আউটপুট: True

ব্যাখ্যা: সাবঅ্যারে [9, 15, 25, 27] রিভার্স করলে সর্টেড হয়।

অ্যালগরিদম

  1. প্রথম غير-সর্টেড জায়গা খুঁজুন (i)।
  2. তারপর ক্রমাগত কমমান অংশ খুঁজুন (j)।
  3. শর্ত যাচাই: j-র পরের এলিমেন্ট i-1-তম এলিমেন্টের চেয়ে বড়, এবং বাকি অংশ সর্টেড।

উদাহরণ কোড

def solve(nums):
    n = len(nums)
    if n == 1:
        return True
    i = 1
    for i in range(1, n):
        if nums[i - 1] < nums[i]:
            if i == n:
                return True
            else:
                break
    j = i
    while j < n and nums[j] < nums[j - 1]:
        if i > 1 and nums[j] < nums[i - 2]:
            return False
        j += 1
    if j == n:
        return True
    k = j
    if nums[k] < nums[i - 1]:
        return False
    while k > 1 and k < n:
        if nums[k] < nums[k - 1]:
            return False
        k += 1
    return True

nums = [4, 6, 27, 25, 15, 9, 37, 42]
print(solve(nums))  # Output: True

ইনপুট

[4, 6, 27, 25, 15, 9, 37, 42]

আউটপুট

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

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

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

  4. পাইথনে অ্যারে মনোটোনিক (Monotonic) কিনা চেক করা