Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่า Array เรียงได้ด้วย Conditional Swap (Adjacent Diff = 1) หรือไม่ด้วย Python


สมมติ 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