Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình kiểm tra xoay phải tạo mảng 1..n tăng hoặc giảm Python

Cho mảng nums độ dài n. Kiểm tra có thể xoay phải (cyclic shift) bao nhiêu lần cũng được để được mảng [1,2,...,n] hoặc [n,n-1,...,1] không.

Ví dụ: nums=[5,6,1,2,3,4] → True (xoay 4 lần → [1,2,3,4,5,6]).

Giải thuật (Kiểm tra chênh lệch liền kề)

Trong mảng 1..n xoay vòng, cặp liền kề luôn chênh lệch 1 hoặc n-1 (cặp nối đầu-cuối). Kiểm tra mọi cặp liền kề thỏa mãn điều kiện này.

Ví dụ triển khai

def solve(nums):
    n = len(nums)
    for i in range(1, n):
        diff = abs(nums[i-1] - nums[i])
        if diff != 1 and diff != n - 1:
            return False
    return True

print(solve([5, 6, 1, 2, 3, 4]))

Đầu vào

[5, 6, 1, 2, 3, 4]

Đầu ra

True