我在做Leetcode问题。 我已经理解了逻辑,但对整数值溢出有一点怀疑
下面是我的代码:
vector<vector<int>> generate(int numRows)
{
int size;
vector<vector<int>>re;
vector<int> a;
vector<int> b;
a.push_back(1);
re.push_back(a);
numRows--;
while(numRows--)
{
b.push_back(1);
size=a.size();
size++;
for(int i=1;i<size-1;i++)
{
b.push_back(a[i]+a[i-1]); // <------ It is showing interger overflow at this
}
b.push_back(1);
re.push_back(b);
a=b;
b.clear();
}
return re;
}
下面是运行良好的代码:
vector<vector<int>> generate(int numRows) {
vector<vector<int>> r(numRows);
for (int i = 0; i < numRows; i++) {
r[i].resize(i + 1);
r[i][0] = r[i][i] = 1;
for (int j = 1; j < i; j++) {
r[i][j] = r[i - 1][j - 1] + r[i - 1][j]; // <- Doing same addition but not facing any interger overflow issue ?
}
}
return r;
}
我想知道上面的代码在相同的测试用例上不会面临整数溢出。
我不确定测试用例是什么,但是对于输入numrows=0
,您将遇到无限的while
循环,这可能是整数溢出的原因,请尝试
while(numRows>0)
当您试图存储的值大于可以存储在整数中的最大值时,就会发生整数溢出