【LeetCode】665. Non-decreasing Array 解题记录
问题描述
Given an array nums with n integers, your task is to check if it could become non-decreasing by modifying at most one element.
We define an array is non-decreasing if nums[i] <= nums[i + 1] holds for every i (0-based) such that (0 <= i <= n - 2).
测试样例
1 | input: nums = [4,2,3] |
1 | Input: nums = [4,2,1] |
说明
1 | n == nums.length |
解题
思路
找到非递增的项,有两种情况
- 如
2 4 3 5 7
序列中的第二个元素4
, 其前一元素2
小于后一元素3
,则将4
降为3
,序列变成2 3 3 5 7
- 如
2 4 1 5 7
序列中的第二个元素4
, 其前一元素2
大于后一元素1
,则将1
升为4
,序列变成2 4 4 5 7
已修改的元素及其之前的元素是非减序列,判断其余元素即可
若出现第二个非递增项,返回 false
补充:
- 贪心算法
- 时间复杂度
O(nlogn)
(排序)
代码
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 哆啦 C 梦!
评论