我的代码中出现运行时错误,该错误说明如何通过最多修改一个元素来确定数组是否可以不减少

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)

我收到运行时溢出错误。

Max*_*mer 5

nums.size()未签名。如果大小小于2,size() - 2将溢出并返回一个非常大的数字,因此您将超出范围。

您只需将2移到另一侧即可解决此问题: i + 2 <= nums.size()