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 分钟前
计算机图形学·23 Weiler-Athenton多边形裁剪算法
算法·计算机视觉·几何学·计算机图形学·opengl
我要添砖java4 分钟前
《JAVAEE》网络编程-什么是网络?
java·网络·java-ee
CoderYanger7 分钟前
动态规划算法-01背包问题:50.分割等和子集
java·算法·leetcode·动态规划·1024程序员节
花月C8 分钟前
个性化推荐:基于用户的协同过滤算法
开发语言·后端·算法·近邻算法
lxh011323 分钟前
最长递增子序列
前端·数据结构·算法
Youyzq1 小时前
前端项目发布到cdn上css被编译失效问题rgba失效和rgb失效
前端·css·算法·cdn
风筝在晴天搁浅1 小时前
代码随想录 516.最长回文子序列
算法
菜鸟233号2 小时前
力扣513 找树左下角的值 java实现
java·数据结构·算法·leetcode
亭上秋和景清2 小时前
指针进阶:函数指针详解
开发语言·c++·算法
leoufung2 小时前
LeetCode 22:Generate Parentheses 题解(DFS / 回溯)
算法·leetcode·深度优先