给你一个长度为 n 的整数数组,请你判断在 最多 改变 1 个元素的情况下,该数组能否变成一个非递减数列。
我们是这样定义一个非递减数列的: 对于数组中所有的 i (0 <= i <= n-2),总满足 nums[i] <= nums[i + 1]。
题目来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/non-decreasinarray
fun checkPossibility(nums: IntArray): Boolean {
if(nums.size<2){
return true
}
var temp = false
for (i in 0 until nums.size-1){
if(nums[i]>nums[i+1]){
if(temp){
return false
}
temp=true
if(i==0){
nums[i]=nums[i+1]
}else if(nums[i-1]>nums[i+1]){
nums[i+1]=nums[i]
}else if(nums[i-1]<nums[i+1]){
nums[i]=nums[i-1]
}
}
}
return true
}
//思路是如果碰到一个不符合条件的,我们现把他变成符合条件的,如果碰到第二个非递减则认为不可改变一个数字使其达到递减序列,这居然是easy,读题不仔细,导致卡了一天。写代码还是刷题都要细心哦。