本文主要是介绍“之”字形打印矩阵,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
【题目】 给定一个矩阵matrix,按照“之”字形的方式打印这个矩阵,例如:
1 2 3 4
5 6 7 8
9 10 11 12
“之”字形打印的结果为:
1,2,5,9,6,3,4,7,10,11,8,12
【要求】 额外空间复杂度为O(1)。
我们可以把这道题理解成
打印对角线
从上往下打印,和从下向上打印
虽然不知道这个和"之"字有什么关系,但是题目要求
我们只需要控制好对角线上面的坐标,和对角线下面的坐标即可
import java.util.*;public class Main {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stub//设定行数和列数int row=3,low=4;int[][] arr = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };int up1=0,up2=0,down1=0,down2=0;//模拟范围boolean f= false;int endR = arr.length-1;int endL = arr[0].length-1;while(down2<=endL){//Level(arr,up1,up2,down1,down2,f);up1 = up2==endL?up1+1:up1;up2 = up2==endL?up2:up2+1;down2 = down1==endR?down2+1:down2;down1 = down1==endR?down1:down1+1;f= !f;}}//打印一条对角线public static void Level(int[][] arr,int up1,int up2,int down1,int down2,boolean f){System.out.println("up1:"+up1+" up2:"+up2+" down1:"+down1+" down2:"+down2);if(f){while(up1<=down1){System.out.println(arr[up1++][up2--]+",");}}else{while(down1>=up1){System.out.println(arr[down1--][down2++]+",");}}}}
这篇关于“之”字形打印矩阵的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!