问题描述:一个矩阵,里面的元素只为1或者0,要求把元素为1的元素的同行和同列的所有元素都置为1,要求:算法空间复杂度为O(1).
1 void _setRowAndCol(int arrays[], int row, int col) 2 { 3 assert(arrays != NULL && row > 0 && col > 0); 4 5 int rowIndex = 0,colIndex = 0; 6 7 for(int i = 0; i < row*col; i++) //将原始1置为2 8 { 9 if(arrays[i] == 1) 10 ++arrays[i]; 11 } 12 13 for(int j = 0; j < row*col; j++) 14 { 15 if(arrays[j] > 1) 16 { 17 arrays[j] = 1; 18 rowIndex = j/col; //记录下此处原始1的行和列的下标 19 colIndex = j-rowIndex*col; 20 21 for(int n = 0; n < col; n++) //同行置1 22 { 23 if(arrays[rowIndex*col+n] == 0) 24 arrays[rowIndex*col+n] == 1; 25 } 26 for(int m = 0; m < row; m++) //同列置1 27 { 28 if(arrays[m*col+colIndex] == 0) 29 arrays[m*col+colIndex] == 1; 30 } 31 } 32 } 33 }