目录

  • 问题
  • 示例
  • 分析

问题

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3678 访问。

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

输入: 3

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


Given a positive integer n, generate a square matrix filled with elements from 1 to n2n^2n2 in spiral order.

Input: 3

Output: [
[ 1, 2, 3 ],
[ 8, 9, 4 ],
[ 7, 6, 5 ]
]

示例

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3678 访问。

public class Program {public static void Main(string[] args) {var n = 3;var res = GenerateMatrix(n);ShowArray(res);Console.ReadKey();}private static void ShowArray(int[,] matrix) {for(var i = 0; i < matrix.GetLength(0); i++) {for(var j = 0; j < matrix.GetLength(1); j++) {Console.Write($"{matrix[i, j]} ");}Console.WriteLine();}}public static int[,] GenerateMatrix(int n) {var list = new List<int>();var max = (int)Math.Ceiling(n / 2d);var matrix = new int[n, n];var count = 0;Spiral(matrix, 0, n, n, max, ref count);return matrix;}private static void Spiral(int[,] matrix,int level,int m,int n,int max,ref int count) {if(level >= max) return;//顶端for(var j = level; j < n - level; j++) {matrix[level, j] = ++count;}//右端for(var i = level + 1; i < m - level - 1; i++) {matrix[i, n - level - 1] = ++count;}//底端if(level != m - level - 1) {for(var j = n - level - 1; j >= level; j--) {matrix[m - level - 1, j] = ++count;}}//左端if(level != n - level - 1) {for(var i = m - level - 2; i >= level + 1; i--) {matrix[i, level] = ++count;}}Spiral(matrix, ++level, m, n, max, ref count);}}

以上给出1种算法实现,以下是这个案例的输出结果:

该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3678 访问。

1 2 3
8 9 4
7 6 5

分析

显而易见, 以上算法的时间复杂度为:O(n2)O(n^2)O(n2) 。

C#LeetCode刷题之#59-螺旋矩阵 II(Spiral Matrix II)相关推荐

  1. C#LeetCode刷题之#54-螺旋矩阵(Spiral Matrix)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3672 访问. 给定一个包含 m x n 个元素的矩阵(m 行, ...

  2. C#LeetCode刷题之#867-转置矩阵(Transpose Matrix)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3756 访问. 给定一个矩阵 A, 返回 A 的转置矩阵. 矩阵的 ...

  3. ​LeetCode刷题实战81:搜索旋转排序数组 II

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  4. C#LeetCode刷题之#566-重塑矩阵( Reshape the Matrix)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3720 访问. 在MATLAB中,有一个非常有用的函数 resha ...

  5. LeetCode刷题(40)--Search a 2D Matrix

    已经排好序的矩阵,搜索一个元素,二分法 class Solution(object):def searchMatrix(self, matrix, target):""" ...

  6. LeetCode刷题day43|1049. 最后一块石头的重量 II、 494. 目标和、474.一和零

    文章目录 一.1049. 最后一块石头的重量 II 二.494. 目标和 三.474.一和零 一.1049. 最后一块石头的重量 II 这道题其实就与"分割子集"一样,就是先将总和 ...

  7. C#LeetCode刷题-数组

    数组篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 43.1% 简单 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组 ...

  8. ​LeetCode刷题实战584:寻找用户推荐人

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  9. ​LeetCode刷题实战577:员工奖金

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

最新文章

  1. Linux 安装iostat命令
  2. android开发读书笔记,android开发权威指南读书笔记
  3. Yii2.0 limit(1)与one()
  4. ABAP利用OLE2_OBJECT实现将数据输出到Excel单元格
  5. 【数据结构】栈-顺序栈、链式栈、共享栈
  6. GNN上用到的Tasks,Dataset and Benchmark
  7. 美团酒旅数据治理实践
  8. Maximo 7.5 集成方式 去掉主菜单
  9. 字符串中第一次重复出现的数及第一次不重复出现的数
  10. Python寻找第N个默尼森数
  11. 【android】uiselectoer 自动化测试
  12. python立体匹配评价_综述翻译:机器学习与立体匹配(一)
  13. R 大数值型数据转换
  14. android u盘检测工具,android 检测是否插入U盘方法之一
  15. 计算机二进制发明者,谁是二进制的发明者
  16. 大恒相机连续采集并保存图片
  17. oracle weituxinxi,Oracle 语句记录
  18. JS——数组中去除空空字符串
  19. 求助大神 VMware 卸载
  20. Linux安装数据库

热门文章

  1. 【今日CV 计算机视觉论文速览 第123期】Mon, 3 Jun 2019
  2. SpringBoot—自定义线程池及并发定时任务模板
  3. 三国树状信息展示 winform
  4. dj鲜生-07-静态文件的成功加载-用户注册的页面
  5. django-模型类的设计和表的生成
  6. Java使用递归实现全排列的代码
  7. EF连接ORACLE
  8. Android UI库书签
  9. ajax该什么时候用
  10. tar包bz2和gz的对比