LeetCode:Spiral Matrix I II

Spiral Matrix

Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral order.

For example,
Given the following matrix:

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

You should return [1,2,3,6,9,8,7,4,5].

 

打印螺旋矩阵

逐个环的打印, 对于m *n的矩阵,环的个数是 (min(n,m)+1) / 2。对于每个环顺时针打印四条边。

注意的是:最后一个环可能只包含一行或者一列数据

class Solution {
public:vector<int> spiralOrder(vector<vector<int> > &matrix) {int m = matrix.size(), n;if(m != 0)n = matrix[0].size();int cycle = m > n ? (n+1)/2 : (m+1)/2;//环的数目vector<int>res;int a = n, b = m;//a,b分别为当前环的宽度、高度for(int i = 0; i < cycle; i++, a -= 2, b -= 2){//每个环的左上角起点是matrix[i][i],下面顺时针依次打印环的四条边for(int column = i; column < i+a; column++)res.push_back(matrix[i][column]);for(int row = i+1; row < i+b; row++)res.push_back(matrix[row][i+a-1]);if(a == 1 || b == 1)break; //最后一个环只有一行或者一列for(int column = i+a-2; column >= i; column--)res.push_back(matrix[i+b-1][column]);for(int row = i+b-2; row > i; row--)res.push_back(matrix[row][i]);}return res;}
};

 


Spiral Matrix II

Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order.

For example,
Given n = 3,

You should return the following matrix:

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

本质上和上一题是一样的,这里我们要用数字螺旋的去填充矩阵。同理,我们也是逐个环的填充,每个环顺时针逐条边填充                 本文地址

class Solution {
public:vector<vector<int> > generateMatrix(int n) {vector<vector<int> > matrix(n, vector<int>(n));int a = n;//a为当前环的边长int val = 1;for(int i = 0; i < n/2; i++, a -= 2){//每个环的左上角起点是matrix[i][i],下面顺时针依次填充环的四条边for(int column = i; column < i+a; column++)matrix[i][column] = val++;for(int row = i+1; row < i+a; row++)matrix[row][i+a-1] = val++;for(int column = i+a-2; column >= i; column--)matrix[i+a-1][column] = val++;for(int row = i+a-2; row > i; row--)matrix[row][i] = val++;}if(n % 2)matrix[n/2][n/2] = val;//n是奇数时,最后一个环只有一个数字return matrix;}
};

 

【版权声明】转载请注明出处:http://www.cnblogs.com/TenosDoIt/p/3774747.html

转载于:https://www.cnblogs.com/TenosDoIt/p/3774747.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TCP为什么需要三次握手和四次挥手

网上已经有很多解释了&#xff0c;就不瞎说了&#xff0c;Mark一些链接作为自己的学习笔记吧。 学习参考链接1 学习参考链接2 学习参考链接3 学习参考链接4 为什么要3次握手 防止已过期的连接请求报文突然又传送到服务器&#xff0c;因而产生错误。 Client发生一个请求连…

不属于个人计算机范围的是,计算机应用基础模拟试卷2

一、1.单项选择题单项选择题每小题1分。在每小题列出的四个备选项中只有一个是符合题目要求的&#xff0c;请将其选出并将“答题卡”的相应代码涂黑。未涂、错涂或多涂均无分。0. 个人计算机属于A&#xff0e;小巨型机B&#xff0e;小型计算机C&#xff0e;微型计算机D&#xf…

Python实验:关灯游戏

文章目录 前言一、设计表二、关键代码三、运行结果小地图&#xff0c;容易难度&#xff1a;中地图&#xff0c;中等难度&#xff1a;大地图&#xff0c;困难难度&#xff1a; 四、完整代码链接总结 前言 这是一个Python实验作业&#xff0c;内容如下&#xff1a; 题目要求&am…

解决Ubuntu14.04在外接显示器不能指定问题的最佳分辨率

通常这种情况发生。在System Settings -> display 你会发现多出了一个 unknown display。这往往是因为你使用质量低劣的视频电缆&#xff0c;例如&#xff0c;几美元VGA线。解决方案有&#xff12;&#xff0c;质量好的一个改变钢带&#xff08;有磁场干扰&#xff09;VGA线…

基础练习 - 数值交换

题目 1 声明两个变量&#xff1a;int n1 10,n2 20,要求将两个变量叫唤&#xff0c;最后输出n1为20,n2为10. (扩展*: 不使用第三个变量如何交换) 解决方案 基本方法 private static void BasicMethod(){int n1 10;int n2 20;Console.WriteLine("n1…

python计算圆的面积

用Python创建一个脚本&#xff0c;要求&#xff1a; 能计算半径为2的圆的面积保留10位小数可以直接执行 #!/usr/bin/env python3 import math print("Area is:{:.10f}".format(math.pi*4))计算圆的面积要用到pi&#xff0c;所以我们引用模块math

Visual Studio 配色方案

字体&#xff1a;Fixedsys Excelsior 字体大小&#xff1a;12 配色方案&#xff1a;http://studiostyles.info 导入步骤&#xff1a; 工具->导入和导出设置->导入选定的环境设置->否&#xff0c;仅导入新设置->“浏览”->下载的vssetings文件->完成。 转载于…

昆明学院计算机专业在哪个校区,昆明学院有几个校区及校区地址

昆明学院有几个校区及校区地址2017-06-19 11:15:56文/韩竞仪最近有很多考生和家长咨询小编&#xff0c;昆明学院有几个校区&#xff0c;今年新生会被分配到哪个校区?哪个校区好?等相关问题&#xff0c;下面小编统一回复一下考生们的问题。昆明学院有3个校区&#xff0c;分别是…

python列表总结

列表方法append()&#xff1a;在列表末尾添加元素列表方法insert()&#xff1a;在列表任意位置插入元素&#xff0c;a.insert(0,1)&#xff0c;在列表的0号位置插入元素1.列表方法count(s)&#xff1a;返回s在列表中出现的次数列表方法remove(s)&#xff1a;移除列表中的第一个…

Swift基本语法

Swift基本语法 原文:Swift基本语法Swift基本语法 简介 1.什么是Swift Swift是苹果于2014年WWDC&#xff08;苹果开发者大会&#xff09;发布的全新编程语言 Swift在天朝译为“雨燕” 跟Objective-C一样&#xff0c;可以用于开发iOS、Mac应用程序 苹果从2010年7月开始设计Swift语…

2018华工计算机应用基础作业,计算机应用基础平时作业2019

计算机应用基础平时作业2019Tag内容描述&#xff1a;1、1.简述启动控制面板的常用方法。(至少列出三种) 答&#xff1a;常用打开控制面板的方法&#xff1a;1)点开始&#xff0c;选择控制面板打开&#xff1b;2)打开我的电脑&#xff0c;选择控制面板&#xff1b;3)点开始运行&…

计算机系统组织结构,第4章 操作系统计算机组织结构.ppt

第4章 操作系统计算机组织结构第4章 计算机组织结构 前言 操作系统提供了抽象以简化对硬件的使用&#xff0c;单线程是冯?诺依曼计算机的操作抽象&#xff0c;如果理解了一个冯?诺依曼计算机是如何执行程序的&#xff0c;就能理解进程背后的知识&#xff0c;对操作系统的深入…

Solution 19: Fibonacci数列

问题描述 求Fibonacci数列的第n项。Fibonacci数列为1,1,2,3,5,... 解决思路 (1) 递归&#xff0c;指数级时间复杂度&#xff1b; (2) 循环&#xff0c;O(n)时间复杂度&#xff1b; (3) 矩阵乘法&#xff0c;O(logn)时间复杂度&#xff1b; (4) 公式法&#xff0c;O(1)时间复杂度…

boost::unordered_map 和 std::map 的效率 与 内存比较

例子链接&#xff1a;http://blog.csdn.net/gamecreating/article/details/7698719 结论: unordered_map 查找效率快五倍&#xff0c;插入更快&#xff0c;节省一定内存。如果没有必要排序的话&#xff0c;尽量使用 hash_map(unordered_map 就是 boost 里面的 hash_map 实现)。…

软件可靠性指标mtbf测试评估,软件可靠性评估.pdf

软件可靠性评估软件可靠性工程基础——软件可靠性评估北京航空航天大学可靠性与系统工程学院目的 理解什么是软件可靠性评估&#xff0c;基本原理 掌握和应用典型的软件可靠性模型 了解比较软件可靠性模型的主要方法 理解稳定使用阶段的软件可靠性评估 理解增长测试中…

模型和控制器-起步阶段

MVVM简介 针对客户端应用开发AngularJS吸收了传统的MVC基本原则。MVC(Model-View-Controll)设计模式针对不同的人可能意味不同的东西 ,AngularJS并不执行传统意义上的MVC&#xff0c;更接近于MVVM。 MVVM模式是Model-View-ViewMode模式的简称。由视图(View)、视图模型(ViewMode…

Apache开启Gzip压缩

1. 编辑Apache的httpd.conf文件 vim /etc/httpd/conf/httpd.conf 2. 开启mod_deflate.so模块 LoadModule deflate_module modules/mod_deflate.so 3. 对该模块进行配置 # ShiftG到最下一行添加如下内容<IfModule mod_deflate.c> # 压缩等级 9 DeflateCompressionLevel 9 …

计算机的网络与结构,计算机结构与组成29-网络.ppt

计算机结构与组成29-网络CS61C L221 Performance ? UC Regents I/O Review I/O gives computers their 5 senses I/O speed range is 12.5-million to one Differences in processor and I/O speed ? synchronize with I/O devices before use Polling works, but expensive …

Canvas动画 位图缓存提高效率和对应的内存问题

对一个矢量图动画&#xff0c;开启位图缓存能大大提高运行效率。所谓开启位图缓存&#xff0c;其实要自己动手&#xff0c;先创建一个临时canvas&#xff0c;然后把矢量图绘制到这个canvas上&#xff0c;到了实际绘制时&#xff0c;直接把这个临时canvas拷贝到真正canvas上。而…

ASP.NET MVC 学习第一天

今天开始第一天学习asp.net mvc&#xff0c;写的不是很好&#xff0c;高手不要喷&#xff0c;希望大家能一起进步学习。 好了&#xff0c;开始学习 新建项目&#xff0c;选择mvc 4应用程序 接下来选择基本&#xff0c;视图引擎当然要选择Razor&#xff0c;如果在选择aspx那我们…