Given a 0-indexed integer array nums
, return true
if it can be made strictly increasing after removing exactly one element, or false
otherwise. If the array is already strictly increasing, return true
.
The array nums
is strictly increasing if nums[i - 1] < nums[i]
for each index (1 <= i < nums.length)
.
Input: nums = [1,2,10,5,7] Output: true Explanation: By removing 10 at index 2 from nums, it becomes [1,2,5,7]. [1,2,5,7] is strictly increasing, so return true.
Input: nums = [2,3,1,2] Output: false Explanation: [3,1,2] is the result of removing the element at index 0. [2,1,2] is the result of removing the element at index 1. [2,3,2] is the result of removing the element at index 2. [2,3,1] is the result of removing the element at index 3. No resulting array is strictly increasing, so return false.
Input: nums = [1,1,1] Output: false Explanation: The result of removing any element is [1,1]. [1,1] is not strictly increasing, so return false.
2 <= nums.length <= 1000
1 <= nums[i] <= 1000
impl Solution {
pub fn can_be_increasing(nums: Vec<i32>) -> bool {
let mut nums = nums;
let mut removed = false;
for i in 1..nums.len() {
if nums[i] <= nums[i - 1] {
if removed {
return false;
}
if i > 1 && nums[i] <= nums[i - 2] {
nums[i] = nums[i - 1];
}
removed = true;
}
}
true
}
}