মান লিজিয়ে আমাদের একটি অনর্ডারড (unordered) অ্যারে nums আছে এবং সব এলিমেন্ট ০ থেকে n-1 রেঞ্জে। আমরা nums-এ যতবার ইচ্ছে এডজেসেন্ট (adjacent) এলিমেন্ট সোয়্যাপ (swap) করতে পারি কিন্তু শুধু তখনই যখন তাদের এবসোলিউট ডিফারেন্স (absolute difference) ১। আমাদের যাচাই করতে হবে nums সর্ট করা সম্ভব কিনা।
যেমন, ইনপুট যদি nums = [1, 0, 3, 2, 5, 4] হয়, তবে আউটপুট হবে True কারণ আমরা এই জোড়াগুলো [(1, 0), (3, 2), (5, 4)] সোয়্যাপ করে সর্ট করতে পারি [0, 1, 2, 3, 4, 5]।
সমাধানের ধাপসমূহ
i০ থেকেnums-এর সাইজ - ২ পর্যন্ত, করুন:- যদি
nums[i] > nums[i+1]হয়, তবে:- যদি
nums[i] - nums[i+1]১ সমান হয়, তবে:nums[i]এবংnums[i+1]এক্সচেঞ্জ করুন
- অন্যথায়:
Falseরিটার্ন করুন
- যদি
- যদি
Trueরিটার্ন করুন
উদাহরণ
বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:
def solve(nums):
for i in range(len(nums) - 1):
if nums[i] > nums[i+1]:
if nums[i] - nums[i+1] == 1:
nums[i], nums[i+1] = nums[i+1], nums[i]
else:
return False
return True
nums = [1, 0, 3, 2, 5, 4]
print(solve(nums))
ইনপুট
[1, 0, 3, 2, 5, 4]
আউটপুট
True