NC31:转圈打印矩阵:
转圈打印矩阵
http://www.nowcoder.com/questionTerminal/fe219d47475842e68e64ba6fea42b846
这里取最外圈的左上角顶点和左下角顶点的坐标,表示一个子矩阵,按照从外到里的顺序打印每个子矩阵就可以了。
import java.util.*; public class Solution { /** * * @param matrix int整型二维数组 the matrix * @return int整型一维数组 */ public int[] printMatrix (int[][] matrix) { // write code here int sl=0; int sr=0; int el=matrix.length-1; int er=matrix[0].length-1; int[] arr=new int[matrix.length*matrix[0].length]; ArrayList<Integer> list=new ArrayList<>(); while(sl<=el && sr<=er){ if(sl==el){ for(int i=el;i<=er;i++){ list.add(matrix[sl][i]); } } else if(sr==er){ for(int i=sl;i<=el;i++){ list.add(matrix[i][sr]); } } else{ int curl=sl; int curr=sr; while(curr!=er){ list.add(matrix[sl][curr]); curr++; } while(curl!=el){ list.add(matrix[curl][er]); curl++; } while(curr!=sr){ list.add(matrix[el][curr]); curr--; } while(curl!=sl){ list.add(matrix[curl][sr]); curl--; } } sl++; sr++; el--; er--; } for(int i=0;i<=arr.length-1;i++){ arr[i]=list.get(i); } return arr; } }
名企高频面试算法题解 文章被收录于专栏
牛客题霸 - 程序员面试高频题 - 题解