螺旋矩阵算法(leetcode第59题)

题目描述:

cpp 复制代码
给你一个正整数 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

算法:

思路:

设定四个边界,每次输出完一行 或者一列,就移动边界,直到边界相碰

代码实现:
cpp 复制代码
/**
 * 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().
 */
# include<stdio.h>
# include<stdlib.h>
int** generateMatrix(int n, int* returnSize, int** returnColumnSizes) {
    *returnSize=n;//行空间
    *returnColumnSizes=(int*)malloc(n*sizeof(int));//行空间
    for(int i=0;i<n;i++) (*returnColumnSizes)[i]=n;//列空间
    int **matrix=(int**)malloc(n*sizeof(int*));
    for(int i=0;i<n;i++){
        matrix[i]=(int*)malloc(sizeof(int)*n);
    }
    int num=1;
    //四个边界值
    int right=n-1,left=0,up=0,down=n-1;
    //条件:不超过边界 or num不超过n^2
    while(up<=down && left<=right){  //up<=down && left<=right 或 num<=n*n
        for(int i=left;i<=right;i++) matrix[up][i]=num++;
        up++;//上边界下移
        for(int i=up;i<=down;i++) matrix[i][right]=num++;
        right--;//右边界左移
        for(int i=right;i>=left;i--) matrix[down][i]=num++;
        down--;//下边界上移
        for(int i=down;i>=up;i--) matrix[i][left]=num++;
        left++;//左边界右移
    }
    return matrix;
}
相关推荐
机器学习之心5 分钟前
一区北方苍鹰算法优化+创新改进Transformer!NGO-Transformer-LSTM多变量回归预测
算法·lstm·transformer·北方苍鹰算法优化·多变量回归预测·ngo-transformer
yyt_cdeyyds15 分钟前
FIFO和LRU算法实现操作系统中主存管理
算法
alphaTao42 分钟前
LeetCode 每日一题 2024/11/18-2024/11/24
算法·leetcode
kitesxian1 小时前
Leetcode448. 找到所有数组中消失的数字(HOT100)+Leetcode139. 单词拆分(HOT100)
数据结构·算法·leetcode
VertexGeek2 小时前
Rust学习(八):异常处理和宏编程:
学习·算法·rust
石小石Orz2 小时前
Three.js + AI:AI 算法生成 3D 萤火虫飞舞效果~
javascript·人工智能·算法
jiao_mrswang2 小时前
leetcode-18-四数之和
算法·leetcode·职场和发展
qystca3 小时前
洛谷 B3637 最长上升子序列 C语言 记忆化搜索->‘正序‘dp
c语言·开发语言·算法
薯条不要番茄酱3 小时前
数据结构-8.Java. 七大排序算法(中篇)
java·开发语言·数据结构·后端·算法·排序算法·intellij-idea
今天吃饺子3 小时前
2024年SCI一区最新改进优化算法——四参数自适应生长优化器,MATLAB代码免费获取...
开发语言·算法·matlab