java 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,

30 篇文章 0 订阅

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 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 Solution {
    public ArrayList<Integer> printMatrix(int [][] matrix) {
			
			ArrayList<Integer> list=new ArrayList<Integer>();
			read(matrix,list,0);
		       return list;
	    }
		public void read(int [][] matrix,ArrayList list,int start){
			int row=matrix.length;
			int col=matrix[0].length;
			if( matrix==null || col < 1 || row < 1 || start < 0 )   
		        return;  
		    if( col <= 2*start || row <= 2*start )   
		        return;  
		    int stopX = col - 1 - start;//一圈最右列在坐标中的位置  
		    int stopY = row - 1 - start;//一圈最大行在坐标中位置 
		  //打印此圈中的最上行  
		    for( int i=start; i<=stopX; i++)  
		        list.add(matrix[start][i]);  
		    //打印此圈中的最右列  
		    if(start <= stopX) //如果此圈中至少有一列  
		        for(int i=start+1; i<=stopY; i++)  
		        	list.add(matrix[i][stopX]);  
		    //打印次圈中的最下行  
		    if(start < stopX && start < stopY)  
		        for(int i=stopX-1; i >= start; i--)  
		        	list.add(matrix[stopY][i]);  
		    //打印次圈中的最左行  
		    if(start < stopX && start < stopY - 1)  
		        for(int i=stopY-1; i >= start+1; i--)  
		        	list.add(matrix[i][start]); 
		    read(matrix,list,start+1);
		}
		
		
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值