螺旋矩阵
该题目我的想法是使用分层去做,但是何题解不同的是我没有设置边界,而是使用圈数来动态决定圈数,我的代码就是空间消耗会很大,有很多不必要的定义。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| public List<Integer> spiralOrder(int[][] matrix) { int iter = 0; ArrayList<Integer>arr = new ArrayList<Integer>(); if(matrix.length==0){ return arr; }else{ double round1 = Math.ceil(matrix.length/2.0); double round2 = Math.ceil(matrix[0].length/2.0); if(round1>round2){ iter = (int)round2; }else{ iter = (int)round1; } int i = 0; while(i<iter){ int j,n; for(j=i;j<matrix[0].length-i;j++){ arr.add(matrix[i][j]); } if(j!=i){ j--; } for(n=i+1;n<matrix.length-i;n++){ arr.add(matrix[n][j]); } if(n!=i+1){ n=n-1; if(j>i){ for(j=j-1;j>=i;j--){ arr.add(matrix[n][j]); } j++; for(n=n-1;n>i;n--){ arr.add(matrix[n][j]); } } } i++; } return arr; } }
|