本文主要是介绍转圈打印矩,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【题目】 给定一个整型矩阵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)。
import java.util.*;public class Main {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub//设定行数和列数int row=4,low=4;int[][] arr= new int[row][low];int count=1;for(int i=0;i<row;i++){//创建一个矩阵for(int j=0;j<low;j++){arr[i][j] = count++;}}int up=0,down=arr.length-1,left=0,right=arr[0].length-1;//模拟范围//我的计划是 分四组打印 上 右 下 左StringBuffer pr = new StringBuffer();while(up<=down||left<=right){for(int i=left;up<=down&&i<=right;i++){pr.append(arr[up][i]+",");}for(int i=up+1;left<=right&&i<=down-1;i++){pr.append(arr[i][right]+",");}if(arr.length>1){//只有当行数大于1才需要下打印for(int i=right;up<=down&&i>=left;i--){pr.append(arr[down][i]+",");}}if(arr[0].length>1){//只有当列数大于1才需要左打印for(int i=down-1;left<=right&&i>=up+1;i--){pr.append(arr[i][left]+",");}}up++;down--;left++;right--;}System.out.println(pr.substring(0,pr.length()-1));}}
这篇关于转圈打印矩的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!