数组 59.螺旋矩阵Ⅱ

正确

需要考虑多个点

如何进行处理,即处理时每行从第几个数开始,到第几个数结束,这里选择左闭右开

圈数问题,多圈数需要往进旋转,会产生边界待处理数字的增多,可自行画n=3,n=5时的情况,若不考虑此情况,致使后续圈一直在第一圈的位置进行覆盖

还需要考虑每一圈的起始位置,若不考虑,同上一问题,后续的值会对前面的值进行覆盖

class Solution {
    public int[][] generateMatrix(int n) {
        int a[][] = new int[n][n];
        int i = 1;      //填入数字的值
        int broder = 1;  //边界值,每一圈都左闭右开,代表了未处理的数字,每进一圈,边界待处理的数字多一
        int loop = 1;   //圈数
        int startX=0;   //每圈的起始位置,用于让圈往里转
        int startY=0;
        int x,y;   //代表行列
        while(loop <= n/2){
        for ( y = startY; y < n - broder; y++) {
            a[startX][y] = i;
            i++;
        }
        for (x = startX; x < n - broder; x++) {
            a[x][y] = i;
            i++;
        }
        for (; y > startY; y--) {
            a[x][y] = i;
            i++;
        }
        for (; x > startX; x--) {
            a[x][y] = i;
            i++;
        }
        startX++;
        startY++;
        broder++;
        loop++;
        if(n % 2 == 1){
            a[n/2][n/2]=i;
        }
        }
        if(n % 2 == 1){
            a[n/2][n/2]=i;
        }
        return a;
    }
}

错误

循环条件出错,当圈数大于1时,后续圈的内容会覆盖在第一圈的位置,需更改循环条件,以达到后续不断向里的目的

未考虑边界待处理的值

class Solution {
    public int[][] generateMatrix(int n) {
        int a[][] = new int[n][n];
        int i = 1;
        int loop = 1;
        while(loop <= n/2){
        for (int x = 0, y = 0; y < n - 1; y++) {
            a[x][y] = i;
            i++;
        }
        for (int x = 0, y = n - 1; x < n - 1; x++) {
            a[x][y] = i;
            i++;
        }
        for (int x = n - 1, y = n - 1; y > 0; y--) {
            a[x][y] = i;
            i++;
        }
        for (int x = n - 1, y = 0; x > 0; x--) {
            a[x][y] = i;
            i++;
        }
        loop++;
        if(n % 2 == 1){
            a[n/2][n/2]=i;
        }
        }
        if(n/2==0){
            a[0][0] = 1;
        }
        return a;
    }
}

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-18 21:36:02       66 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-18 21:36:02       70 阅读
  3. 在Django里面运行非项目文件

    2024-07-18 21:36:02       57 阅读
  4. Python语言-面向对象

    2024-07-18 21:36:02       68 阅读

热门阅读

  1. 无人机反制:车载侦测干扰一体设备技术详解

    2024-07-18 21:36:02       21 阅读
  2. task1代码分析 #Datawhale #讯飞AI训练营

    2024-07-18 21:36:02       20 阅读
  3. lua 游戏架构 之 资源加载 LoaderManager (一)

    2024-07-18 21:36:02       18 阅读
  4. MySQL简介

    2024-07-18 21:36:02       19 阅读
  5. Vue.js 内置指令

    2024-07-18 21:36:02       24 阅读
  6. SSH登录,设置欢迎信息

    2024-07-18 21:36:02       18 阅读