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;
    }
}
相关推荐
近津薪荼4 小时前
优选算法——双指针4(单调性)
c++·学习·算法
IUGEI5 小时前
从原理到落地:DAG在大数据SLA中的应用
java·大数据·数据结构·后端·算法
云深麋鹿5 小时前
五.排序笔记
c语言·数据结构·算法·排序算法
spcier11 小时前
图论拓扑排序-Kahn 算法
算法·图论
知星小度S11 小时前
动态规划(一)——思想入门
算法·动态规划
攻城狮凌霄11 小时前
PHP接单涨薪系列(七十一):如何用Neo4j构建借贷关系图谱?解析资金流水时空矩阵揪出“砍头息“和“循环贷“
矩阵·php·neo4j
ysa05103011 小时前
动态规划-逆向
c++·笔记·算法
燃于AC之乐11 小时前
我的算法修炼之路--7—— 手撕多重背包、贪心+差分,DFS,从数学建模到路径DP
c++·算法·数学建模·深度优先·动态规划(多重背包)·贪心 + 差分
Whisper_Sy11 小时前
Flutter for OpenHarmony移动数据使用监管助手App实战 - 网络状态实现
android·java·开发语言·javascript·网络·flutter·php
chinesegf11 小时前
文本嵌入模型的比较(一)
人工智能·算法·机器学习