54. Spiral Matrix 【M】【82】
来源:互联网 发布:水利计价软件 编辑:程序博客网 时间:2024/05/17 06:08
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]
.
Subscribe to see which companies asked this question
其实本质上就是个状态机,按照四个方向转换状态,然后进行处理
class Solution(object): def spiralOrder(self, matrix): m = matrix if not m: return [] row = len(m) col = len(m[0]) res = [] if row == 1: return m[0] if col == 1: for i in m: res += i[0], return res d = 'r' v = [] count = 0 for i in xrange(len(m)): v += [0] * len(m[0]), count += len(m[0]) for j in xrange(len(m[0])): v[i][j] = 0 res = [] i,j = 0,0 while count > 0: #print res if d =='r': k = j while k < col: if v[i][k] == 1: j = k - 1 break res += m[i][k], v[i][k] = 1 count -= 1 k += 1 if j != k-1: j = col - 1 i += 1 d = 'd' #print res,v,d,count elif d == 'd': k = i while k < row: if v[k][j] == 1: i = k - 1 break res += m[k][j], v[k][j] = 1 count -= 1 k += 1 # print res,k,d if i != k-1: i = row - 1 j -= 1 d = 'l' elif d == 'l': #print 'd callled' k = j while k >= 0: if v[i][k] == 1: # print res j = k + 1 break res += m[i][k], v[i][k] = 1 count -= 1 k -= 1 if j != k+1: j = 0 i -= 1 d = 'u' elif d == 'u': k = i while k >= 0: if v[k][j] == 1: i = k + 1 break res += m[k][j], v[k][j] = 1 count -= 1 k -= 1 if i != k+1: i = 1 j += 1 d = 'r' return res """ :type matrix: List[List[int]] :rtype: List[int] """
0 0
- 54. Spiral Matrix 【M】【82】
- 54. Spiral Matrix && 59. Spiral Matrix II
- 59. Spiral Matrix II && 54. Spiral Matrix
- LeetCode 54. Spiral Matrix
- [LeetCode]54.Spiral Matrix
- LeetCode --- 54. Spiral Matrix
- [Leetcode] 54. Spiral Matrix
- [leetcode] 54.Spiral Matrix
- 54. Spiral Matrix
- Leetcode-54.Spiral Matrix
- **LeetCode 54. Spiral Matrix
- Leetcode 54. Spiral Matrix
- [leetcode] 54. Spiral Matrix
- 54. Spiral Matrix
- leetcode 54. Spiral Matrix
- 54. Spiral Matrix LeetCode
- 54. Spiral Matrix
- 54. Spiral Matrix
- 前缀和or线段树____计数少女(2016swust信息院赛)
- JSTL标签
- Permissions and permission groups.
- Android中常用颜色的收藏
- spark 优化
- 54. Spiral Matrix 【M】【82】
- 在iOS中使用第三方类库
- [c语言编程]排序法汇总-入门级别(2)
- 解决webview内存泄漏问题
- Android Fragment
- 认识bash 这个Shell
- (工具)常用svn命令,自己做笔记用
- JavaScript强化教程-排序
- 数据与数据库的区别/大数据需不需要备份和灾难恢复