Giả sử chúng ta có một danh sách các số được gọi là nums, chúng ta phải kiểm tra xem chúng ta có thể sắp xếp các số hay không bằng cách sử dụng phép quay. Bằng cách xoay, chúng ta có thể dịch chuyển một số phần tử liền kề từ cuối nums và đặt nó ở phía trước của mảng.
Vì vậy, nếu đầu vào giống như nums =[4,5,6,1,2,3], thì đầu ra sẽ là True vì chúng ta có thể sắp xếp bằng cách xoay ba phần tử cuối cùng và gửi chúng trở lại đầu tiên.
Để 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
- nếu nums được sắp xếp, thì
- trả về True
- nếu không,
- trạng thái:=True
- đối với tôi trong phạm vi từ 0 đến n - 2, thực hiện
- nếu nums [i]> nums [i + 1], thì
- ra khỏi vòng lặp
- nếu nums [i]> nums [i + 1], thì
- i:=i + 1
- đối với k trong phạm vi i đến n - 2, thực hiện
- nếu nums [k]> nums [k + 1], thì
- trạng thái:=Sai
- ra khỏi vòng lặp
- nếu nums [k]> nums [k + 1], thì
- nếu trạng thái là false, thì
- trả về Sai
- nếu không,
- nếu nums [n - 1] <=nums [0], thì
- trả về True
- trả về Sai
- nếu nums [n - 1] <=nums [0], thì
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) if all(nums[i] <= nums[i + 1] for i in range(len(nums) - 1)): return True else : status = True for i in range(n - 1) : if nums[i] > nums[i + 1] : break i += 1 for k in range(i, n - 1) : if nums[k] > nums[k + 1]: status = False break if not status: return False else : if nums[n - 1] <= nums[0]: return True return False nums = [4,5,6,1,2,3] print(solve(nums))
Đầu vào
[4,5,6,1,2,3]
Đầu ra
True