C#LeetCode刷题之#54-螺旋矩阵(Spiral Matrix)
问题
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3672 访问。
给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素。
输入:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]输出: [1,2,3,6,9,8,7,4,5]
输入:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]输出: [1,2,3,4,8,12,11,10,9,5,6,7]
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.
Input:
[
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
]Output: [1,2,3,6,9,8,7,4,5]
Input:
[
[1, 2, 3, 4],
[5, 6, 7, 8],
[9,10,11,12]
]Output: [1,2,3,4,8,12,11,10,9,5,6,7]
示例
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3672 访问。
public class Program {public static void Main(string[] args) {var matrix = new int[,] {{ 1, 2, 3, 4, 5 },{ 6, 7, 8 ,9, 10 },{ 11, 12, 13, 14, 15 },{ 16, 17, 18, 19, 20 },{ 21, 22, 23, 24, 25 }};var res = SpiralOrder(matrix);ShowArray(res);Console.ReadKey();}private static void ShowArray(IList<int> list) {foreach(var num in list) {Console.Write($"{num} ");}Console.WriteLine();}public static IList<int> SpiralOrder(int[,] matrix) {var list = new List<int>();var m = matrix.GetLength(0);var n = matrix.GetLength(1);var max = (int)Math.Ceiling(Math.Min(m, n) / 2d);Spiral(matrix, 0, m, n, max, ref list);return list;}private static void Spiral(int[,] matrix,int level,int m,int n,int max,ref List<int> list) {if(level >= max) return;//顶端for(var j = level; j < n - level; j++) {list.Add(matrix[level, j]);}//右端for(var i = level + 1; i < m - level - 1; i++) {list.Add(matrix[i, n - level - 1]);}//底端if(level != m - level - 1) {for(var j = n - level - 1; j >= level; j--) {list.Add(matrix[m - level - 1, j]);}}//左端if(level != n - level - 1) {for(var i = m - level - 2; i >= level + 1; i--) {list.Add(matrix[i, level]);}}Spiral(matrix, ++level, m, n, max, ref list);}}
以上给出1种算法实现,以下是这个案例的输出结果:
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3672 访问。
1 2 3 4 5 10 15 20 25 24 23 22 21 16 11 6 7 8 9 14 19 18 17 12 13
分析:
显而易见, 以上算法的时间复杂度为: 。
C#LeetCode刷题之#54-螺旋矩阵(Spiral Matrix)相关推荐
- C#LeetCode刷题之#59-螺旋矩阵 II(Spiral Matrix II)
目录 问题 示例 分析 问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3678 访问. 给定一个正整数 n,生成一 ...
- LeetCode 螺旋矩阵(Spiral Matrix)
思路:做四个方向的遍历右,下,左,上.重复循环这四个方向即得到螺旋矩阵. 注意问题: 1.边界 2.判断当前位置是否已经遍历(mark标志位) 3.vector为空或者只有一个元素 4.循环退出条件 ...
- C#LeetCode刷题之#867-转置矩阵(Transpose Matrix)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3756 访问. 给定一个矩阵 A, 返回 A 的转置矩阵. 矩阵的 ...
- C#LeetCode刷题之#566-重塑矩阵( Reshape the Matrix)
问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3720 访问. 在MATLAB中,有一个非常有用的函数 resha ...
- C#LeetCode刷题-数组
数组篇 # 题名 刷题 通过率 难度 1 两数之和 C#LeetCode刷题之#1-两数之和(Two Sum) 43.1% 简单 4 两个排序数组的中位数 C#LeetCode刷题之#4-两个排序数组 ...
- LeetCode刷题实战584:寻找用户推荐人
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- LeetCode刷题实战577:员工奖金
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- LeetCode刷题实战81:搜索旋转排序数组 II
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
- LeetCode刷题实战568:最大休假天数
算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...
最新文章
- 【Qt】Qt程序查看动态链接库(windows)
- leetcode 151. 翻转字符串里的单词 c代码 三种方案
- html 一行显示边框线,HTML 网页中要显示出来一个虚线的边框 就是一行字在边框里面,那个边框是显示出来的,程式码应该怎么写?...
- 【Flask】项目中使用请求钩子的妙处有那些?
- springmvc在启动工程的时候就访问数据库,加载一些共同的数据
- 35岁程序员惨遭裁员,找了6份兼职,晒出收入网友:“打工皇帝”
- 蓝桥杯 ALGO-46 算法训练 Hanoi问题
- Maven中的pom.properties文件
- 百练(十三~十六)题解
- windows下安装TensorFlow(Win8 + Anaconda4.4 python3.6)
- XILINX FPGA数字信号处理——11、通信信号处理原理及实现
- python编写代码自动运行程序_利用Python编写自动打开指定软件的程序
- python处理excel数据计算_Python处理Excel数据
- WEB服务器有哪几种
- 你还在用乞丐版的深拷贝么
- 服务器两个内存为何只显示4g_win10系统插入2个4G内存条却只显示4G的解决方法
- vscode输出不滚动_解决 使用VSCode环境进行开发,突然出现卡顿、打字显示缓慢,滚动、选择迟缓等问题...
- 爬虫(04)cookie+session+正则+字典快速生成2020-12-18
- java获取长度_获取java长度
- JavaSE2(Java基础)