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
Hãy cùng chúng tôi xem cách triển khai sau đây để hiểu rõ hơn -
Ví dụ (Python)
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