【免费题库】华为OD机试 - 螺旋数字矩阵(Java & JS & Python & C & C++)

题目描述:

给定一个正整数n,生成一个包含1到n^2的数字的矩阵,矩阵的排列规则如下:

从左上角开始,以顺时针螺旋方式进行填充。

示例:

输入:n = 3

输出:

[[1, 2, 3],

[8, 9, 4],

[7, 6, 5]]

解决方案:

这个问题可以通过模拟螺旋矩阵生成的过程来解决。以下是使用Java、JavaScript、Python和C/C++实现的解决方案。

Java 实现:




class Solution {
    public int[][] generateMatrix(int n) {
        int[][] matrix = new int[n][n];
        int start = 0;
        int count = 1;
        int loop = n / 2;
 
        while (loop-- > 0) {
            int endX = n - 1 - start;
            int endY = n - 1 - start;
 
            // 上行
            for (int i = start; i <= endX; i++) {
                matrix[start][i] = count++;
            }
 
            // 右列
            for (int i = start; i <= endY; i++) {
                matrix[i][endX] = count++;
            }
 
            // 下行
            for (int i = endX; i >= start && endY != start; i--) {
                matrix[endY][i] = count++;
            }
 
            // 左列
            for (int i = endY; i >= start && endX != start; i--) {
                matrix[i][start] = count++;
            }
 
            start++;
        }
 
        if (n % 2 == 1) {
            matrix[start][start] = count;
        }
 
        return matrix;
    }
}

JavaScript 实现:




function generateMatrix(n) {
    let matrix = new Array(n).fill(0).map(() => new Array(n).fill(0));
    let start = 0;
    let count = 1;
    let loop = n / 2 | 0;
 
    while (loop--) {
        let endX = n - 1 - start;
        let endY = n - 1 - start;
 
        // 上行
        for (let i = start; i <= endX; i++) {
            matrix[start][i] = count++;
        }
 
        // 右列
        for (let i = start; i <= endY; i++) {
            matrix[i][endX] = count++;
        }
 
        // 下行
        for (let i = endX; i >= start && endY != start; i--) {
            matrix[endY][i] = count++;
        }
 
        // 左列
        for (let i = endY; i >= start && endX != start; i--) {
            matrix[i][start] = count++;
        }
 
        start++;
    }
 
    if (n 

评论已关闭

推荐阅读

DDPG 模型解析,附Pytorch完整代码
2024年11月24日
DQN 模型解析,附Pytorch完整代码
2024年11月24日
AIGC实战——Transformer模型
2024年12月01日
Socket TCP 和 UDP 编程基础(Python)
2024年11月30日
python , tcp , udp
如何使用 ChatGPT 进行学术润色?你需要这些指令
2024年12月01日
AI
最新 Python 调用 OpenAi 详细教程实现问答、图像合成、图像理解、语音合成、语音识别(详细教程)
2024年11月24日
ChatGPT 和 DALL·E 2 配合生成故事绘本
2024年12月01日
omegaconf,一个超强的 Python 库!
2024年11月24日
【视觉AIGC识别】误差特征、人脸伪造检测、其他类型假图检测
2024年12月01日
[超级详细]如何在深度学习训练模型过程中使用 GPU 加速
2024年11月29日
Python 物理引擎pymunk最完整教程
2024年11月27日
MediaPipe 人体姿态与手指关键点检测教程
2024年11月27日
深入了解 Taipy:Python 打造 Web 应用的全面教程
2024年11月26日
基于Transformer的时间序列预测模型
2024年11月25日
Python在金融大数据分析中的AI应用(股价分析、量化交易)实战
2024年11月25日
AIGC Gradio系列学习教程之Components
2024年12月01日
Python3 `asyncio` — 异步 I/O,事件循环和并发工具
2024年11月30日
llama-factory SFT系列教程:大模型在自定义数据集 LoRA 训练与部署
2024年12月01日
Python 多线程和多进程用法
2024年11月24日
Python socket详解,全网最全教程
2024年11月27日