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;
    }
}
相关推荐
小龙报2 分钟前
《算法通关指南C++编程篇 --- 初阶函数递归专题》
c语言·开发语言·c++·算法·创业创新·学习方法·visual studio
拾忆,想起10 分钟前
Dubbo核心架构全解析:构建微服务通信的高速公路
java·微服务·云原生·架构·dubbo·哈希算法
羑悻的小杀马特14 分钟前
远程也能追热点:NewsNow精准筛选热榜,CPolar让信息获取不受地点限制
矩阵·cpolar·热点数据·newsnow
楠枬20 分钟前
Spring Cloud 概述
java·spring cloud·微服务
♡喜欢做梦20 分钟前
MyBatis操作数据库(入门)
java·数据库·mybatis
2501_9412366223 分钟前
分布式日志系统实现
开发语言·c++·算法
2501_9412355125 分钟前
C++与机器学习框架
开发语言·c++·算法
CoovallyAIHub27 分钟前
基于SimCLR的自监督 YOLO:YOLOv5/8也能在低标注场景目标检测性能飙升
深度学习·算法·计算机视觉
q***d17330 分钟前
微服务与单体架构的成本对比
java·微服务·架构
冻感糕人~37 分钟前
Agent框架协议“三部曲”:MCP、A2A与AG-UI的协同演进
java·人工智能·学习·语言模型·大模型·agent·大模型学习