题目大意
https://leetcode.com/problems/non-decreasing-array/
数组中至多修改一个元素的值,问能不能变成非递减数组
题目分析
思路参考了 https://discuss.leetcode.com/topic/101144/java-c-simple-greedy-like-solution-with-explanation
有点贪心的思路,每次遇到i,可以判断i是否比i+1处的值大,如果大说明违反了“非递减”,cnt加1,同时需要修改值,使得nums[i]
和nums[i+1]
变成相同值,至于变成谁的值,还需进一步比较num[i-1]
和nums[i+1]
,具体边界控制可以看下代码。
代码
|
|
时间复杂度:O(n)