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

leetcode 59. 螺旋矩阵 II 中等

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

示例 1:

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

示例 2:

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

提示:

  • 1 <= n <= 20

分析:模拟矩阵的生成即可。

/**
 * Return an array of arrays of size *returnSize.
 * The sizes of the arrays are returned as *returnColumnSizes array.
 * Note: Both returned array and *columnSizes array must be malloced, assume caller calls free().
 */
int** generateMatrix(int n, int* returnSize, int** returnColumnSizes) {
    int **ans=(int**)malloc(sizeof(int*)*(n*n));
    for(int i=0;i<n;++i)
        ans[i]=(int*)malloc(sizeof(int)*n);
    *returnSize=n;
    *returnColumnSizes=(int*)malloc(sizeof(int)*n);
    for(int i=0;i<n;++i)
        (*returnColumnSizes+i)[0]=n;
    int cnt=n*n,i=0,j=0,num=1,up,down,left,right;
    up=down=left=right=0;
    while(num<=cnt)
    {
        while(j<n-right)
            ans[i][j]=num,num++,j++;
        j--,right++,i++;
        while(i<n-up)
            ans[i][j]=num,num++,i++;
        i--,down++,j--;
        while(j>=0+left)
            ans[i][j]=num,num++,j--;
        j++,left++,i--;
        while(i>=0+down)
            ans[i][j]=num,num++,i--;
        i++,up++,j++;
    }
    return ans;
}


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

相关文章:

  • C# 中 Array、ArrayList 和 List 的比较
  • 【前端基础】3、HTML的常用元素(h、p、img、a、iframe、div、span)、不常用元素(strong、i、code、br)
  • 2025年3月2日笔记
  • DeepSeek 助力 Vue3 开发:打造丝滑的悬浮按钮(Floating Action Button)
  • CentOS 7 日志切割实战:Logrotate 详解与配置指南
  • Java 8 中,可以使用 Stream API 和 Comparator 对 List 按照元素对象的时间字段进行倒序排序
  • 解决vue中formdata 传值为空 控制台报错SyntaxError - expected expression, got ‘<‘
  • Java基础之集合
  • FPGA的ram Xilinx的IP Block Memory Generator
  • GPIO及其应用
  • 使用Kubernetes部署Spring Boot项目
  • iOS 使用消息转发机制实现多代理功能
  • Android Hilt 高级用法
  • 系统架构设计师—计算机基础篇—进度管理
  • 决策树 vs 神经网络:何时使用?
  • Linux-基本指令2
  • 2024蓝桥杯省赛真题-封闭图形个数
  • 青少年编程与数学 02-010 C++程序设计基础 14课题、控制结构
  • PhotoShop2022进行布尔运算--学习日志
  • 网络安全词汇