题目:
给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。
我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。
解法:
情况1:nums[i-1] < nums[i],修改nums[i+1]=nums[i]
情况2:nums[i-1] > nums[i],修改nums[i]=nums[i+1],nums[i+1]不动
func checkPossibility(nums []int) bool {
valley := false
for i := 0; i < len(nums)-1; i++ {
if nums[i] > nums[i + 1] {
if valley {
return false
}
valley = true
if i != 0 && nums[i + 1] < nums[i - 1] {
nums[i + 1] = nums[i]
}
}
}
return true
}