leetcode day22 59

news/2025/2/27 2:07:30

59 螺旋矩阵

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

示例 1:

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

示例 2:

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

写在前面:malloc分配二维数组m*n内存的方法

int **a=(int**)malloc(sizeof(int*)*m);

for(int i=0;i<m;i++){

   a[i]=(int*)malloc(sizeof(int)*n);

}

*returnSize返回数组列数

*returnColumnSizes=(int *)malloc(sizeof(int)*m);//返回行数也要分配内存

  (*returnColumnSizes)[i]=n;//第i行的列数为n

解题思路:采用左闭右开的思想。每次最后面的一个不处理。

设置循环初始位置,x=0,y=0

确定循环圈数 loop=n/2,最后圈数是奇数中间位置要填充一个

设置一个偏移量offset,每次循环x++,y++,loop--,offset++

模拟题意即可。

int** generateMatrix(int n, int* returnSize, int** returnColumnSizes) {
    *returnSize=n;//返回数组列数
    *returnColumnSizes=(int *)malloc(sizeof(int)*n);//返回行数
    //二维数组分配内存空间
    int **num=(int **)malloc(sizeof(int *)*n);
    int i,j;
    for(i=0;i<n;i++){
        num[i]=(int *)malloc(sizeof(int)*n);//分配列
        (*returnColumnSizes)[i]=n;//第i行的列数为n
    }
    int x=0,y=0;//起始位置
    int offset=1,cnt=1;
    int loop=n/2;//循环圈数
    for(loop=n/2;loop>0;loop--){
        for(j=y;j<n-offset;j++){
           num[x][j]=cnt++;
        }
        for(i=x;i<n-offset;i++){
            num[i][j]=cnt++;
        }
        for(j=n-offset;j>y;j--){
            num[i][j]=cnt++;
        }
        for(i=n-offset;i>x;i--){
            num[i][j]=cnt++;
        }
        x++;
        y++;
        offset++;
    }
    if(n%2!=0)num[x][y]=cnt;//奇数,填充中间的
    return num;
}


http://www.niftyadmin.cn/n/5869375.html

相关文章

AutoMQ 可观测性实践:如何使用 OpenTelemetry 监控 Kafka 和底层流存储

前言 我们在之前的文章里介绍了 AutoMQ 如何与 Prometheus、观测云[1]、夜莺监控[2]等后端进行集成并实现对 AutoMQ 的监控&#xff0c;本文将进一步介绍 AutoMQ 的可观测性架构&#xff0c;以及 AutoMQ 如何实现多云可观测性。 可观测架构 Apache Kafka 的 Server 侧主要依…

基于Springboot的小说网站【附源码】

基于Springboot的小说网站 效果如下&#xff1a; 系统主页面 书库信息页面 书籍详情页面 推荐信息页面 小说推荐页面 书库信息页面 小说排行榜页面 系统管理页面 研究背景 随着互联网技术的快速发展&#xff0c;网络文学逐渐成为一种新兴的文学形式&#xff0c;吸引了大量读…

实体机器人在gazebo中的映射

这一部分目的是将真实的机器人映射到gazebo中&#xff0c;使得gazebo中的其他虚拟机器人能识别到真实世界的wheeltec机器人。 真实机器人的型号的wheeltec旗下的mini_mec。 一、在wheeltec官方百度云文档中找到URDF原始导出功能包.zip 找到对应的包 拷贝到工作空间下 在原有…

【C++】深入理解List:双向链表的应用

凭时间赢来的东西&#xff0c;时间肯定会为之作证。 前言 这是我自己学习C的第七篇博客总结。后期我会继续把C学习笔记开源至博客上。 上一期笔记是关于C的vector类知识&#xff0c;没看的同学可以过去看看&#xff1a;【C】探索Vector&#xff1a;灵活的数据存储解决方案-CS…

图扑农牧林数据分析可视化平台:智慧农业的“数字大脑”

在现代农业的发展中&#xff0c;数据的价值不言而喻。图扑推出的农牧林数据分析可视化平台&#xff0c;正是为农业数字化转型而生。 图扑平台基于自研的HT for Web GIS技术&#xff0c;结合遥感和卫星观测&#xff0c;构建了一个完整的农牧林数据可视化生态系统。平台不仅支持地…

elfk+zookeeper+kafka​数据流

申请7台部署elfkzookeeperkafka 数据流&#xff1a; filebeat(每台app) ------>【logstash(2) kafka(3)】 -------> logstash(1) -------> 【elasticsearch(3) kibana(1)】

Redis 中有序集合(Sorted Set)的使用方法

文章目录 前言1. 有序集合的特点2. 常用命令2.1 添加元素&#xff08;ZADD&#xff09;2.2 获取元素分数&#xff08;ZSCORE&#xff09;2.3 获取元素排名&#xff08;ZRANK / ZREVRANK&#xff09;2.4 获取范围内的元素&#xff08;ZRANGE / ZREVRANGE&#xff09;2.5 获取分数…

八、Spring Boot:RESTful API 应用

创建第一个 Spring Boot RESTful API 应用 在现代 Web 开发中&#xff0c;RESTful API 是一种非常流行的设计风格&#xff0c;它基于 HTTP 协议&#xff0c;提供了简单、灵活的方式来构建网络应用。Spring Boot 作为一款强大的微服务框架&#xff0c;提供了丰富的工具和支持&a…