在线矩阵螺旋Java"/>
学堂在线矩阵螺旋Java
题目:
给定m × n个元素(m行,n列)的矩阵,以螺旋顺序返回矩阵的所有元素。输入为m n以及m*n的矩阵,输出螺旋顺序的所有元素
输入描述
无
输出描述
无
示例1:
输入:
3 3
1 2 3
4 5 6
7 8 9
输出:
123698745
题目解析:
只要注意本题最后不能以数组的形式输出就可以拿满分了。
题目代码:
import java.util.ArrayList;
import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner sc=new Scanner(System.in);int m=sc.nextInt();int n=sc.nextInt();int[][] arr=new int[m][n];for (int i = 0; i < m; i++) {for (int j = 0; j < n; j++) {arr[i][j]=sc.nextInt();}}ArrayList<Integer> list=f(arr);// System.out.println(list);Object[] arra=list.toArray();//Arraylist转arrayfor(Object o:arra){System.out.print(o);}}private static ArrayList<Integer> f(int[][] arr) {ArrayList<Integer> list=new ArrayList<>();if(arr==null){return list;}if(arr.length==0){return list;}int rows= arr.length;//行数int columns =arr[0].length;//列数char car='R'; //R是向右int r=0;int c=0;boolean[][] flag=new boolean[rows][columns];for (int i = 0; i < rows; i++) {for (int j = 0; j < columns; j++) {flag[i][j]=true;}}for (int i = 0; i < rows*columns; i++) {if(car=='R'){list.add(arr[r][c]);flag[r][c]=false;c++;if(c==columns||flag[r][c]==false){c--;car='D';continue;}else {continue;}}if(car=='D'){r++;list.add(arr[r][c]);flag[r][c]=false;if(r==rows-1||flag[r+1][c]==false){car='L';continue;}else {continue;}}if(car=='L'){c--;list.add(arr[r][c]);flag[r][c]=false;if(c==0||flag[r][c-1]==false){car='U';continue;}else {continue;}}if(car=='U'){r--;list.add(arr[r][c]);flag[r][c]=false;if(flag[r-1][c]==false){car='R';c++;continue;}else {continue;}}}return list;}}
更多推荐
学堂在线矩阵螺旋Java
发布评论