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

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

题目描述:

给你一个正整数 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().*/
# 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^2while(up<=down && left<=right){  //up<=down && left<=right 或 num<=n*nfor(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;
}

http://www.lryc.cn/news/259446.html

相关文章:

  • SQL Server 服务启动报错:错误1069:由于登录失败而无法启动服务
  • “ABCD“[(int)qrand() % 4]作用
  • Vue2面试题:说一下组件通信有哪些方式?
  • C# 两个日期比较大小
  • 路由基本原理
  • 配置本地端口镜像示例
  • 使用FluentAvalonia组件库快速完成Avalonia前端开发
  • JAVA实体类集合该如何去重?
  • 修改Element UI可清空Input的样式
  • Java常用注解
  • golang实现同步阻塞、同步非阻塞、异步非阻塞IO模型
  • java SSM教师工作量管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计
  • 大数据技术之Hive(超级详细)
  • NVMe over Fabrics with SPDK with iRDMA总结 - 1
  • 【PTA刷题】求链式线性表的倒数第K项(代码+详解)
  • VSCode 创建工作区,多文件夹终端切换
  • 高阶函数(js的问题)
  • android-android源码目录
  • Json格式化
  • 数据可视化设计:让数据故事更有说服力
  • java面试题-Spring事务以及@Transactional注解详解
  • ARM流水灯
  • docker-compose单机容器编排
  • matlab信号分选系统算法-完整算法结构
  • 十八)Stable Diffusion使用教程:艺术二维码案例
  • 【LeetCode每日一题】53. 最大子数组和
  • 机器学习笔记 什么是协方差矩阵?
  • 使用Python监控服务器在线状态
  • 【JAVA】黑马MybatisPlus 学习笔记【二】【核心功能】
  • 区块链实验室(30) - 区块链期刊:Distributed Ledger Technologies: Research and Practice