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
- nếu nums [i] - nums [i + 1] giống 1 thì
- nếu nums [i]> nums [i + 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): 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