问题描述:一个矩阵,里面的元素只为1或者0,要求把元素为1的元素的同行和同列的所有元素都置为1,要求:算法空间复杂度为O(1).
void _setRowAndCol(int arrays[], int row, int col)
{
assert(arrays != NULL && row > 0 && col > 0);
int rowIndex = 0,colIndex = 0;
for(int i = 0; i < row*col; i++) //将原始1置为2
{
if(arrays[i] == 1)
++arrays[i];
}
for(int j = 0; j < row*col; j++)
{
if(arrays[j] > 1)
{
arrays[j] = 1;
rowIndex = j/col; //记录下此处原始1的行和列的下标
colIndex = j-rowIndex*col;
for(int n = 0; n < col; n++) //同行置1
{
if(arrays[rowIndex*col+n] == 0)
arrays[rowIndex*col+n] == 1;
}
for(int m = 0; m < row; m++) //同列置1
{
if(arrays[m*col+colIndex] == 0)
arrays[m*col+colIndex] == 1;
}
}
}
}
阅读(678) | 评论(0) | 转发(0) |