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;
}
}名企高频面试算法题解 文章被收录于专栏
牛客题霸 - 程序员面试高频题 - 题解
联想公司福利 1548人发布