携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第24天,点击查看活动详情
题目描述
给你一个下标从 0 开始的整数数组 nums ,如果 恰好 删除 一个 元素后,数组 严格递增 ,那么请你返回 true ,否则返回 false 。如果数组本身已经是严格递增的,请你也返回 true 。
数组 nums 是 严格递增 的定义为:对于任意下标的 1 <= i < nums.length 都满足 nums[i - 1] < nums[i] 。
来源:力扣(LeetCode)
- 示例 1
输入:nums = [1,2,10,5,7]
输出:true
解释:从 nums 中删除下标 2 处的 10 ,得到 [1,2,5,7] 。
[1,2,5,7] 是严格递增的,所以返回 true 。
- 示例 2
输入:nums = [2,3,1,2]
输出:false
解释:
[3,1,2] 是删除下标 0 处元素后得到的结果。
[2,1,2] 是删除下标 1 处元素后得到的结果。
[2,3,2] 是删除下标 2 处元素后得到的结果。
[2,3,1] 是删除下标 3 处元素后得到的结果。
没有任何结果数组是严格递增的,所以返回 false 。
- 示例 3
输入: nums = [1,1,1]
输出: false
解释: 删除任意元素后的结果都是 [1,1] 。
[1,1] 不是严格递增的,所以返回 false 。
思路分析
题目给一个整数数组nums,需要我们求出:删除任意一个元素后,剩下的数组元素能有递增状态,若是有就返回true,否则返回false。
这道题可以采用暴力解决;先复制一个数组newArr出来,确保在修改数组时不会影响到原数组;循环元素组,在数组newArr中删除掉原数组的循环项,判断剩下的元素是不是递增状态,若是,那么就是严格递增数组,返回true,否则返回false.
AC代码
function solution(nums) {
Object.freeze(nums);
for(let i=0; i<nums.length; i++) {
let count = 0;
let newArr = [...nums];
newArr.splice(i, 1);
for(let j=0; j<newArr.length-1; j++) {
if(newArr[j] >= newArr[j+1]) {
count ++
}
}
if(count < 1) {
console.log(count);
console.log(true);
return true;
}
}
console.log(false)
return false;
}
let nums = [1,2,5,9,6,7];
solution(nums)