665 非递减数列
本文最后更新于:2022年4月9日 中午

给你一个长度为 n
的整数数组,请你判断在 最多 改变 1
个元素的情况下,该数组能否变成一个非递减数列。
我们是这样定义一个非递减数列的: 对于数组中所有的 i
(0 <= i <= n-2)
,总满足 nums[i] <= nums[i + 1]
。
示例 1:
1 |
|
示例 2:
1 |
|
说明:
1 <= n <= 10 ^ 4
- 10 ^ 5 <= nums[i] <= 10 ^ 5
Solution
@憨憨阿狗
从索引为1的下标开始遍历数组,比较当前元素与前一个元素的大小,如果小于则说明存在逆序对,
cnt
加1。(注意比较顺序,与前一个元素比较)当存在如
[3, 4, 2, 3]
的情况时,遍历到i=2
时,需要考虑如下条件:- 把 2 放大,并且保证 2 后面的数不能比 4 小,2 前面的数均是非递减的;
- 把 4 缩小,并且保证 4 前面的数不能比 2 大,4 后面的数均是非递减的。
当
2 < 4
时,如果以上两个选择同时不满足,说明该数组肯定无法通过只修改一个元素而变为非递减数组。
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!