Giả sử chúng ta có một mảng gọi là nums với các phần tử duy nhất. Chúng ta phải kiểm tra xem mảng có được sắp xếp hay không sau khi đảo ngược một mảng con của nó. Nếu mảng đã được sắp xếp, thì cũng trả về true.
Vì vậy, nếu đầu vào giống như nums =[4,6,27,25,15,9,37,42], thì đầu ra sẽ là True vì nếu chúng ta đảo ngược [9,15,25,27], thì mảng sẽ được sắp xếp.
Để 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 mảng chỉ có một phần tử thì trả về True
- i:=1
- đối với tôi trong phạm vi từ 1 đến n - 1, thực hiện
- nếu nums [i - 1]
- nếu tôi giống với n, thì trả về true, nếu không thì trả về từ vòng lặp
- nếu nums [i - 1]
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Mã mẫu
def solve(nums): n = len(nums) if n == 1: return True i = 1 for i in range(1, n): if nums[i - 1] < nums[i] : if i == n: return True else: break j = i while j < n and nums[j] < nums[j - 1]: if i > 1 and nums[j] < nums[i - 2]: return False j += 1 if j == n: return True k = j if nums[k] < nums[i - 1]: return False while k > 1 and k < n: if nums[k] < nums[k - 1]: return False k += 1 return True nums = [4,6,27,25,15,9,37,42] print(solve(nums))
Đầu vào
[4,6,27,25,15,9,37,42]
Đầu ra
True