Spiral Matrix
来源:互联网 发布:一级建造师 网络教育 编辑:程序博客网 时间:2024/06/07 02:50
题目详情:https://leetcode.com/problems/spiral-matrix-ii/description/
这道题以前遇到过,记得好想是用双循环做的,但是现在忘记了,又做了一遍。一开始的思路是把矩阵当作方方正正的矩阵了,没有考虑到矩阵可能是”扁”的,导致结果出错。然后想到一行,一列的访问,但是此时还有个问题是有个问题可能访问了不止一遍。所以在访问完每行每列之后,判断是否访问完成。
# -*- coding:utf-8 -*-class Solution(object): def spiralOrder(self, matrix): """ :type matrix: List[List[int]] :rtype: List[int] """ ans=[] i=0 m=len(matrix)#得到矩阵的行数 if m==0:#如果没有行元素,即没有元素 return []#那么直接返回 n=len(matrix[0])#得到矩阵的列数。m*n row,column=0,0 while len(ans)<m*n: while column<=n-1-i:#访问最上边未访问过的行,并且一直访问到最后一个元素为止 ans.append(matrix[row][column]) column=column+1 if len(ans)==m*n:#如果访问了这一行之后正好将矩阵中的元素全部访问完 break#那么直接返回 row,column=row+1,column-1#如果没有访问完,那么为访问最右边未访问的列做准备 while row<=m-1-i:#访问最右边未访问过的列并且一直访问到右列的最后一个元素 ans.append(matrix[row][column]) row=row+1 if len(ans)==m*n: break row,column=row-1,column-1#为访问元素做准备 while column>=i:#访问最下边未访问过的行并一直访问最后一个元素 ans.append(matrix[row][column]) column=column-1 if len(ans)==m*n: break row,column=row-1,column+1#为访问元素做准备 while row>i:#访问最左边未访问过的列 ans.append(matrix[row][column]) row=row-1 if len(ans)==m*n: break row,column=row+1,column+1#为访问下一个元素做准备 i=i+1 return ans
阅读全文
0 0
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Spiral Matrix
- Codeforces186C
- 闲来蛋疼写个qq侧滑删除
- Android中使用putExtra()传递对象实例
- bzoj 1003 [ZJOI2006]物流运输(最短路spfa+dp)
- 排序算法--冒泡排序
- Spiral Matrix
- 170903 WarGames-Behemoth(0)
- 内存优化总结:ptmalloc、tcmalloc和jemalloc
- 解决float属性导致换行
- 等错误率EER
- Firefox 2015 最受国人欢迎的十大扩展
- MD5加密
- 今天做了一个小游戏 猜拳游戏 大家可以看看玩玩
- SELECT 失败,因为下列 SET 选项的设置不正确: 'ARITHABORT'。请确保 SET 选项正确无误