如果输入数组为空,则array.size()应该为 0。第一个for,从0到array.size() - 1,应该意味着它从0到-1,对吗?
for那么,不应输入此值,并且该函数应返回 inversionsCounter 值,该值将是0
但这并没有发生,代码进入了无限循环。为什么是这样?
这是代码:
#include <vector>
#include <iostream>
using namespace std;
int countInversions(vector<int> array)
{
int inversionsCounter = 0;
for (int i = 0; i < array.size() - 1; ++i)
for (int j = i + 1; j < array.size(); ++j)
if (array[i] > array[j])
++inversionsCounter;
return inversionsCounter;
}
int main()
{
vector<int> array = {};
cout << array.size();
cout << …Run Code Online (Sandbox Code Playgroud) 由于某些原因,在 C++ 中,表达式if(!(n & 1))和if(n & 1 == 0)似乎不等价。
有人可以解释为什么会发生这种情况吗?