顺时针打印矩阵

本文介绍了一个算法问题,即如何按顺时针螺旋顺序打印出给定矩阵中的所有元素。通过使用Java实现,文章详细展示了算法的具体步骤,并给出了一个示例程序。

时间限制:1秒 空间限制:32768K 热度指数:294985

本题知识点: 数组

题目描述

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 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.

package xidian.lili.niuke;

import java.util.ArrayList;
import java.util.List;

public class printMatrix {
	public static ArrayList<Integer> printMatrix(int [][] matrix) {
		ArrayList<Integer> list=new ArrayList();
		int row=matrix.length;//行数
		int col=matrix[0].length;//列数
		int circle=(Math.min(row, col)+1)/2;//多画几个图,可知循环打印的圈数
		System.out.println(circle);
		System.out.println(row);
		System.out.println(col);
		for(int i=0;i<circle;i++){
			for(int j=i;j<col-i;j++){
				list.add(matrix[i][j]);
				System.out.println("从左到右"+matrix[i][j]);
			}
			for(int j=i+1;j<row-i;j++){
				list.add(matrix[j][col-i-1]);
				System.out.println("从上到下"+matrix[j][col-i-1]);
			}
			for(int j=col-i-2;j>=i&&row-i-1!=i;j--){
				list.add(matrix[row-i-1][j]);
				System.out.println("从右到左"+matrix[row-i-1][j]);
			}
			for(int j=row-i-2;j>i&&col-i-1!=i;j--){
				list.add(matrix[j][i]);
				System.out.println("从下到上"+matrix[j][i]);
			}
		}
		return list;
    }
	public static void main(String[] args) {
		//int [][]matrix={{1},{2},{3},{4},{5}};
		int [][]matrix={{1,2,3,4,5}};
		List<Integer>l=printMatrix(matrix);
		for(Integer i:l){
			System.out.print(i+" ");
		}
	}

}

注意:后面两个循环可以分别用row*1的矩阵和1*col的矩阵调试出循环结束条件

以及循环打印的圈数是行列最小值除以2再向上取整

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值