Giả sử chúng ta có một mảng số được gọi là nums, trong đó tất cả các phần tử là duy nhất. Chúng ta phải kiểm tra xem nums gần như đã được sắp xếp hay chưa. Như chúng ta biết, một mảng gần như được sắp xếp khi bất kỳ phần tử nào của nó có thể xuất hiện cách vị trí ban đầu của nó tối đa 1 khoảng cách trong mảng đã sắp xếp.
Vì vậy, nếu đầu vào giống như nums =[10, 30, 20, 40], thì đầu ra sẽ là True vì 10 được đặt ở vị trí ban đầu và tất cả các phần tử khác đều ở vị trí tối đa cách vị trí thực của chúng.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- i:=0
- while i
- nếu nums [i]> nums [i + 1], thì
- hoán đổi nums [i] và nums [i + 1]
- i:=i + 1
- i:=i + 1
- nếu nums [i]> nums [i + 1], thì
- nếu nums [i]> nums [i + 1], thì
- 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): i = 0 while i < len(nums) - 1: if nums[i] > nums[i + 1]: nums[i], nums[i + 1] = nums[i + 1], nums[i] i += 1 i += 1 for i in range(len(nums) - 1): if nums[i] > nums[i + 1]: return False return True nums = [10, 30, 20, 40] print(solve(nums))
Đầu vào
[10, 30, 20, 40]
Đầu ra
True