665.非递减数列

75 阅读1分钟

题目:
给你一个长度为 n 的整数数组 nums ,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。

我们是这样定义一个非递减数列的: 对于数组中任意的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]解法:
情况1:nums[i-1] < nums[i],修改nums[i+1]=nums[i] image.png 情况2:nums[i-1] > nums[i],修改nums[i]=nums[i+1],nums[i+1]不动 image.png

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
}