螺旋矩阵二——java模拟实现

一、题目描述

给你一个正整数 n ,生成一个包含 1 到 n的平方 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
在这里插入图片描述

二、思路解答

1.模拟过程
主要考察的是对于代码的掌控能力
1)首先是建立一个空矩阵,将数字填入
初始值是1,终止值是n*n,
数字满足要求时:中间的填入过程就是从左到右,从上到下,从右到左,从下到上。
2)每次 填入数字后,
首先就是数字加1 ,然后就是更新边界。
3)最后返回上边建立并且输入数字的矩阵。

三、代码

1.java模拟

class Solution {
    public int[][] generateMatrix(int n) {
        int l = 0, r = n - 1, t = 0, b = n - 1;//左,右,上,下边界
        int[][] mat = new int[n][n];//建立一个空矩阵
        int num = 1, tar = n * n;//建立初始值和终止值
        while(num <= tar){
            for(int i = l; i <= r; i++) mat[t][i] = num++; // 从左到右
            t++;//更新上边界
            for(int i = t; i <= b; i++) mat[i][r] = num++; // 从上到下
            r--;//更新右边界
            for(int i = r; i >= l; i--) mat[b][i] = num++; // 从右到左
            b--;//更新下边界
            for(int i = b; i >= t; i--) mat[i][l] = num++; // 从下到上
            l++;//更新左边界
        }
        return mat;//最后返回一个矩阵
    }
}


2.java 模拟实现
关于这个代码,和上边的代码是一样的,但是并不能编译成功。

class Solution {
    public int[][] generateMatrix(int n) {
        int i=0;//很奇怪,一模一样的代码就是这个代码运行成功必须要加这个初始值。
        //定义四个边界
        int l=0,r=n-1,t=0,b=n-1;
        //定义一个空矩阵
        int[][] mat=new int[n][n] ;
        //定义初始值和结束值
        int num=1,tar=n*n;
        //填写数字,进入循环的条件
        while(num<=tar){
            for(i=l;i<=r;i++) mat[t][i]=num++;//从左到右
            t++;//更新上边界
            for(i=t;i<=b;i++) mat[i][r]=num++;//从上到下
            r--;//更新右边界
            for(i=r;i>=l;i--) mat[b][i]=num++;//从右到左
            b--;//更新下边界
            for(i=b;i>=t;i--) mat[i][l]=num++;//从下到上
            l++;//更新左边界

        }
        return mat;//返回一个最后的矩阵

    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值