54. Spiral Matrix
来源:互联网 发布:php电子商务网站源码 编辑:程序博客网 时间:2024/05/18 08:21
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
比较简单,旋转着往里面填数就行,不过这里的方法略繁琐
public class Solution { public List<Integer> spiralOrder(int[][] matrix) { int forward = 0; int i =0,j=0; List<Integer> ret =new ArrayList<>(); int targetI = 0, targetJ = 0; if(matrix.length==0)return ret; int m = matrix.length, n = matrix[0].length; if(m*n==0)return ret; if(m*n==1){ ret.add(matrix[0][0]); return ret; } if(m<=n){ targetI=m/2; if(m%2==1){ targetJ=n-1-targetI; }else{ targetJ=m-1-targetI; } }else{ targetJ=(n-1)/2; if(n%2==1){ targetI=m-n+targetJ; }else{ targetI=targetJ+1; } } // outer: while(true){ switch(forward){ case 0: if(j==n-1-i){ ret.add(matrix[i][j]); forward++; i++; }else{ ret.add(matrix[i][j]); j++; }break; case 1: if(i==m-n+j){ ret.add(matrix[i][j]); forward++; j--; }else{ ret.add(matrix[i][j]); i++; }break; case 2: if(j==m-1-i){ ret.add(matrix[i][j]); forward++; i--; }else{ ret.add(matrix[i][j]); j--; }break; case 3: if(i==j+1){ ret.add(matrix[i][j]); forward++; j++; }else{ ret.add(matrix[i][j]); i--; }break; } forward%=4; if(i==targetI&&j==targetJ)break; } ret.add(matrix[i][j]); return ret; }}
0 0
- 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
- leetcode 54. Spiral Matrix
- QT信号与槽的自动连接
- 开源的5个主要趋势
- lpa社区发现
- 商业智能系统在税务行业的应用
- HTML5/JavaScript UI控件Wijmo Enterprise正式发布2016 v1|附下载
- 54. Spiral Matrix
- Retrofit的使用封装
- [Coci2015]Stanovi解题报告
- Spark MLlib 1.6 -- 特征抽取和变换
- HDU 1002 A+B problemII
- mysql的yearweek 和 weekofyear函数
- 设置服务器开机启动不要填写密码 control userpasswords2
- C++中如何修改const变量(非常重要)
- 304. Range Sum Query 2D - Immutable