Mar*_*aru -1 c++ arrays vector
给定一个带有
n
整数的数组,您的任务是通过最多修改1个元素来检查它是否可以变小。我们定义一个数组,如果array[i] <= array[i + 1]
对each 保持不变,则它是非递减的i
(1 <= i < n)
。
我的代码是下面的代码。我在运行时遇到运行时错误,但无法确定错误是什么。我是编程新手,所以如果发现错误,请以最简单的方式进行说明。谢谢。
class Solution {
public:
bool checkPossibility(vector<int> &nums) {
bool status = false;
int count = 0;
for (int i = 0; i <= nums.size() - 2; i++) {
if (nums[i] > nums[i + 1]) {
count++;
}
}
if (count > 1) {
status = false;
} else {
status = true;
}
return status;
}
};
Run Code Online (Sandbox Code Playgroud)
我收到运行时溢出错误。
nums.size()
未签名。如果大小小于2,size() - 2
将溢出并返回一个非常大的数字,因此您将超出范围。
您只需将2移到另一侧即可解决此问题: i + 2 <= nums.size()