Within Temptation

Touch guitar's programmer

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

问题描述:一个矩阵,里面的元素只为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 }

 

posted on 2014-11-23 17:24  Within_Temptation  阅读(253)  评论(0编辑  收藏  举报