【题目】 给定一个整型矩阵matrix,请按照转圈的方式打印它。 例如: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 打印结果为:1,2,3,4,8,12,16,15,14,13,9,5,6,7,11, 10
【要求】 额外空间复杂度为O(1)。
import java.util.*;
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
//设定行数和列数
int row=4,low=4;
int[][] arr= new int[row][low];
int count=1;
for(int i=0;i<row;i++){//创建一个矩阵
for(int j=0;j<low;j++){
arr[i][j] = count++;
}
}
int up=0,down=arr.length-1,left=0,right=arr[0].length-1;//模拟范围
//我的计划是 分四组打印 上 右 下 左
StringBuffer pr = new StringBuffer();
while(up<=down||left<=right){
for(int i=left;up<=down&&i<=right;i++){
pr.append(arr[up][i]+",");
}
for(int i=up+1;left<=right&&i<=down-1;i++){
pr.append(arr[i][right]+",");
}
if(arr.length>1){//只有当行数大于1才需要下打印
for(int i=right;up<=down&&i>=left;i--){
pr.append(arr[down][i]+",");
}
}
if(arr[0].length>1){//只有当列数大于1才需要左打印
for(int i=down-1;left<=right&&i>=up+1;i--){
pr.append(arr[i][left]+",");
}
}
up++;
down--;
left++;
right--;
}
System.out.println(pr.substring(0,pr.length()-1));
}
}