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

Kiểm tra xem có thể sắp xếp một mảng với sự hoán đổi có điều kiện của các vùng liền kề được phép trong Python hay không

Giả sử chúng ta có một mảng số không có thứ tự được gọi là num và tất cả các phần tử đều nằm trong phạm vi từ 0 đến n-1. Chúng ta có thể hoán đổi các phần tử liền kề theo nums nhiều lần theo yêu cầu nhưng chỉ khi sự khác biệt tuyệt đối giữa các phần tử này là 1. Chúng tôi phải kiểm tra xem chúng tôi có thể sắp xếp các nums hay không.

Vì vậy, nếu đầu vào giống như nums =[1, 0, 3, 2, 5, 4], thì đầu ra sẽ là True vì chúng ta có thể hoán đổi các cặp này [(1, 0), (3, 2), (5 , 4)] để sắp xếp [0, 1, 2, 3, 4, 5].

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • đối với tôi trong phạm vi từ 0 đến kích thước là nums - 2, thực hiện
    • nếu nums [i]> nums [i + 1], thì
      • nếu nums [i] - nums [i + 1] giống 1 thì
        • trao đổi nums [i] và nums [i + 1]
      • nếu không,
        • 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):
   for i in range(len(nums) - 1):
      if nums[i] > nums[i+1]:
         if nums[i] - nums[i+1] == 1:
            nums[i], nums[i+1] = nums[i+1], nums[i]
         else:
            return False
   return True
nums = [1, 0, 3, 2, 5, 4]
print(solve(nums))

Đầu vào

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

Đầu ra

True