題目描述
給定一個整型矩陣matrix,請按照順時針轉圈的方式列印它。
輸入描述:
輸入包含多行,第一行兩個整數n和m,代表矩陣的行數和列數,接下來n行,每行m個整數,代表矩陣matrix。
輸出描述:
輸出包含一行,n*m個整數,代表順時針轉圈輸出的矩陣matrix。
示例1
輸入
4 4
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
解法一:設定兩個夾角
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args)throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] info = br.readLine().trim().split(" ");
int row = Integer.parseInt(info[0]);
int col = Integer.parseInt(info[1]);
int[][] arr = new int[row][col];
for(int i=0;i<row;i++){
String[] tmp = br.readLine().trim().split(" ");
for(int j=0;j<col;j++){
arr[i][j] = Integer.parseInt(tmp[j]);
}
}
getRes(arr);
}
public static void getRes(int[][] arr){
if(arr==null||arr.length==0||arr[0].length==0) return ;
int row = arr.length;
int col = arr[0].length;
int li = 0,lj = 0;
int ri = row-1,rj = col-1;
StringBuilder sb = new StringBuilder();
while(ri>=li&&rj>=lj){
for(int i=lj;i<=rj;i++){
sb.append(arr[li][i]+" ");
}
for(int i=li+1;i<=ri;i++){
sb.append(arr[i][rj]+" ");
}
for(int i=rj-1;i>=lj&&li!=ri;i--){
sb.append(arr[ri][i]+" ");
}
for(int i=ri-1;i>li&&li!=rj;i--){
sb.append(arr[i][lj]+" ");
}
li++;
lj++;
ri--;
rj--;
}
System.out.println(sb.toString().trim());
}
}