Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình kiểm tra dạng xoay phải tăng hoặc giảm mảng có n số tự nhiên đầu tiên hay không trong Python

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
  • 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