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

螺旋矩阵:

给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 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;
    }
}
相关推荐
边境悍匪19 小时前
蜗牛学苑 Java 智能体学习 Day49|贯穿项目 5 订单下单业务 思维导图复盘
java·开发语言·spring boot·学习·阿里云
鬼手点金19 小时前
Claude Code示范案例-修复 Bug 工作流
java·服务器·前端·javascript·bug·openclaw
一条破秋裤19 小时前
Linux 进程通信介绍:内存隔离与 IPC 分类
java·linux·服务器
Omics Pro19 小时前
空间组学!医学代谢显微工具
数据库·人工智能·算法·机器学习·自然语言处理
Coder-magician20 小时前
《代码随想录》刷题打卡day44:图论-part02
算法·深度优先·图论
克里斯蒂亚诺更新20 小时前
理解机器学习的各种算法
人工智能·算法·机器学习
机核研创社20 小时前
polo 长袖短裤套装自动化产线:八台机器排队接力
android·java·自动化
小范的技术工坊20 小时前
大模型学习操作文档(13个核心概念串讲)
人工智能·学习·算法·大模型
一个低调的青年20 小时前
电池健康状态估计(一)
经验分享·笔记·其他·算法·模型
Roadinforest20 小时前
Spring Boot 4 六步入门实录:从 Hello World 到一个能交付的 Todo API
java·开发语言·spring boot·spring