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

Kiểm tra xem có thể sắp xếp mảng sau khi xoay nó bằng Python hay không

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

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