首页 > 其他分享 >59.螺旋矩阵II——学习笔记

59.螺旋矩阵II——学习笔记

时间:2023-03-20 21:35:16浏览次数:49  
标签:count 59 start int res 矩阵 II ++ offset

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

示例 1
img

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

示例 2

输入:n = 1
输出:[[1]]

提示

  • 1 <= n <= 20

题目来源:力扣(LeetCode)链接

解题思路
img

题解

class Solution {
    public int[][] generateMatrix(int n) {
        int[][] res = new int[n][n];//定义一个二维数组用来存放结果
        int count = 1;//放在数组里面的值1~n*n
        int loop = n / 2;//loop表示循环的圈数
        int offset = 1;//每次循环,每条边要走的步数n-offset
        int mid = n / 2;//n为奇数时的中间索引
        int start = 0;//每一圈循环开始的起始位置startX=startY
        int i,j;//数组的行列索引
        while (loop > 0) {
            i = start;
            j = start;
            //填充上行从左到右(左闭右开)
            for(; j < n - offset; j++) {
                res[i][j] = count;
                count++;
            }
            //填充右列从上到下(左闭右开),j=n-offset
            for(; i < n - offset; i++) {
                res[i][j] = count;
                count++;
            }
            //填充下行从右到左(左闭右开),i=n-offset,j=n-offset
            for(; j > start; j--) {
                res[i][j] = count;
                count++;
            }
            ////填充左列从下到上(左闭右开),i=n-offset
            for(; i > start; i--) {
                res[i][j] = count;
                count++;
            }
            //每一圈循环结束后,要更新起始位置
            start++;
            //每缩小一圈,步长也要缩小一步
            offset++;
            //每循环一圈,总的圈数就减1
            loop--;
        }
        //如果n为奇数,则需要单独处理中间位置
        if (n % 2 == 1) {
            res[mid][mid] = n * n;
        }
        //返回结果
        return res;
    }
}

标签:count,59,start,int,res,矩阵,II,++,offset
From: https://www.cnblogs.com/benben-home/p/17232593.html

相关文章

  • Codeforces Round 859 (Div. 4)
    A.PlusorMinus#include<bits/stdc++.h>usingnamespacestd;int32_tmain(){ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);i......
  • 矩阵可逆性说明
    矩阵可逆性说明A可逆当且仅当A的行列式不等于0\[|A|\neq0\]A可逆当且仅当A的特征值不等于0\[\lambda\neq0\]A可逆当且仅当\(Ax=0\)只有零解正......
  • leetcode 1592
    注意整行输入的格式#include<iostream>#include<sstream>usingnamespacestd;stringreorderSpaces(stringtext){stringwords[55];intn=text.size()......
  • #yyds干货盘点# LeetCode面试题:螺旋矩阵
    1.简述:给你一个m行n列的矩阵 matrix,请按照顺时针螺旋顺序,返回矩阵中的所有元素。 示例1:输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例2:输......
  • 【洛谷】P4590 [TJOI2018]游园会(dp套dp)
    原题链接题意对于一个长度为\(n\)的仅由\(N,O,I\)组成且不包含字串\(NOI\)的字符串\(S\),其与一个给定的长度为\(K\)的字符串的最长公共子序列为\(LCS\)。求出......
  • [oeasy]python0112_扩展ascii_Extended_ascii_法文字符
    法文字符回忆上次内容上次回顾了字型编码的进化过程从7-seg到点阵字库终于让字母、数字、标点明确了字型小写字符占据了位置法文字符没有地方放了7-bit的ascii已......
  • 部署asp.net core6 iis InProcess模式方法
    修改IIS中的配置1.修改启用应用程序池(AlwaysRunning):保证应用程序池在第一次创建或者被回收后,能自动再次重启运行。2.修改闲置超时1740分钟:长时间没有请求释放资源,可以......
  • matlab cond函数 矩阵的条件数
    Cond(A)称作矩阵A的条件数,为矩阵A的范数与A的逆矩阵的范数的乘积定义在MATLAB中,计算矩阵A的3种条件数的函数是:(1)cond(A,1)计算A的1—范......
  • matlab trace函数 求矩阵的迹
    矩阵的迹就是矩阵的主对角线上所有元素之和。>>[12;710]ans=  1    7  10>>tr......
  • matlab rref函数 将矩阵…
    matlab将矩阵化成行最简形的命令是rref或rrefmovie。函数rref或rrefmovie格式R=rref(A)    %用高斯—约当消元法和行主元法求A的行最简行矩阵R[R,jb]=rref(A......