Giả sử chúng ta có một danh sách các số được gọi là num, trong đó n phần tử có mặt. Chúng ta phải kiểm tra xem chúng ta có thể tạo danh sách với n số tự nhiên đầu tiên theo kiểu tăng hoặc giảm, như [1, 2, ..., n] hoặc [n, n - 1, ..., 1] hay không bằng cách dịch chuyển sang bên phải bất kỳ số lần nào hoặc không.
Vì vậy, nếu đầu vào giống như nums =[5,6,1,2,3,4], thì đầu ra sẽ là True, vì chúng ta có thể dịch chuyển chúng bốn lần để tạo mảng [1,2,3,4, 5,6]
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- n:=kích thước của nums
- đối với tôi trong phạm vi từ 1 đến n - 1, thực hiện
- nếu | nums [i - 1] - nums [i] | không phải là 1 và | nums [i - 1] - nums [i] | không phải là n-1, thì
- trả về Sai
- nếu | nums [i - 1] - nums [i] | không phải là 1 và | nums [i - 1] - nums [i] | không phải là n-1, thì
- trả về True
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(nums): n = len(nums) for i in range(1, n): if abs(nums[i - 1] - nums[i]) != 1 and abs(nums[i - 1] - nums[i]) != n - 1: return False return True nums = [5,6,1,2,3,4] print(solve(nums))
Đầu vào
[5,6,1,2,3,4]
Đầu ra
True