首页 > 代码库 > 关于0-1矩阵置1的问题

关于0-1矩阵置1的问题

问题描述:一个矩阵,里面的元素只为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++)    //同行置122             {23                 if(arrays[rowIndex*col+n] == 0)24                     arrays[rowIndex*col+n] == 1;25             }26             for(int m = 0; m < row; m++)    //同列置127             {28                 if(arrays[m*col+colIndex] == 0)29                     arrays[m*col+colIndex] == 1;30             }31         }32     }33 }

 

关于0-1矩阵置1的问题