【leetcode】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].
解题思路:
这个题的关键在于指针的计算,一定要细心,我们用四个量分别表示行和列的起始位置和结束位置,每次进行四个循环,将得到的数字加入返回列表,同时修改相应的指针值,同时我们要注意到这样得到的列表是会有冗余的,我们只要截取最前面的就可以。
具体的修改过程:
1.从左到右,结束后因为对应的最开始一行已经遍历完成,所以标记行的开始的要自增
2.从上到下,结束后最后一列已经完成,故标记列的结束的要自减
3.从右到左,结束后最下一行已经完成,故标记行的结束的自减
4.从下到上,结束后第一列已经完成,故标记列的自增
这里也可以看出,会有重复的计算的,但是重复小于一圈,故可以直接采用截断的方式,当然在循环中加入判断亦可以达到这个目的。
class Solution:
# @param matrix, a list of lists of integers
# @return a list of integers
def spiralOrder(self, matrix):
if len(matrix) == 0:
return []
r, c = len(matrix), len(matrix[0])
if c == 0:
return []
roundr = 0
roundc = 0
res = []
while roundr < r and roundc < c:
for i in range(roundc, c):
res.append(matrix[roundr][i])
roundr += 1
for i in range(roundr, r):
res.append(matrix[i][c-1])
c -= 1
for i in range(c-1,roundc-1,-1):
res.append(matrix[r-1][i])
r -= 1
for i in range(r-1,roundr-1,-1):
res.append(matrix[i][roundc])
roundc += 1
return res
#return res[0:len(matrix)*len(matrix[0])];
s = Solution()
print s.spiralOrder([
[ 1, 2, 3 ],
[ 4, 5, 6 ],
[ 7, 8, 9 ]
])
print s.spiralOrder([[7],[9],[6]])
print s.spiralOrder([[7,9,6]])
【leetcode】Spiral Matrix的更多相关文章
- 【leetcode】Spiral Matrix II
Spiral Matrix II Given an integer n, generate a square matrix filled with elements from 1 to n2 in s ...
- 【leetcode】Spiral Matrix II (middle)
Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. For ...
- 【leetcode】 Spiral Matrix
Spiral Matrix Given a matrix of m x n elements (m rows, n columns), return all elements of the matri ...
- 【leetcode】Spiral Matrix(middle)
Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...
- 【LeetCode】Spiral Matrix(螺旋矩阵)
这是LeetCode里的第54道题. 题目要求: 给定一个包含 m x n 个元素的矩阵(m 行, n 列),请按照顺时针螺旋顺序,返回矩阵中的所有元素. 示例 1: 输入: [ [ 1, 2, 3 ...
- 【LeetCode】01 Matrix 解题报告
[LeetCode]01 Matrix 解题报告 标签(空格分隔): LeetCode 题目地址:https://leetcode.com/problems/01-matrix/#/descripti ...
- 【LeetCode】Set Matrix Zeroes 解题报告
今天看到CSDN博客的勋章换了图表,同一时候也添加显示了博客等级,看起来都听清新的,感觉不错! [题目] Given a m x n matrix, if an element is 0, set i ...
- 【数组】Spiral Matrix II
题目: Given an integer n, generate a square matrix filled with elements from 1 to n2 in spiral order. ...
- 【数组】Spiral Matrix
题目: Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spira ...
随机推荐
- 从基层容器类看万变不离其宗的JAVA继承体系
以容器类为例子,可以观一叶而知秋,看看以前的前辈们是如何处理各种面向对象思想下的继承体系的.读的源代码越多,就越要总结这个继承关系否则读的多也忘得快. 首先摆上一张图片: 看到这张图很多人就慌了,难道 ...
- Neural Style学习3——操作
Basic usage: th neural_style.lua -style_image <image.jpg> -content_image <image.jpg> Ope ...
- 面向对象(Object-Oriented)
面向对象 面向对象,即我们以对象为核心去实现我们的目的,对象顾名思义:万物皆对象,一个人,一条狗... 当我们通过对象处理一些事情时,会让我们的代码清晰明了,内部高聚合,对外低耦合,即封装的思想 相比 ...
- ubuntu16.04装MatConvNet
按matconvnet官网上的步骤来,编译代码的时候会发现编译失败. 参考这条issues 以下是我的解决方案: I use ubuntu16.04 with x64 architecture. I ...
- Map工具系列-01-Map代码生成工具说明
所有cs端工具集成了一个工具面板 -打开(IE) Map工具系列-01-Map代码生成工具说明 Map工具系列-02-数据迁移工具使用说明 Map工具系列-03-代码生成BySQl工具使用说明 Map ...
- Java 内存管理
java 内存管理机制 JAVA 内存管理总结 java 是如何管理内存的 Java 的内存管理就是对象的分配和释放问题.(两部分) 分配 :内存的分配是由程序完成的,程序员需要通过关键字 new 为 ...
- Windows7微软官方原版镜像系统文件
Windows7微软官方原版镜像系统 Windows 7 是由微软公司(Microsoft)开发的操作系统,核心版本号为Windows NT 6.1.Windows 7可供家庭及 商业工作环境.笔记本 ...
- Java Web学习笔记8
上下文参数(context-param) 由于init-param是配置在<servlet>标签里的,只能有这个Servlet来读取,因此它不是全局的参数,不能被其他的Servlet读取. ...
- cnblog中添加数学公式支持
在博客中使用数学公式,是一件相对麻烦的事儿,大量的截图和插入图片不仅耗费极大的精力,而且影响写作体验. 虽然对于公式显示已经有多种解决办法,但大多数需要安装插件.而MathML这一雄心勃勃的网页数学语 ...
- 在windowService用Process.Start()启动程序没有界面-记录
1.在服务程序安装时编程实现,ProjectInstaller.cs using System; using System.Collections; using System.Collection ...