当前位置: 首页 > article >正文

【Leetcode 每日一题】59. 螺旋矩阵 II

问题背景

给你一个正整数 n n n,生成一个包含 1 1 1 n 2 n ^ 2 n2 所有元素,且元素按顺时针顺序螺旋排列的 n × n n \times n n×n 正方形矩阵 m a t r i x matrix matrix

数据约束

  • 1 × n × 20 1 \times n \times 20 1×n×20

解题过程

定义方向数组,每次遇到越界的情况或是已经填过数字的位置,就变换方向。

具体实现

class Solution {
    private static final int[][] DIRECTIONS = new int[][] {{0, 1}, {1, 0}, {0, -1}, {-1, 0}};

    public int[][] generateMatrix(int n) {
        int[][] res = new int[n][n];
        int i = 0;
        int j = 0;
        int direction = 0;
        // 按要填的数进行循环
        for (int cur = 1; cur <= n * n; cur++) {
            res[i][j] = cur;
            // 根据方向数组,计算下一个该填数的位置
            int x = i + DIRECTIONS[direction][0];
            int y = j + DIRECTIONS[direction][1];
            // 遇到越界的情况,或者下个位置已经填过数,就要变换方向
            if (x < 0 || x >= n || y < 0 || y >= n || res[x][y] != 0) {
                direction = (direction + 1) % 4;
            }
            // 迭代新位置
            i += DIRECTIONS[direction][0];
            j += DIRECTIONS[direction][1];
        }
        return res;
    }
}

http://www.kler.cn/a/536158.html

相关文章:

  • 高端入门:Ollama 本地高效部署DeepSeek模型深度搜索解决方案
  • 快速对QWen2.5大模型进行微调
  • 深入理解k8s中的容器存储接口(CSI)
  • 【苍穹外卖 Day1】前后端搭建 Swagger导入接口文档
  • ZK-ALU-在有限域上实现左移
  • 【实战篇】巧用 DeepSeek,让 Excel 数据处理更高效
  • 广度优先搜索(BFS)算法详解——以走迷宫问题为例
  • 【JS】element-ui table展示勾选状态
  • AI工具——Cherry Studio,搭建满血DeepSeek R1的AI对话客户端
  • 【医院绩效管理专题】2.绩效管理:医院发展的核心驱动力
  • Jmeter接口自动化测试
  • ZIP完美解密解压缩和暴力破解最佳实现
  • python图片转字符画应用
  • Java 集合中的 `removeIf` 和 Stream API 的 `filter`
  • 4.Python字符串和列表:字符串输入、字符串输出、下标和切片、字符串常见函数、列表(list)、列表的循环遍历、列表的增删改查、列表的嵌套、列表的切片
  • 基于单片机的电子抢答器设计(论文+源码+实物)
  • Vue 3 30天精进之旅:Day 17 - 样式和动画
  • UE学习日志#24 C++笔记#10 内存管理1
  • linux——网络计算机{序列化及反序列化(JSON)(ifdef的用法)}
  • DeepSeek本地化部署
  • 【实战】excel分页写入导出大文件
  • 如何在Android Studio中开发一个简单的Android应用?
  • 【截图】selenium自动通过浏览器截取指定元素div的图片
  • 深度剖析 Redis:缓存穿透、击穿与雪崩问题及实战解决方案
  • java将list转成树结构
  • 劳务报酬所得税