Giả sử chúng ta có một mảng với n số nguyên, nhiệm vụ của chúng ta là kiểm tra xem nó có thể trở thành không giảm hay không bằng cách sửa đổi nhiều nhất một phần tử. Chúng ta có thể xác định một mảng là không giảm nếu nó thỏa mãn quy tắc này:array [i] <=array [i + 1] với mọi i (1 <=i
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
-
Nếu arr có 2 phần tử trở xuống, thì trả về ture
-
ans:=Sai
-
cho tôi trong phạm vi 0 đến số phần tử trong arr - 2
-
nếu arr [i]> arr [i + 1]
-
nếu ans khác 0 thì trả về false, ngược lại ans:=True
-
nếu tôi> 0
-
nếu arr [i - 1]> arr [i + 1], thì arr [i + 1]:=arr [i]
-
-
-
-
trả về true
Ví dụ (Python)
Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn -
class Solution(object): def checkPossibility(self, nums): if len(nums) <=2: return True ans = False for i in range(len(nums)-1): if nums[i] > nums[i+1]: if ans: return False else: ans = True if i>0: if nums[i-1] > nums[i+1]: nums[i+1] = nums[i] return True ob1 = Solution() print(ob1.checkPossibility([4,2,3,5]))
Đầu vào
[4,2,3,5]
Đầu ra
True