回旋矩阵打印 java_java实现转圈打印矩阵算法

本文实例为大家分享了java实现转圈打印矩阵的具体代码,供大家参考,具体内容如下

给定一个整形矩阵Matrix,请按照顺时针方向转圈的方式,输入(打印)元素值。

例如:

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

要求:额外空间复杂度为O(1)

JAVA代码如下:

package com.bean.algorithmexec;

public class MatrixDemo {

/*

* 给定一个整形矩阵Matrix,请按照顺时针方向转圈的方式,输入(打印)元素值。

* 例如:

* 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

*

* 要求:额外空间复杂度为O(1)

* */

public static void main(String[] args) {

// TODO Auto-generated method stub

//初始化一个 4*4的整形矩阵,从第一行第一列从左向右,第二行,第三行,直到第四行依次赋值 1,2,...16.

int[][] matrixDemo=new int[4][4];

matrixDemo=createMatrix();

printMatrix(matrixDemo);

//转圈打印

spiralOrderPrint(matrixDemo);

}

private static int[][] createMatrix() {

// TODO Auto-generated method stub

int matrix[][]=new int[4][4];

int k=1;

for(int i=0;i<4;i++) {

for(int j=0;j<4;j++) {

matrix[i][j]=k;

k++;

}

}

return matrix;

}

//顺序打印矩阵元素

private static void printMatrix(int[][] matrix) {

for(int i=0;i<4;i++) {

for(int j=0;j<4;j++) {

System.out.print(matrix[i][j]+"\t");

}

System.out.println();

}

}

//转圈打印

private static void spiralOrderPrint(int[][] matrix) {

int tR=0;

int tC=0;

int dR=matrix.length-1;

int dC=matrix[0].length-1;

while(tR<=dR && tC<=dC) {

printEdge(matrix, tR++, tC++, dR--,dC--);

}

}

private static void printEdge(int[][] matrix, int tR, int tC, int dR, int dC) {

// TODO Auto-generated method stub

if(tR==dR) {

//子矩阵只有一行时

for(int i=tC;i<=dC;i++) {

System.out.print(matrix[tR][i]+" ");

}

}else if(tC==dC) {

//子矩阵只有一列时

for(int i=tR;i<=dR;i++){

System.out.print(matrix[i][tC]+" ");

}

}else {

//一般情况

int curC=tC;

int curR=tR;

while(curC!= dC) {

System.out.print(matrix[tR][curC]+" ");

curC++;

}

while(curR!= dR) {

System.out.print(matrix[curR][dC]+" ");

curR++;

}

while(curC!= tC) {

System.out.print(matrix[dR][curC]+" ");

curC--;

}

while(curR!= tR) {

System.out.print(matrix[curR][tC]+" ");

curR--;

}

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。


版权声明:本文为weixin_39736547原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。