একটি অ্যারে nums দেওয়া আছে। যাচাই করতে হবে যে অ্যারেটি 본래 নন-ডিক্রিজিং অর্ডারে সোর্টেড ছিল কিনা এবং তারপর কিছু পজিশন রোটেট করা হয়েছে কিনা (হওয়ায় শূন্যও হতে পারে)। অ্যারেতে ডুপ্লিকেট থাকতে পারে।
ইনপুট: nums = [12, 15, 2, 5, 6, 9] → আউটপুট: True। কারণ এটি ডানে ২ পজিশন রোটেট করা হয়েছে।
সমাধানের ধাপসমূহ
j := 0
যখন j < len(nums)-1 এবং nums[j] <= nums[j+1]: j++
res := nums[j+1:] + nums[:j+1] (রোটেশন বাতিল করে সোর্টেড অ্যারে পুনর্গঠন)
res-এ যেকোনো জায়গায় res[i] > res[i+1] থাকলে False রিটার্ন করুন
True রিটার্ন করুন
উদাহরণ (Python)
def solve(nums):
j = 0
while j < len(nums) - 1 and nums[j] <= nums[j + 1]:
j += 1
res = nums[j + 1:] + nums[:j + 1]
for i in range(len(res) - 1):
if res[i] > res[i + 1]:
return False
return True
nums = [12, 15, 2, 5, 6, 9]
print(solve(nums))
ইনপুট
[12, 15, 2, 5, 6, 9]
আউটপুট
True