สมมติ Array nums ไม่เรียง Element อยู่ใน 0..n-1 สลับ Adjacent ได้เฉพาะตอนที่ |diff| = 1 ต้องเช็คว่าเรียงได้หรือไม่
เช่น Input nums = [1, 0, 3, 2, 5, 4] Output True สลับ (1,0), (3,2), (5,4) ได้ [0,1,2,3,4,5]
ขั้นตอนแก้:
- วน i=0..n-2: ถ้า nums[i] > nums[i+1] ต้องมี nums[i] - nums[i+1] == 1 ถึงจะสลับได้ มิฉะนั้น Return False
- Return 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))
Input
[1, 0, 3, 2, 5, 4]
Output
True