ধরি আমাদের একটি নম্বরের অ্যারে আছে যার নাম nums, যেখানে সব এলিমেন্ট ইউনিক। আমাদের যাচাই করতে হবে nums প্রায় সর্টেড কিনা। একটি অ্যারে প্রায় সর্টেড হলে তার যেকোনো এলিমেন্ট তার আসল পজিশন থেকে সর্বোচ্চ ১ দূরত্বে থাকতে পারে।
উদাহরণস্বরূপ, nums = [10, 30, 20, 40] হলে আউটপুট হবে True, কারণ 10 তার আসল জায়গায় আছে এবং বাকি সব এলিমেন্ট তাদের আসল পজিশন থেকে সর্বোচ্চ এক ঘর দূরে।
সমাধানের ধাপসমূহ
- i := 0
- যতক্ষণ i < nums-এর সাইজ - 1:
- যদি nums[i] > nums[i+1], তবে সেগুলো 스왪 করুন এবং i বাড়ান
- i বাড়ান
- সারো অ্যারে চেক করুন কোনো এলিমেন্ট অর্ডার বাইরে আছে কিনা
- যদি কোনো এলিমেন্ট অর্ডার বাইরে থাকে তবে false, অন্যথায় true রিটার্ন করুন
উদাহরণ
def solve(nums):
i = 0
while i < len(nums) - 1:
if nums[i] > nums[i + 1]:
nums[i], nums[i + 1] = nums[i + 1], nums[i]
i += 1
i += 1
for i in range(len(nums) - 1):
if nums[i] > nums[i + 1]:
return False
return True
nums = [10, 30, 20, 40]
print(solve(nums))
ইনপুট
[10, 30, 20, 40]
আউটপুট
True