-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy path665.non-decreasing-array.cpp
48 lines (45 loc) · 1.17 KB
/
665.non-decreasing-array.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
// Tag: Array
// Time: O(N)
// Space: O(1)
// Ref: -
// Note: -
// 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).
//
// Example 1:
//
// Input: nums = [4,2,3]
// Output: true
// Explanation: You could modify the first 4 to 1 to get a non-decreasing array.
//
// Example 2:
//
// Input: nums = [4,2,1]
// Output: false
// Explanation: You cannot get a non-decreasing array by modifying at most one element.
//
//
// Constraints:
//
// n == nums.length
// 1 <= n <= 104
// -105 <= nums[i] <= 105
//
//
class Solution {
public:
bool checkPossibility(vector<int>& nums) {
int count = 0;
for (int i = 1; i < nums.size(); i++) {
if (nums[i] < nums[i - 1]) {
count ++;
if (i - 2 >= 0 && nums[i - 2] > nums[i]){
nums[i] = nums[i - 1];
} else {
nums[i - 1] = nums[i];
}
}
}
return count <= 1;
}
};