java面试题:顺时针打印矩阵

来源:互联网 发布:端口费用是什么意思 编辑:程序博客网 时间:2024/05/22 13:32

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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.util.ArrayList;public class CopyOfprintArray1 {public static void main(String[] args) {// TODO Auto-generated method stub//int[][] arr={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};int[][] arr={{1},{2},{3},{4}};printMatrixInCircle(arr);}private static void printMatrixInCircle(int[][] arr) {// TODO Auto-generated method stubArrayList<Integer> arraylist=new ArrayList();int n=arr[0].length;int m=arr.length;if(arr.length==0 || arr[0].length==0){return;}int start=0;while(m>start*2 && n>start*2){int endX=n-1-start;int endY=m-1-start;//从左向右打印for(int i=start;i<=endX;i++){int value=arr[start][i];System.out.print(value);arraylist.add(value);}//从上到下打印一列if(start<endY){for(int i=start+1;i<endY;i++){int value=arr[i][endX];System.out.print(value);arraylist.add(value);}}//从右到左if(start<endX && start <endY){for (int i = endX-1; i >=start; i--) {int value=arr[endY][i];System.out.print(value);arraylist.add(value);}}//从下到上if(start<endX && start<endY-1){for(int i=endY-1;i>=start+1;--i){int value=arr[i][start];System.out.print(value);arraylist.add(value);}}++start;}//return arraylist;}}


原创粉丝点击