LeetCode每日一题.02(螺旋矩阵||)

螺旋矩阵:

给你一个正整数 n ,生成一个包含 1n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix

示例 1:

**输入:**n = 3

输出:[[1,2,3],[8,9,4],[7,6,5]]

示例 2:

**输入:**n = 1

输出:[[1]]

解题思路:

本题可以用地推方法,用四个循环表示四个方向的螺旋排序,再一个大循环依次向内收缩,若是奇数矩阵,则最后再将中间的加上即可

代码实现:

java 复制代码
class Solution {
    public int[][] generateMatrix(int n) {
        int [][]square=new int[n][n];
        int r=n-1,l=0,t=0,b=n-1;
        int j=1;
        //外层循环
        while(j<n*n){
            //向右螺旋
            for(int x=l;x<=r;x++)
                square[t][x]=j++;
            t++;
            //下螺旋
            for(int x=t;x<=b;x++)
                square[x][r]=j++;
            r--;
            //向左螺旋
            for(int x=r;x>=l;x--)
                square[b][x]=j++;
            b--;
            //向上螺旋
            for(int x=b;x>=t;x--)
                square[x][l]=j++;
            l++;
        }
        若数组宽度为奇数,加上中间
        if(n%2!=0){
            square[(n-1)/2][(n-1)/2]=n*n;
        }
        return square;
    }
}
相关推荐
爱敲代码的小冰1 分钟前
【Excel】 Power Query抓取多页数据导入到Excel
android·java·excel
原来是猿12 分钟前
蓝桥备赛(四)- 数组(下)
开发语言·数据结构·c++·算法
心流时间15 分钟前
[Java基础] JVM常量池介绍(BeanUtils.copyProperties(source, target)中的属性值引用的是同一个对象吗)
java·开发语言·jvm
ephemerals__23 分钟前
【数据结构进阶】哈希表
数据结构·算法·散列表
瑞金彭于晏32 分钟前
通俗易懂版 Maven 科普,maven是什么?
java·maven
好看资源平台36 分钟前
Java Web开发实战与项目——Spring Boot与Spring Cloud微服务项目实战
java
.猫的树42 分钟前
Java集合List快速实现重复判断的10种方法深度解析
java·开发语言·list·集合
littlegirll1 小时前
命令行方式安装KFS同步KES到KADB
java·大数据·数据库
阿巴~阿巴~1 小时前
关于回溯算法中的剪枝是否需要for循环的总结归纳
数据结构·c++·算法·深度优先·剪枝
itachi-uchiha1 小时前
深入理解 Linux 中的 last 和 lastb 命令
java·linux·服务器