我正在编写一个函数,该函数接受一个整数“ size”作为输入并返回一个二维矢量,该矢量从1螺旋填充到size * size。因此,我创建了4个附加功能来遍历左,右,下和上。除底部功能外,所有功能均正常工作。在这里,我提供了解决问题所需的全部代码的一部分。
错误:-由于运行时错误,您的提交停止了。例如:除以 零,数组索引超出范围,未捕获异常。
当我传递“ right”函数和“ bottom”函数时,出现运行时错误。问题出在功能上,但我无法解决。正确的功能顺利通过,但是底部功能出了问题。
void right(vector<vector<int>> &A,int &row,int &column,int &total_elements,int size)
{
if(total_elements==0) return;
while(A[row][column]==INT_MIN && column<size)
{
A[row][column]=1+A[row][column-1];
column++;
total_elements--;
}
column--;
return;
}
void bottom(vector<vector<int>> &A,int &row,int &column,int &total_elements,int size)
{
if(total_elements==0) return;
while(A[row][column]==INT_MIN && row<l)
{
A[row][column]=1+A[row-1][column];
row++;
total_elements--;
}
row--;
return;
}
vector<vector<int> > Solution::generateMatrix(int size) {
int total_elements=size*size;
vector< vector <int> > arr(size, vector <int> (size, INT_MIN));
arr[0][0]=1;total_elements-=1;
int row=0;
int column=1;
right(arr,row,column,total_elements,size);
row++;
bottom(arr,row,column,total_elements,size);
column--;
return arr;
}