左神算法学习笔记基础篇(4):数字矩阵的操作

转圈打印矩阵

1.题目

初始序列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。
在这里插入图片描述

2.算法思路

一个矩阵的形状和位置是由A、B两个点控制的。一定要注意,A与B的坐标是与二维数组的索引挂钩的,即(行号,列号),不能直接理解成坐标系中的横纵坐标。

  1. 构造一个打印函数,每次打印前先进行判断,如果A与B同行不同列,那么横向打印。若A与B同列不同行,那么同列打印(同什么打印什么)。
  2. 同时,设置一个初始化函数来确定AB两点,同时,每次调用步骤1的函数,就相当于与把当前矩阵的外圈打印了一遍,这时,需要更新AB两点的坐标,来打印内圈的矩阵,以此类推,直到AB两点重合。
    在这里插入图片描述
    注:
    二维数组的形式如下
int[][] = new int[3][4]

1234
5678
9101112

matrix.length = 3
matrix[0].length = 4

3.算法代码

public class demotest {
   
    public static void main(String[] args) {
   
        int[][] matrix = {
    {
    1, 2, 3, 4 }, {
    5, 6, 7, 8 }, {
    9, 10, 11, 12 },
                {
    13, 14, 15, 16 } };
        fuction(matrix);

    }
    
    public static void fuction(int[][] matrix){
   
        int a = 0;
        int b = 0;
        int c = matrix.length-1;		//二维数组的行数
        int d = matrix[0].length-1;		//二维数组的列数
        while(a<=c && b<=d){
   
            circlePrintMatrix(matrix,a++,b++,c--,d--);
        }
    }
    public static void circlePrintMatrix(int[][] matrix,int a,int b,int c,int d){
   
        if(a == c){
   
            for(int i=b;i<=d;i++){
   
                System.out.println(matrix[a][i]);
            }
        }else if(b == d){
   
            for(int i=a
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值