顺时针打印二维数组
package 每日算法学习打卡. 算法打卡. 七月份. 七月二十六号; public class test1 { public static void main ( String [ ] args) { int [ ] [ ] matrix = { { 1 , 2 } , { 5 , 6 } , { 9 , 10 } , { 13 , 14 } , } ; print ( matrix) ; } static void print ( int [ ] [ ] matrix) { int leftUpRow = 0 , leftUpCol = 0 , rightDownRow = matrix. length- 1 , rightDownCol = matrix[ 0 ] . length- 1 ; while ( leftUpRow<= rightDownRow && leftUpCol <= rightDownCol) { int r = leftUpRow, c = leftUpCol; while ( c<= rightDownCol) { System . out. print ( matrix[ r] [ c++ ] + " " ) ; } r++ ; c = rightDownCol; while ( r<= rightDownRow) { System . out. print ( matrix[ r++ ] [ c] + " " ) ; } c-- ; r= rightDownRow; while ( c>= leftUpCol) { System . out. print ( matrix[ r] [ c-- ] + " " ) ; } r-- ; c = leftUpCol; while ( r> leftUpRow) { System . out. print ( matrix[ r-- ] [ c] + " " ) ; } leftUpCol++ ; leftUpRow++ ; rightDownCol-- ; rightDownRow-- ; } }
}
0所在的行列清零
package 每日算法学习打卡. 算法打卡. 七月份. 七月二十六号; public class test2 { public static void main ( String [ ] args) { int [ ] [ ] matrix = { { 1 , 2 , 3 , 4 , 100 } , { 5 , 6 , 7 , 0 , 101 } , { 9 , 0 , 11 , 12 , 102 } , { 13 , 14 , 15 , 16 , 103 } , { 104 , 105 , 106 , 106 , 108 } , } ; solve ( matrix) ; for ( int i = 0 ; i< matrix. length; i++ ) { for ( int j = 0 ; j< matrix[ 0 ] . length; j++ ) { System . out. print ( matrix[ i] [ j] + " " ) ; } System . out. println ( ) ; } } static void solve ( int [ ] [ ] matrix) { int M = matrix. length; int N = matrix. length; int [ ] rowRecord = new int [ M ] ; int [ ] colRecord = new int [ N ] ; for ( int i = 0 ; i< M ; i++ ) { for ( int j = 0 ; j< N ; j++ ) { if ( matrix[ i] [ j] == 0 ) { rowRecord[ i] = 1 ; colRecord[ j] = 1 ; } } } for ( int row = 0 ; row < N ; row++ ) { for ( int col = 0 ; col< M ; col++ ) { if ( rowRecord[ row] == 1 || colRecord[ col] == 1 ) { matrix[ row] [ col] = 0 ; } } } } }